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

Parent from Extract

UživatelPříspěvek
Tomáš Hlavačka

Poslat zprávu | Profil
Datum: 7.3. 2025 | Zobrazeno: 252x
Konfigurace CATIA: Servise Pack 3, R32

Text dotazu:
Dobrý den,

po spuštění makra si uživatel vybere Extract1, který by se měl přejmenovat podle plochy ze které daný Extract vznikl.
Extract se ovšem přejmenuje na Hybridshapes na místo Split1.(viz. obr. výsledek, kterého bych chtěl docílit)

Sub CATMain()


Dim partDocument1 As Document
Dim part1 As Part

'error handling
On Error Resume Next

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

If Err.Number=0 Then

'------------------
'Vyber geom setu uzivatelem pro vypocet myArea
Dim What(0)
What(0) = "AnyObject"

'Definice vyberu
Dim UserSel As Selection
Set userSel = CATIA.ActiveDocument.Selection
UserSel.Clear
Msgbox("vyber prvek")
'Vyber plochy
Dim oSel
oSel = UserSel.SelectElement2(What , "Vyber prvek", False)

'Zobrazení názvu vybraného objektu
Msgbox ("Child name:"& UserSel.Item(1).Value.Name)

Dim obj
Set obj = UserSel.Item(1).Value

Dim PExtract
Set PExtract = obj.Parent

Msgbox ("Parent:"& PExtract.Name)


obj.Name = PExtract.Name

UserSel.Clear

'error handling
Else
Msgbox "Not a part document! Open in new window."
End If

End Sub

Přiložené obrázky:

Ing Jan Cinert

Poslat zprávu | Profil
[#7236] | Publikováno: 11.03. 2025 - 19:13
Dobrý den,

přes vlastnost Parent to nepůjde, protože ta vrací kolekci HybridShapes z geometrického setu, kde je vybraný prvek umístěn. Pokud byste použil obj.Parent.Parent, dostal byste vlastní objekt Geo setu. Parent se takhle chová vždy.

Díval jsem se do API dokumentaci (viz příloha) a z Extractu se da vyčíst pouze dílčí vybraná plocha - vlastnost Elem, a Support. Bohužel obě se vrací jako typ Reference, takže je sice lze použít do jiné funkce nebo vyměnit, ale zjistit jméno původní plochy bude potíž.

Zkoušel jsem vlastnost Elem - opravdu se vrátí Face, která byla vybrána pro Extract, ale dál s tím nejde nic - maximálně opět vybrat a tím označit Surface ve stromu - vy vašem případě by se označil Split.1.



Přiložené obrázky:

PTM

Poslat zprávu | Profil
[#7237] | Publikováno: 12.03. 2025 - 06:55

Sub CATMain()
' Insert the code of your main procedure here
Dim partDocument1 'As Document
Set partDocument1 = CATIA.ActiveDocument
Dim part1 'As Part
Set part1 = partDocument1.Part
Dim reference1'As Reference

Dim InputObjectType(0), Status
Dim Selection 'As Selection
'Selection = partDocument1.Selection

InputObjectType(0)="BiDimInfinite"
Status=partDocument1.Selection.SelectElement2(InputObjectType,"Select an Face",false)

Dim ParentObject 'As AnyObject
dim val
set val=partDocument1.Selection.item(1).value
msgbox(val.name)
set ParentObject =val.Parent
msgbox(ParentObject.item(2).name)
End Sub
PTM

Poslat zprávu | Profil
[#7238] | Publikováno: 12.03. 2025 - 06:57
note ParentObject.item(2).name
index may changed if u select more than 1 in split.
Tomáš Hlavačka

Poslat zprávu | Profil
[#7239] | Publikováno: 12.03. 2025 - 09:01
Zdravím,

díky za Vaše odpovědi. Opravil jsem si kód dle příspěvku PTM a už vše funguje jak jsem chtěl.
Díky
Ing Jan Cinert

Poslat zprávu | Profil
[#7240] | Publikováno: 12.03. 2025 - 15:28
No to ale vůbec nic neřeší a bude to fungovat jen pro jeden konkrétní případ. Do objektu ParentObject se načetla kolekce HybridShapes a pak logicky její druhá (x-tá) položka odpovídá vašemu splitu. Ale jakmile by se do geo setu cokoliv přidalo, resp, změnilo by se pořadí features, bude to vracet úplně jiný objekt nebo to shoří, protože se dostanete na index, který ani neexistuje.

Dalo by se to omezeně použít tak, že byste zjistil počet features ve stromu a pořadí Extractu a pak odečetl jedničku - na tom pořadí by se měl nacházet rodič. Ale ze zkušeností pořadí ve stromu nemusí (opticky) odpovídat pořadí v kolekci ;-)
Tomáš Hlavačka

Poslat zprávu | Profil
[#7241] | Publikováno: 13.03. 2025 - 08:32
Uživatel odpovídá na příspěvek #7240:

Máte pravdu, funguje to pouze na ten jednoduchý příklad. Zkoušel jsem to Vašim postupem, Split.1 se sice ve stromě vybral, ale název výběru je CATIAReference.
PTM

Poslat zprávu | Profil
[#7242] | Publikováno: 13.03. 2025 - 08:33
yep this is a special case, but you can extend to you case.
and its work, until you not set "check operation on renaming"


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.