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

Rsur Reference

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

UživatelPříspěvek
Pavel Krsek

Poslat zprávu | Profil
Datum: 8.7. 2014 | Zobrazeno: 9407x
Konfigurace CATIA:

Text dotazu:
Ahoj mam nasledujici dotaz.
Potřebuji v makra pracovat s několika plochami na solidu. Problem mám v tom, že chci nejdřive několik ploch vybrat a pak je postupně použivat ve scriptu. Když jsem je uložil do pole - array jejich RSUR jméno, tak jsem měl problémy přes funkci CreateReferenceFromBRepName znovu vytvořit reference. Nakonec se mi to částečně podařilo, ale vybrala se mi ze zádaného důvodu jiná plocha na solidu.
Nyní zkouším jiný způsob tj. vytvořit více referencí tj. co plocha to jedinečná reference. Potřebuji přiřazovat číslo k názvu reference, ale nevím jak na to viz.:

Set "oReference" & (s) & "")= oSelection.Item(1).Value


kde s je index z funkce For/Next.
Poradí prosím někdo.

Ing Jan Cinert

Poslat zprávu | Profil
[#4627] | Publikováno: 13.07. 2014 - 15:22
Dobrý den,

stačí místo vlastnosti Value u výběru použít Reference a máte přímo objekt reference. Pokud nepracujete v sestavě, kde je jediná možnost vytvoření reference pomocí fce CreateReferenceFromName, tak názvy BRep vůbec nepotřebujete.

Takže potom asi takhle:

Dim oRef As Reference

Set oRef = oSelection.Item(1).Reference


Pomohlo to?
Pavel Krsek

Poslat zprávu | Profil
[#4628] | Publikováno: 14.07. 2014 - 06:08
Děkuji za radu, nicméně teď stejně nevím jak dále. Script je:
For s = 1 To UBound(oPoleBodies())

Dim oPoleReference()
sFilter(0) = "Face"
sStatus = oSelection.SelectElement2(sFilter, "Choose Faces", False)
If (sStatus = "Cancel") Then
Exit Sub
End If
Set oReference = oSelection.Item(1).Reference
ReDim Preserve oPoleReference(s)
oPoleReference(s) = oReference.Name
Next

tj. potřebuji vybrat více ploch na solidu a ty buď uložit do array oPoleReference (tam, ale asi můžu uložit jen jména RSUR a pak mám problém s označením dané plochy v další části scriptu) a nebo potřebuji vytvořit více referencí (dle počtu UBound(oPoleBodies()) a to také nevím jak provést.
Ing Jan Cinert

Poslat zprávu | Profil
[#4629] | Publikováno: 14.07. 2014 - 13:30
Tohle je hodně krkolomné. Proč nepoužijete metodu SelectElement3 pro vícenásobný výběr? Pak stačí procházet instance ve výběru a rovnou znáte jejich počet. A do pole jde uložit i typ reference. Když při deklaraci neuvedete z čeho pole bude, automaticky se použije typ Variant, takže to vezme i Objekt.

Já bych to udělal takhle:

sStatus = oSelection.SelectElement3(sFilter, atd... )

If (sStatus = "Cancel") Then
Exit Sub
End If
ReDim oPoleReference(oSelection.Count - 1)
' ulozime vybrane reference
For i = 1 To oSelection.Count
oPoleReference(i - 1) = oSelection.Item(i).Reference
Next
' vyprazdnime vyber
oSelection.Clear()


a tím si všechny vybrané plochy uložíte do pole.
Pavel Krsek

Poslat zprávu | Profil
[#4630] | Publikováno: 14.07. 2014 - 13:56
Děkuji moc.
Já to nemám, tak krkolovné, ale pro zjednodušení jsem vyškrtal dost řádků - metodu SelectElement3 používám. Vůbec jsem nevěděl, že jde do pole ukládat přímo reference - teď už to vypadá velmi nadějně. Jen upřesním, že daný řádek, který mě tak zajímal začíná příkazem SET tj.
 Set oPoleReference(i - 1) = oSelection.Item(i).Reference
Ing Jan Cinert

Poslat zprávu | Profil
[#4631] | Publikováno: 14.07. 2014 - 14:35
Samozřejmě, já píšu v .NET, kde se Set už nepoužívá, a vždycky na něj u VBA zapomenu...


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.