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
Vytvořit téma
Koncepty
Seznam oblíbených
Soukromé zprávy
Pravidla
Live CHAT
VIP žádost
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

Makro Constraints

Kompletní přehled příspěvků v tématu Makro Constraints řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Pavel Krsek

Poslat zprávu | Profil
Datum: 22.4. 2021 | Zobrazeno: 3672x
Konfigurace CATIA: V5-6R2018

Text dotazu:
Ahoj.
bojuji nyní s jedním makrem a to konkrétně s vazbami v sestavě. Mám ve 2 partech 2 planes a na ně chci vytvořit sestavou vazbu. Problém mám s vytvořením reference dané plane. Referenci vytvářím přes CreateReferenceFromName kde name pokud se plane nachází třeba ve 3 levels určitého GS je komplikovaná (zkouším ji hledat přes parent).
Máte někdo zkušenost jak jednodušeji vytvořit referenci na daný shape?
Děkuji za radu.

Ing Jan Cinert

Poslat zprávu | Profil
[#6967] | Publikováno: 22.04. 2021 - 15:07
Dobrý den,

použití CreateReferenceFromName je někdy skutečně peklo, protože trefit správný název je nadlidský úkon.

Vždy jsem to obešel tak, že jsem používal selekci a z ní si potom bral vlastnost Reference. resp, její Name. K tomu je samozřejmě třeba sestavit procházením struktury nahoru celou kontextovou cestu od partu, kde se (ve vašem případě rovina) nachází, až po úroveň sestavy, kde se má vazba vytvořit.

K tomu je ještě nutné mít aktivní sestavu (být v prostředí Assembly design) a cestu sestavovat od LeafProduct.
Při samotném vytváření vazby se pak musí reference tvořit z ReferenceProduct dané sestavy.

Přikládám kousek kódu, kde je celý postup (předpokládá se výběr), jen je navíc reference vytvářena z publikace (osa válcové plochy, ale zde stačí odebrat !Axis a závorky)

Používáno v makru a funguje perfektně. Hlavně to řeší i práci s B-Rep, kde je zjištění názvu reference skutečně prakticky nemožné.

' vyber 1. reference

sStatus = oSel.SelectElement2(ObjType, "Vyberte referenci ... (ESC pro ukončení)", False)

If sStatus = "Cancel" Then
Exit Sub
End If

Set oRefSel = oSel.Item(1).Reference
sInstName = oSel.Item(1).LeafProduct.Name
Set oLeafProduct = oSel.Item(1).LeafProduct

' sestavime kontextovou cestu od LeafProdukt az k ParentProduct
Set oParentObject = oLeafProduct
sContextPath = sInstName

Set oParentProduct = oDoc.Product

' zde je treba osetriti vyjimku
Do
Set oParentObject = oParentObject.Parent
sContextPath = oParentObject.Name & "/" & sContextPath

' prochazime strukturou nahoru az root sestave - reference je v sestave, ukoncime
If oParentObject.Name = oParentProduct.Name Then
Exit Do
End If

' ukoncime i v pripade, ze se dostaneme az rootu
Loop Until TypeName(oParentObject.Parent) = "ProductDocument"

sRefName = sContextPath & "/!Axis:(" & oRefSel.Name & ")"
Set oRef1 = oParentProduct.ReferenceProduct.CreateReferenceFromName(sRefName)


Pavel Krsek

Poslat zprávu | Profil
[#6971] | Publikováno: 23.04. 2021 - 10:50
Děkuji za radu. Zkusím to ještě nějak vyzkoušet.


Uživatel nepřihlášen

Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.