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

kontext reakce "self", aby fungovala v samostatném partu i partu otevřeném v sestavě

Kompletní přehled příspěvků v tématu kontext reakce "self", aby fungovala v samostatném partu i partu otevřeném v sestavě řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Pavel Holecek

Poslat zprávu | Profil
Datum: 3.4. 2015 | Zobrazeno: 8935x
Konfigurace CATIA: V5 R19 SP3, KWA

Text dotazu:
Potřebuji, aby reakce fungovala v kontextu partu i sestavy. Dá se jí nějak zadat kontext "self"? Aby vždy běžela v kontextu partu, ve kterém leží? Případně jak jinak to ošetřit? Předem moc děkuji za pomoc.

Zatím při definování kontextu spolehám na to, že uživatel má vybraný parametr, při jehož změně se reakce spustí, a z něj zjistím part. V kontexu samotného partu to funguje dobře. Reakce není závislá na jménu partu.

Problém nastane, když part je otevřený v sestavě, parametr změním ve skeletonu, je nalinkovaný do partu, a pak updatuji celou sestavu. Pak se samozřejmě reakce spustí ve špatném kontextu a nenajde elementy, se kterými má pracovat.

Přikládám ukázku kódu (schovávám jedno nebo druhé body v závislosti na hodnotě parametru) a příklad partu a sestavy.

Dim partDocument1 As Document

Set partDocument1 = CATIA.Documents.Item(CATIA.ActiveDocument.Selection.Item(1).Value.Parent.Parent.Parent.name)
Dim part1 As Part
Set part1 = partDocument1.Part

Set parameters1 = part1.Parameters.RootParameterSet.AllParameters
Set switch = parameters1.Item("switch")

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

Dim visPropertySet1 As VisPropertySet
Set visPropertySet1 = selection1.VisProperties.Parent

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body

selection1.Clear
Set body1 = bodies1.Item("Body Circle")
selection1.Add body1

If switch.Value = "Circle" Then
visPropertySet1.SetShow 0
Else
visPropertySet1.SetShow 1
End if

selection1.Clear
Set body1 = bodies1.Item("Body Rectangle")
selection1.Add body1

If switch.Value = "Rectangle" Then
visPropertySet1.SetShow 0
Else
visPropertySet1.SetShow 1
End if

selection1.Clear

End Sub

Přiložené soubory:
KWA - hiding bodies.zip

Ing Jan Cinert

Poslat zprávu | Profil
[#5022] | Publikováno: 03.04. 2015 - 15:17
Dobrý den,

co zkusit jen pravidlo? Tohle se mi zdá moc komplikované.

V příloze příklad s Rule - v závislosti na parametru skrývá rovinu a jsou to jen 4 řádky. Chce to trochu znát EKL syntaxi :-)

Přiložené soubory:
Hide_Show_rule.CATPart

Pavel Holecek

Poslat zprávu | Profil
[#5053] | Publikováno: 13.04. 2015 - 16:51
Dobrý den, děkuji za odpověď.

Samozřejmě máte pravdu. Použil jsem zmíněný krkolomný způsob, protože to byl jediný co jsem našel... Váš je to co jsem hledal, přepíšu svůj kód.
Ing Jan Cinert

Poslat zprávu | Profil
[#5056] | Publikováno: 14.04. 2015 - 20:14
Mimochodem, když už jste začal ty reakce - zkoušel jste reakci navázat i na jinou událost než je změna hodnoty parametru. Já tím dodnes občas trochu bojuji. Všechno se zdá být v pořádku, ale reakce se z nějakého důvodu nespustí, i když by měla.


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.