John Scheffel
07-21-2003, 01:14 PM
Last week there was a question sent to the SolidDesigner mailing list about this topic. There were several replies which may be of interest to others so I'm copying them here.
Original Question
I have a problem with SD: when I load a pkg and after others pkg, sometimes appear the message that a part has already loaded and it is automatically shared and these parts are sometimes moved in other positions. Do you know which is the cause of this problem?
Replies
It's not a problem at all (usually). What it means is that you had already a part before, and instead of loading it again, OSDM decided to instead re-use the existing part.
SolidDesigner handles the loading of identical parts in two ways, Load as Shared and Load as copy. Your system is set to Load as shared which really isn’t a problem (until you start modifying some of the parts but want others to stay the same).
You must realize that a package file zips together part files or contents and instance data. Each part is it's own file. So when you load two package files containing the same part or assembly you are loading the same contents data per part and assembly. In essence when OSDM is set to load as share, OSDM will share all similar contents data. If that data happens to be assembly contents data then your part position may move. Since the assembly holds location data per child part.
In summary when you are working with a set of parts and assembly and save out two package files from different points in time you are not creating two entirely separate entities. Package filing does not create new contents data on each save.
You could either set OSDM to load as copy or use versioning.
You will need to add a line to your PESD_Customize file. Below are the two that I have entered and that I will de-comment out depending on which I prefer to happen in my current task. (by de-commenting I mean removing the two semi-colons from in front of the text.)
You can just cut and paste these two lines into your user pesd_customize file then remove the two semi colons from in front of the mode you would like to be in. You may only have one of these lines active or “de-commented” at a time.
;; (LOAD-CLUSTER-LOAD-MODE :LOAD-DUP-AS-NEW)
;; (LOAD-CLUSTER-LOAD-MODE :LOAD-SHARED)
You can also enter these commands on the SolidDesigner command line to change the load mode on the fly during a session.
You might want to contact CoCreate to get some info on SysIDs and Filing. Once you under stand how SysIDs work it becomes more clear why parts and assemblies must either be shared or copied if their SysID matches existing items in the model.
This is one of the most powerful and confusing areas of SD for me. As best I can figure out, parts and assemblies are identified by a system ID that is completely unrelated to the file name you save to. If you have a 1 inch bolt and you save it to a file, then extend the bolt another 1/2 inch and save it to a different file, SD thinks these are the same part, because they have the same system ID. If you have one loaded, then you load the next, SD will will share these and load the second as length of the first.
This has to do with the difference between sharing and copying parts. When you copy a part, it gets a new system ID, so if we had "copied" the 2nd bolt then lengthened it then saved it, when we loaded it we would not get the shared message and the bolt would be the correct length.
Things get really exciting when you assemblies are shared!
Does this type of info help? Maybe CoCreate has a "concepts" document on do's and don'ts for copying/sharing.
A long time ago, VDS (I told you it was a long time ago) created a pick on the menu that allowed us to turn sharing on and off at will. (Using the "load mode..." commands) I have asked CoCreate to create such a command on their own but this seems to have fallen on def ears. Maybe if enough of us ask they will hear.
HP/Agilent had a similar customization for setting the load mode. We have also recommended to CoCreate that this should be something you can set from the file load menu. Now that they have added version handling, there are actually 3 options when you load a file containing a duplicate SysID, you can load it as a share, copy to a new SysID, or load it as a version. We suggested that they add a radio button to the load form to select one of the 3 methods, but as you say they were not receptive to this idea.
What really annoys me it that it either shares or copies automatically without warning the user. This has caused lots of problems for people using SolidDesigner who didn't understand what was happening. We also submitted a suggestion that the file load process should warn the user if duplicate SysIDs exist in the file being loaded, then prompt the user for how they want to handle these duplicates (share, copy, version). A warning would at least make the user stop and think, and if they did not understand what was happening seek help. As it is, items are automatically shared or copied and the users go on their merry way, not realizing what happened until they start having problems, sometimes making irreversible model changes that they have to fix later.
Right now the only solution is better training. We've had instructors cover this topic during advanced training classes and you can see people having these "ah ha" moments where they finally understand why they have had problems in the past.
You've gotten some good responses on how shared parts work, however you mentioned that the parts moved on you as well. If you are using WorkManager you may have another problem. There are some issues you can run into if you are working in Packages and storing from there to WorkManager. The issue surfaces when you save an assembly from a Package to WorkManager, and keep the package for future work without overwriting it after the WorkManager store. Packages and WorkManager do not have a live link, so the next time you open the package the assembly will not show a link to WorkManager. If you work on the assembly from that same Package. rename it, and modify it slightly to store it as a new assembly in WorkManager all looks well. You will have two seperate assemblies within WorkManager with slight differences between them. When you load them seperately they will look correct. If you load them in the same session however the second assembly will share to the first and parts may move, or the structure of the assembly will change, to match the first assembly stored. The easiest fix is to create a new assembly and drag the parts from the initial assembly you are starting from into it, them do the store.
Here is the little goodie I think you are talking about. Simply load this as you would any other lisp routine and look for it in the Toolbox, works on both Windows and HP-UX versions of OSDM. (see attachment)
Original Question
I have a problem with SD: when I load a pkg and after others pkg, sometimes appear the message that a part has already loaded and it is automatically shared and these parts are sometimes moved in other positions. Do you know which is the cause of this problem?
Replies
It's not a problem at all (usually). What it means is that you had already a part before, and instead of loading it again, OSDM decided to instead re-use the existing part.
SolidDesigner handles the loading of identical parts in two ways, Load as Shared and Load as copy. Your system is set to Load as shared which really isn’t a problem (until you start modifying some of the parts but want others to stay the same).
You must realize that a package file zips together part files or contents and instance data. Each part is it's own file. So when you load two package files containing the same part or assembly you are loading the same contents data per part and assembly. In essence when OSDM is set to load as share, OSDM will share all similar contents data. If that data happens to be assembly contents data then your part position may move. Since the assembly holds location data per child part.
In summary when you are working with a set of parts and assembly and save out two package files from different points in time you are not creating two entirely separate entities. Package filing does not create new contents data on each save.
You could either set OSDM to load as copy or use versioning.
You will need to add a line to your PESD_Customize file. Below are the two that I have entered and that I will de-comment out depending on which I prefer to happen in my current task. (by de-commenting I mean removing the two semi-colons from in front of the text.)
You can just cut and paste these two lines into your user pesd_customize file then remove the two semi colons from in front of the mode you would like to be in. You may only have one of these lines active or “de-commented” at a time.
;; (LOAD-CLUSTER-LOAD-MODE :LOAD-DUP-AS-NEW)
;; (LOAD-CLUSTER-LOAD-MODE :LOAD-SHARED)
You can also enter these commands on the SolidDesigner command line to change the load mode on the fly during a session.
You might want to contact CoCreate to get some info on SysIDs and Filing. Once you under stand how SysIDs work it becomes more clear why parts and assemblies must either be shared or copied if their SysID matches existing items in the model.
This is one of the most powerful and confusing areas of SD for me. As best I can figure out, parts and assemblies are identified by a system ID that is completely unrelated to the file name you save to. If you have a 1 inch bolt and you save it to a file, then extend the bolt another 1/2 inch and save it to a different file, SD thinks these are the same part, because they have the same system ID. If you have one loaded, then you load the next, SD will will share these and load the second as length of the first.
This has to do with the difference between sharing and copying parts. When you copy a part, it gets a new system ID, so if we had "copied" the 2nd bolt then lengthened it then saved it, when we loaded it we would not get the shared message and the bolt would be the correct length.
Things get really exciting when you assemblies are shared!
Does this type of info help? Maybe CoCreate has a "concepts" document on do's and don'ts for copying/sharing.
A long time ago, VDS (I told you it was a long time ago) created a pick on the menu that allowed us to turn sharing on and off at will. (Using the "load mode..." commands) I have asked CoCreate to create such a command on their own but this seems to have fallen on def ears. Maybe if enough of us ask they will hear.
HP/Agilent had a similar customization for setting the load mode. We have also recommended to CoCreate that this should be something you can set from the file load menu. Now that they have added version handling, there are actually 3 options when you load a file containing a duplicate SysID, you can load it as a share, copy to a new SysID, or load it as a version. We suggested that they add a radio button to the load form to select one of the 3 methods, but as you say they were not receptive to this idea.
What really annoys me it that it either shares or copies automatically without warning the user. This has caused lots of problems for people using SolidDesigner who didn't understand what was happening. We also submitted a suggestion that the file load process should warn the user if duplicate SysIDs exist in the file being loaded, then prompt the user for how they want to handle these duplicates (share, copy, version). A warning would at least make the user stop and think, and if they did not understand what was happening seek help. As it is, items are automatically shared or copied and the users go on their merry way, not realizing what happened until they start having problems, sometimes making irreversible model changes that they have to fix later.
Right now the only solution is better training. We've had instructors cover this topic during advanced training classes and you can see people having these "ah ha" moments where they finally understand why they have had problems in the past.
You've gotten some good responses on how shared parts work, however you mentioned that the parts moved on you as well. If you are using WorkManager you may have another problem. There are some issues you can run into if you are working in Packages and storing from there to WorkManager. The issue surfaces when you save an assembly from a Package to WorkManager, and keep the package for future work without overwriting it after the WorkManager store. Packages and WorkManager do not have a live link, so the next time you open the package the assembly will not show a link to WorkManager. If you work on the assembly from that same Package. rename it, and modify it slightly to store it as a new assembly in WorkManager all looks well. You will have two seperate assemblies within WorkManager with slight differences between them. When you load them seperately they will look correct. If you load them in the same session however the second assembly will share to the first and parts may move, or the structure of the assembly will change, to match the first assembly stored. The easiest fix is to create a new assembly and drag the parts from the initial assembly you are starting from into it, them do the store.
Here is the little goodie I think you are talking about. Simply load this as you would any other lisp routine and look for it in the Toolbox, works on both Windows and HP-UX versions of OSDM. (see attachment)