Programujeme: Vytvoření CCP (CutCopyPaste) linku v sestavě
Publikováno: 21. července 2013 | Zobrazeno: 5011x
Dnes si ukážeme jednoduché makro, které dokáže vytvořit tzv. CCP kopii v sestavě. Zkratka CCP vychází se slov Cut - Copy - Paste, tj. zkopírování nebo vyjmutí feature a její následné vložení. Tento typ linku vzniká při kopírování z Partu do Partu, kdy je cílový Part otevřený v samostaném okně. Klasickým příkladem pro použití CCP linku je vytvoření symetrického dílu, kdy se ze zdrojového dílu zkopíruje libovolná geometrie (většinou celé PartBody) do cílového Partu, a následné se použije operace Symmetry. O CCP linku si můžete více přečíst v tomto článku.
Použití makra si ukážeme na příkladu. K tomu si můžete vytvořit vlastní sestavu se zdrojovým a cílovým Partem nebo si stáhněte soubor se vzorovou sestavou a CATScriptem.
Na druhém obrázku je v cílovém Partu vytvořena ještě jedna kopie (opět s následnou operací symetrie), ale tato kopie je vytvořená v kontextu sestavy. Že se jedná o kontextový link je dobře patrné i z ikony instance v sestavě, kde přibyl známý modrý "řetízek".
Rozdílné chování obou linků si nejlépe ověříme, pokud s cílovým partem v sestavě někam pohneme a provedeme update. Body s CCP linkem zůstane na svém místě v rámci modelu, Body s kontextovým linkem zůstane ve své pozici v rámci sestavy, ale změní svojí polohu uvnitř Partu.
Pokud jakoukoliv gemetrii pouze zkopírujeme a následně vložíme do jiného modelu v sestavě pomocí PasteSpecial, vždy se vytvoří kontextový link. S tímto makrem dokážeme vytvořit i CCP link, aniž bychom museli cílový Part otevírat do nového okna.
A nakonec zdrojový kód...
Autor článku: Jan Cinert
Použití makra si ukážeme na příkladu. K tomu si můžete vytvořit vlastní sestavu se zdrojovým a cílovým Partem nebo si stáhněte soubor se vzorovou sestavou a CATScriptem.
Použití makra pro vytvoření CCP linku
Na prvním obrázku je v cílovém Partu vytvořená CCP kopie (jako další Body) a pak je použita operace symetrie. Tím je vytvořen symetrický díl. Jakákoliv změna tvaru i polohy se tak po provedení update okamžitě projeví i na symetrickém dílu. Změna pozice symetrického dílu v sestavě nemá žádný vliv na pozici Body v Partu.Na druhém obrázku je v cílovém Partu vytvořena ještě jedna kopie (opět s následnou operací symetrie), ale tato kopie je vytvořená v kontextu sestavy. Že se jedná o kontextový link je dobře patrné i z ikony instance v sestavě, kde přibyl známý modrý "řetízek".
Rozdílné chování obou linků si nejlépe ověříme, pokud s cílovým partem v sestavě někam pohneme a provedeme update. Body s CCP linkem zůstane na svém místě v rámci modelu, Body s kontextovým linkem zůstane ve své pozici v rámci sestavy, ale změní svojí polohu uvnitř Partu.
Pokud jakoukoliv gemetrii pouze zkopírujeme a následně vložíme do jiného modelu v sestavě pomocí PasteSpecial, vždy se vytvoří kontextový link. S tímto makrem dokážeme vytvořit i CCP link, aniž bychom museli cílový Part otevírat do nového okna.
A nakonec zdrojový kód...
Sub CATMain()
Dim oParentObject As Object
Dim oTargetDocument As PartDocument
Dim oTargetPart As Part
Dim strDocName As String
Dim i As Short
Dim InputObjectType(4) ' definici typu objektu, ktere lze vybirat
InputObjectType(0) = "Point"
InputObjectType(1) = "Line"
InputObjectType(2) = "Plane"
InputObjectType(3) = "HybridShape"
InputObjectType(4) = "Body"
Set oSelection = CATIA.ActiveDocument.Selection
oSelection.Clear()
' multiselekce
SelectionStatus = oSelection.SelectElement3(InputObjectType, "Vyberte objekty pro kopirovani", False, CATMultiSelTriggWhenUserValidatesSelection, True)
If SelectionStatus = "Cancel" Then
Exit Sub
End If
' zkopirovani Do schranky
oSelection.Copy()
oSelection.Clear()
' vyber ciloveho partu
Dim OutputObjectType(0)
OutputObjectType(0) = "Part"
oSelection.SelectElement2 OutputObjectType, "Vyberte Part, Do ktereho chcete vkladat", True
If SelectionStatus = "Cancel" Then
Exit Sub
End If
Set oParentObject = oSelection.Item(1).Value
' ziskani dokumentu u zdroveho partu
Do Until TypeName(oParentObject) = "PartDocument"
Set oParentObject = oParentObject.Parent
Loop
Set oTargetDocument = oParentObject
Set oTargetPart = oTargetDocument.Part
strDocName = oTargetDocument.FullName
' otevreni ciloveho dokumentu Do noveho okna
Set oTargetDocument = CATIA.Documents.Open(strDocName)
' vlozeni jako kopie s linkem
oSelection.PasteSpecial("CATPrtResult")
oTargetPart.Update()
CATIA.ActiveDocument.Close()
End Sub
Závěr
S tímto jednoduchým makrem můžeme ušetřit několik "kliknutí" při častém vytváření symetrických dílů v sestavě. Pro ty z vás, kteří se o makra zajímáte, je zde názorně předveden výběr, kopírování do schránky a vkládání do jiného modelu.Autor článku: Jan Cinert