We are trying to access the complete data of the laminate composite setting through VB script with batch mode. We found that certain actions could not be recorded as journals (for example copying an existing ply into a new one). I am wondering if anyone have the experience of handling the following tasks.
1. Is there any way to list/access all layups in a model with VB script, without knowing any information in advance ?
2. Is there any way to list/access all plies in a layup with VB script, without knowing any information in advance ?
3. When creating a new ply with GUI, the user can just copy the old one to a new one, and all the settings will go with it.
Is there any way to perform this action with VB script, without knowing any information in the old ply in advance ?
4. If 3 is not possible, then maybe we have to copy all the settings one by one. Then we will have to look at the class definition of the ply definition. Where can we find such documentation ?
Any help will be greatly appreciated.
After a quick look at the docs, I think 1 & 2 is possible; if so,
3 4 should also be possible.
You can access the physical property tables through the CAE part, the laminates are a special type of physical property table. Once you have a laminate object, you can access its ply groups and the plies in each group.
edit: originally typed "3" in first sentence, when I meant "4"
We have managed to resolve 1 and 2. I have been told that 3 is not possible, so we have been trying to implement 4. But now we are having big problems with 4. This is why
When the GUI is defining the elements/area that the ply is applied on, it is using (through journal recording)
Then “NXOpen.CAE.FEModel.Find” will be used to identify the user-select element (for example “Element”). It will then be feed into “NXOpen.TaggedObject”
However under the already-defined ply, we can only find
For such information.
That is, the user pick the ply areas through elements, but it was finally stored/saved into NX database in FaceSelection
Now there are two problems here
(1) We have tried different approach. But we can’t find a way to copy “.FaceSelection” from one ply to another new one (possible that we have done it in a wrong way). Is it possible to do this ?
(2) If (1) is not possible, is there any way we can track the “FaceSelection” back into the element level, and then use “NXOpen.CAE.FEModel.Find” to apply these elements one by one ?
Thanks again for the reply and help.
A common technique in NXOpen for finding out how something was created is to create a Builder of the appropriate type, and pass in the existing object during creation, and then query the builder. Something like this:
myThingBuilder = CreateThingBuilder(theExistingThing)
Then on myThingBuilder, you would have various properties and methods you could examine. In the case of the LaminateSelectEntitiesBuilder -> SelectionList is typed as SelectTaggedObjectList, which has a method called GetSelectObjectArray(), which the docs say “Returns the list of SelectObjects in the selection list.”
But in this case, CreateLaminateSelectEntitiesBuilder() does not accept any arguments, so there is no way to tell it to create the builder with the existing objects!
Based on this, I don’t see a way to do what you want, but if there is another way, perhaps someone with more NXOpen.CAE expertise will chime in.