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).
We've got customizable CAA toolbars where each button runs catscript or catvba. I consider this to be the best way to go.
A "toolbar" displayed by VB.NET is cumbersome to use since it requires extra action to be displayed and struggles in ergonomics when there're plenty of commands.
Consider a...
Specify CATIA.HSOSynchronized=False
Minimize number of times you call Search. Get names of all bodies from Excel, group them by value and call Search for every unique body just once.
Moreover, you can add all bodies to Selection, perform a single Search and then group resulting elements by...
Great job, thanks for sharing.
Couple of suggestions:
1. Offset from a setting name to it's value is constant, so you can write it down in your code (this way you'll be able to get any path, not just on C: drive)
2. CATIA strings are null-terminated, so you better search for character with...
AFAIK there's no way to do it from CATScript since it's run by CATIA's scripting engine (not wscript or cscript) that can also run code not necessarily stored in a file.
However you can take advantage of the fact that titleblock scripts are stored in a directory referenced in CATIA settings...
Technically VPN and office LAN are the same since you get a license and environment from a remote computer.
Offline licensing is obviously designed with a sole reason to waste a license so that CentiFlex could charge you more. As long as it's cost is less than an administration expenses (both...
Term "environment" here is rather vague. In CATIA vocabulary it stands for a set of OS environment variables, often provided to an executable (such as CNEXT.exe) via CATSTART utility.
On the other hand in business domain, terminology of which CenitFlex should adhere for marketing reasons at...
Never heard of Cenitflex before, but done a lot of CATIA deployments and built automated batch processing solution with multiple CATIAs running on many sites.
Based of what you (very intelligently) described I don't believe anything is streamed since Cenitflex is basically environment and...