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

Zacatek makra

UživatelPříspěvek
Pavel Krsek

Poslat zprávu | Profil
Datum: 28.6. 2012 | Zobrazeno: 9950x
Konfigurace CATIA:

Text dotazu:
Mam makra pro praci v design modu. Ty funguji OK pri otevrem Catpartu v samostatnem okne. Pokud byla otevrena sestava, tak makro vyhodilo hlasku, aby uzivatel otevrel catpart do samostatneho okna. (to same platilo i kdyz byl aktivni catpart v design modu, ale v sestave).

Nyni se mi "podarilo" napsat makra nasledovne:

Dim documents1

Dim MainProduct As Product
Dim MainDocument As ProductDocument

Set documents1 = CATIA.Documents
Set partDocument1 = CATIA.ActiveDocument

Set oSelection = partDocument1.Selection
oSelection.Search "Name='xy plane',in" 'vyhledá rovinu xy v aktivním Partu (parametr "in")

If oSelection.Count = 0 Then
MsgBox "Je aktivni sestava." & Chr(13) & "Aktivuj catpart", vbInformation, "Chyba"
Exit Sub
Else
Set oPart = oSelection.Item(1).Value.Parent.Parent
End If


Nyni makra funguji i v sestave za podminky, ze jsme je aktivni catpart.

Jak tento problem resite vy? Podobnym nebo jinym zpusobem?

Diky za info.

Ing Jan Cinert

Poslat zprávu | Profil
[#3064] | Publikováno: 28.06. 2012 - 19:31
Úplně stejně, je to celkem známý trik, dlouho to bylo i tady na fóru v ukázkách, než jsem se rozhodl to trochu předělat (a zatím jsem to sem pořád nevrátil). A ničem jiném zatím nevím. Jediný problém při práci a Partem uvnitř sestavy je kopírování z přes schránku (Copy - Paste / PasteSpecial) se to chová obráceně. Jednou musí být aktivní sestava, podruhé part, jinak to nefunguje.
Břeťa Doležal

Poslat zprávu | Profil
[#3099] | Publikováno: 20.07. 2012 - 12:33
Ověřování přes Selection se dá vyhnout následovně:


Err.Clear
'Kontrola jestli je aktivní dokument Part nebo Product, jinak ukonči makro
On Error GoTo ErrHandler ' V případě že Desk nebo nic je aktivní
If TypeName(CATIA.ActiveDocument) = "PartDocument" Then
'Aktivní dokument je Part, pokraèuj
Set oPart = CATIA.ActiveDocument.Part
strDokTyp = "Part"
ElseIf TypeName(CATIA.ActiveDocument) = "ProductDocument" Then
'Aktivní dokument je Product, pokraèuj
Set oSestava = CATIA.ActiveDocument.Product
strDokTyp = "Product"
Else
'Aktivní dokument není Part ani produkt, ukonči makro
MsgText = TypeName(CATIA.ActiveDocument) & " is unsupported document!" & vbCrLf
MsgText = MsgText & "CATPart or CATProduct hAs to be active."
MsgResponse = MsgBox(MsgText, vbExclamation)
Exit Sub
End If
Err.Clear
On Error GoTo 0


V případě zájmu, potom mohu poslat verzi i pro Visual Studio 2005
Ing Jan Cinert

Poslat zprávu | Profil
[#3102] | Publikováno: 20.07. 2012 - 15:17
Pozor - tohle ale nepočítá s možností aktivovaného Partu v otevřené sestavě!!! Pokud je otevřená sestava, vlastnost ActiveDocument je vždycky ProductDocument. Tady nerozhoduje kde jste aktivní ve stromě, bere to dokument v aktivním okně. Takže tohle nefunguje spolehlivě.

Pokud chcete pracovat s aktivním Partem v sestavě, musí se jít přes Selection.


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.