Vítejte !   Přihlášení | Registrace
Hlavní menu
CATIA fórum.cz
Novinky
Seriál CATIA
Obecně o CAD
Novinky ze světa DS
Makra pro CATIA V5
Diskuse
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

Programujeme: Vytvoření CCP (CutCopyPaste) linku v sestavě

Publikováno: 21. července 2013 | Zobrazeno: 4888x
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.

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.

Kopie s použitím CCP linku

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".

Kopie s použitím kontextuálního linku

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