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

Copy ccp makro

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

UživatelPříspěvek
Petr

Poslat zprávu | Profil
Datum: 6.10. 2021 | Zobrazeno: 551x
Konfigurace CATIA: V5R2018

Text dotazu:
Zdravim,
reaguji k članku "Vytvoření CCP (CutCopyPaste) linku v sestavě" makro funguje výborné, používám ho převážně na kopírování Body v rámci sestavy.

Jediné co mě vadí, je že makro padá, když Body nemám napublikované.

Jde zjistit pomocí makra, jestli je Body publikované a když nění tak ho napublikovat?

Děkuji

Ing Jan Cinert

Poslat zprávu | Profil
[#7020] | Publikováno: 06.10. 2021 - 10:42
Dobrý den,

tohle by jít bez problémů mělo. K publikacim se dostanete přes vlastnost objektu Product.Publications,
jednotlivá publikace, resp. publikovaný objekt se získá metodou Publications.Item("název publikace").

Ten se pak dá porovnat s objektem, pro který má publikace existovat.

Pro vytvoření publikace existuje metoda Publication.SetDirect("název publikace",reference na object").

Přiložené obrázky:

Petr

Poslat zprávu | Profil
[#7021] | Publikováno: 19.10. 2021 - 07:23
Zdravim, ještě by mě zajimalo, jak funguje CreateReferenceFromName nebo spíš jak určit název.

např. u body mě funguje tohle, ale když vyberu axis nebo sketch, který je jiném geometrickém setu, tak je to problem..


oPartName- název dílu
oBodyName - název body
Set oReference = oProduct.CreateReferenceFromName(oPartName & "/!" & oBodyName)
Set publication1 = oPublications.Add(oBodyName)
oPublications.SetDirect oName, oReference
Ing Jan Cinert

Poslat zprávu | Profil
[#7022] | Publikováno: 19.10. 2021 - 12:45
No upřímně,

tohle je někdy vyšší dívčí. Rozhodně doporučuju používat metodu CreateReferenceFromObject, jenže ta je dostupná jen a pouze v rámci Partu, u sestavy se tomu ...FromName nevyhnete.

V názvu musí být celá kontextová cesta od aktivní sestavy až k LeafProductu (to je ten, se kterým se pracuje - v rámci sestavy je Part de facto také Product), takže něco jako

Product1.1/Product2.1/ ... /ProductX.1/!Název reference

a jakákoliv nepřesnost se trestá.

Doporučuju se kousek makra nahrát rekordérem, podívat se, jak se reference vytvořila (bude tam přesný název), a pak se ve vašem makru dopracovat k tomu samému. Je to pakárna, protože se musíte vracet přes Parent nahoru k mateřské sestavě a skládat celou kontextovou cestu od Produktu, ve kterém se pracuje až k aktivní sestavě.

Petr

Poslat zprávu | Profil
[#7025] | Publikováno: 27.10. 2021 - 11:14
Dobrý den,
už týden se snažim vytvořit proceduru pro připdávání publikací přes CreateReferenceFromObject a pořád mě to nefunguje...

Můžete mi poradit, už si nevím rady.


Sub fCreatePublic(ByRef oObject As Body, ByRef u)
Dim oPublications As Publications
Dim oReference As INFITF.Reference
Dim oPart As Part
Dim oBodyName As String
Dim oBody As Body

Set oPart = oObject.Parent.Parent
Set oPublications = oPart.Parent.Product.Publications
oBodyName = oObject.Name


Set oReference = oPart.CreateReferenceFromObject(oPart.Bodies.Item(u))
Set publication1 = oPublications.Add(oBodyName)
oPublications.SetDirect oBodyName, oReference
End Sub
Ing Jan Cinert

Poslat zprávu | Profil
[#7027] | Publikováno: 28.10. 2021 - 14:31
A kde se objevuje chyba? Vytvoří se alespoň prázdná nová publikace? Odkazuje se reference na dané Body?

Přijde mi dost krkolomná konstrukce pro vytvoření reference. Proč tam jako parametr nepoužijete rovnou oObject, což je Body, z kterého referenci vytváříte?

Jinak ale v zásadě nevidím nic, co by bylo špatně. Jedině snad, a to se pak omlouvám za mystyfikaci, že by pro tvorbu publikace skutečně musela být použita metoda CreateReferenceFromName. Já určitě používám to, co jsem psal o pár příspěvků výše, ale nevidím rozdíl mezí způsobem vytvoření reference - pokud nejste v sestavě a není nutné rozlišovat mezi instancemi, mělo by ...FromObject stačit. Vytvářím tak všechny reference při jakékoliv tvorbě geometrie v rámci partu, ...FromName je nutnost např. při měření nebo vytváření vazeb v sestavě.

Petr

Poslat zprávu | Profil
[#7028] | Publikováno: 28.10. 2021 - 22:04
Vytvoří se pouze nová prázdná reference....
Ing Jan Cinert

Poslat zprávu | Profil
[#7029] | Publikováno: 31.10. 2021 - 23:18
Tady jsem na3el jeden starý testovací skript, který bezpečně funguje....

Sub CATMain()

Dim oDocument As Document
Dim oProduct As CATBaseDispatch
Dim oReference As Reference
Dim oPublications As Publications
Dim oPublication As Publication
Dim SrEfName As String

Set oDocument = CATIA.ActiveDocument
Set oProduct = oDocument.Product

sRefName = oProduct.PartNumber & "/!PartBody"
Set oReference = oProduct.CreateReferenceFromName(sRefName)

Set oPublications = oProduct.Publications
Set oPublication = oPublications.Add("Publikace")

oPublications.SetDirect "Publikace", oReference
End Sub
Petr

Poslat zprávu | Profil
[#7030] | Publikováno: 01.11. 2021 - 07:18
Super, děkuji funguje výborně.

Ještě mám jendu otazku, Co když chci publikovat v partu dvě Body, které mají stejný nazev?

Když to vytvářím přes funkci publikace, tak se to vytvoří s tím, že u jednoho se přida k nazvu číslo, ale ve sloubci Element to má stejnou cestu "Název partu / nazev body".

Makro mě vlastně napubliku jen první body, které je ve strome výše...

Přiložené obrázky:

Ing Jan Cinert

Poslat zprávu | Profil
[#7031] | Publikováno: 02.11. 2021 - 21:44
No to je jasné, publikace je vždy unikátní - právě proto, aby se linky chovaly korektně a nemohlo dojít k záměně při nahrazení partů v sestavě. Jedinečnost určuje celá kontextová cesta k partu, pak cesta v partu k feature.

Body by se určitě neměla jmenovat stejně (dokonce se dá zapnout kontrola unikátnosti názvů v partu), pak se vyhnete tomuto problému.

Problém je v tvorbě reference, protože je stejný název - vždy se tak odkážete na první Body, protože je prostě první v pořadí. Catie se pak nejak automaticky popere s názvem publikace a přidá si jedničku na konec,

Zkuste druhé Body před tvorbou reference přejmenovat (klidně na xxx.2), vytvořte publikaci, a pak body přejmenujte zpět. To lze.

Za mě bych si pojmenoval ta Body na xxx.1, xxx.2 a není co řešit.


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.