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

Vlozeni objektu do daneho umisteni v sestave

Kompletní přehled příspěvků v tématu Vlozeni objektu do daneho umisteni v sestave řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Pavel Krsek

Poslat zprávu | Profil
Datum: 3.3. 2010 | Zobrazeno: 4392x
Konfigurace CATIA:

Text dotazu:
Dobry den,
mel bych nasledujici dotaz. Mam sestavu s nekolika podsestavy a potrebuji vkladat obsah schranky pres makro vzdy do product ve kterem jsem prepnuty:

Language="VBSCRIPT"

Sub CATMain()
Set productDocument1 = CATIA.ActiveDocument
Set selection1 = productDocument1.Selection
selection1.Clear
Set product1 = productDocument1.Product

Set products1 = product1.Products
Set product2 = products1.Item("Product2.1")
selection1.Add product2
selection1.Paste
End Sub

Toto makro vklada porad jen do podsestavy Product2.1. Pokud zrusim radek pro vytvoreni instance product2 - tak makro vklada obsah schranky jen do hlavni sestavy. Jak mam toto vyresit?

Dekuji.

S pozdravem Pavel K.

Ing Jan Cinert

Poslat zprávu | Profil
[#234] | Publikováno: 03.03. 2010 - 09:24
Objekt ze schránky se vloží tam, kde byla provedena selekce, tj. ve vašem případě productDocument1 (zřejmě hlavní sestava). Řešením je tedy vybrat požadovanou sestavu a do ní vkládat.
Pavel Krsek

Poslat zprávu | Profil
[#244] | Publikováno: 03.03. 2010 - 12:36
Uživatel odpovídá na příspěvek #234:

Je úplně jedno kde byla provedena selekce. Pokaždé to vkladá part, který je ve schránce do stejné sestavy (tj. v případě popsaného makra výše do podsestavy Product2.1).
Když daný řádek smažu a upravím řádek níže (selection1.Add product1), tak se objekt ze schranky bude pořád vkládat do hlavní sestavy a je úplně jedno kde jsem byl přepnutý (selektovany).

Ing Jan Cinert

Poslat zprávu | Profil
[#245] | Publikováno: 03.03. 2010 - 21:00
Je to opravdu tak, jak jsem říkal, ale o trochu složitější. Nejprve je třeba zkopírovat vybraný objekt do schránky, pak vybrat sestavu, kam chcete kopírovat a teprve potom lze pomocí Paste vkládat do aktivní sestavy - (Pozor - CATIA.ActiveDocument je top objekt v okně, nikoliv aktivní produkt) - tu je třeba také určit (ještě by se měl ošetřit případ vkládání do Partu nebo vkládání sestavy do sebe samotné). V příloze je vzorová sestava k makru, vyzkoušejte.
Sub CATMain()

'nastavime prislusne objekty
Set oActiveDocument = CATIA.ActiveDocument
Set oTopProduct =oActiveDocument.Product
Set oL1SubProducts = oTopProduct.Products
Set oPart1 = oL1SubProducts.Item(1)
Set oProduct2 = oL1SubProducts.Item(2)
Set oL2SubProducts = oProduct2.Products
Set oPart2 = oL2SubProducts.Item(1)
Set oProduct3 = oL2SubProducts.Item(2)
Set oSelection = oActiveDocument.Selection
oSelection.Clear

'zde si vyberte co chcete vkladat, napr. Part1
oSelection.Add oPart1
'a zkopirujte to Do schranky
oSelection.Copy()
oSelection.Clear

'zjistime co je aktivni - parametr in v query
oSelection.Search ".,in"
Set oPasteIntoProduct = oSelection.Item(1).Value
oSelection.Clear

'vyberete tuto sestavu
oSelection.Add oPasteIntoProduct
'a zkopirujte Do ni objekt ze schranky
oSelection.Paste
oSelection.Clear
End Sub
Ing Jan Cinert

Poslat zprávu | Profil
[#246] | Publikováno: 03.03. 2010 - 21:02
Ještě ta příloha, kterou jsem slíbil...

Přiložené soubory:
copy_paste.zip

Pavel Krsek

Poslat zprávu | Profil
[#247] | Publikováno: 04.03. 2010 - 07:55
Uživatel odpovídá na příspěvek #246:

SUPER. Dekuji moc.
To presne jsem potreboval, jeste zkusim doladit to, jak jste sam naspal, aby se makro ukoncilo v pripade, ze je aktivni CATpart.

S pozdravem Pavel K.
Peter Kovac

Poslat zprávu | Profil
[#2720] | Publikováno: 21.03. 2012 - 14:08
zaujimava a prakticka vec, chcem sa spytat este na jednu moznost:

pri nastavovani prislusnych objektov je pouzite item(1), kde cislo znaci poradove cislo v strome. Konkretne:
Set oPart1 = oL1SubProducts.Item(1)

Co v pripade, ak nepoznam cislo, ale nazov objektu. Teda, ze viem, ze v strome je napr. product s nazvom XX, ale neviem kolky je v poradi a chcem ho skopirovat. Teda aby makro naslo produkt s danym nazvom a vykonalo operaciu vyssie uvedenu.
Ing Jan Cinert

Poslat zprávu | Profil
[#2721] | Publikováno: 21.03. 2012 - 16:40
Projdete všechny instance a porovnáváte název s tím co znáte, pokud je shoda, nalezl jste váš Part. Pak je tu ještě metoda GetItem("nazev"), která dokáže nalézt objekt v kolekci s konkrétním názvem. Navíc je to rychlejší, protože se nemusí procházet celá kolekce.


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.