Your titleblock text that displays scale should be linked with `Scale` parameter with attribute link.
set sheet = CATIA.ActiveDocument.Sheets.ActiveSheet
for each param in CATIA.ActiveDocument.Parameters.SubList(sheet, True)
if InStrRev(param.Name, "ViewMakeUp.1\Scale") > 0 then
set...
CATIDescendants::ChangePosition works fine with features inside CATPart, but not with products inside CATProduct.
There's a specific interface for reordering products, unfortunately it's not a part of CAA client's installation.
Another option is to automate reodering via "Reorder Tree" command...
I'm going to elaborate on what I meant:
1. Write macro that would search for parts in currently opened assembly and copy them them to a temporary assembly.
2. Run that macro, close your original assembly.
3. Activate temporary assembly, run Desk command.
4. Select ALL parts and run CATDUA.
5...
AFAIR Desk relationship tree is displayed relative from active document. So if you search for part in original assembly, open it in new window and run Desk command from there it should be easy to find this part as it is going to be located in the very left part of relationship tree.
Similar...
Use LWolf's solution as it enumerates "opened" documents meaning the ones that have their own window.
Although I'd adjusted "if" condition, because right now it matches ANY documents that have word "Drawing" in them (i.e. "AssemblyForDrawing.CATProduct")
Sub CATMain()
Dim win, doc...
What a mess.
Stop using names to identify products and source bodies, they should be placed to ListViewItem.Tag right after SelectElement.
Introduce standalone function CopyBodies(sourceParts as List<of Product>, bodyNames as List<of String>, targetParts as List<of Product>) that would
For...
Product differs from component by the way it's stored: one has it's own separate CATProduct document, the other one resides within a document that contains it.
So what you want to do is to get to that CATProduct and check if it's root object is the one you've started from.
Function...
DrawingView.GenerativeBehavior.Document - sets "main" link
DrawingView.GenerativeLinks.AddLink/RemoveAllLinks - manages links to subcomponents of "main" linked Product
I'm afraid I'm not allowed to share our solution.
You have to purchase CAA licens (costs A LOT) and then use sample code in CAA Encyclopedia as a reference to develop your own solution (requires middle-level C++ knowledge).