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

script (makro) Paste special As Result

Kompletní přehled příspěvků v tématu script (makro) Paste special As Result řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Tomáš Ludvík

Poslat zprávu | Profil
Datum: 2.3. 2016 | Zobrazeno: 10070x
Konfigurace CATIA: V5 R20, SP7.20, CAC+MCE

Text dotazu:
Dobrý den,
našla by se tu prosím nějaká dobrá duše, která by mě napsala script pro PASTE SPECIAL -> AS RESULT :? Ideálně s vyvoláním zprávy při neoznačení cíle.
Funkčnost si představuji následovně:
a) copy PartBody v jednom partu (ručně ctrl+c)
b) označení partu pro vložení
c) vyvolání makra PSAR přes zkratku

Moje představa scriptu:

Attribute VB_Name = "Paste_Special_As_Result"
Sub CATMain()

Set oSel = CATIA.ActiveDocument.Selection

If oSel.Count = 0 Then

MsgBox ("Neni vybrana instance pro paste special as result!")

Exit Sub

End If

CATIA.StartCommand ("Paste Special") set ("As Result")

End Sub

Ing Jan Cinert

Poslat zprávu | Profil
[#5644] | Publikováno: 02.03. 2016 - 20:28
Dobrý den,

zapomněl jste napsat, kde chcete kopírovat. Jen v rámci Partu nebo v sestavě?

V Partu je to celkem jedno, ale při kopírování / vkládání v sestavě musí být - oproti tomu jak je to když kopírujete manuálně - aktivní sestava, tj. zapnuté prostředí Assembly design, jinak kopírování padne.

Navíc Paste je interaktivní, vždycky musíte vybrat cíl kopírování.

V praxi tedy nějak takhle - pro sestavu (otestováno - neošetřeno): Vyzkoušejte to třeba pro kopírování Body. Cíl vyberte jiný Part.

Sub CATMain()

Set oSel = CATIA.ActiveDocument.Selection
oSel.Clear()
' kontrola prostredi ASD - kdyz neni, spustime ho
If (CATIA.GetWorkbenchID() <> "Assembly") Then
oSel.Add(CATIA.ActiveDocument.Product)
CATIA.StartWorkbench("Assembly")
End If
' filtr pro kopirovane objekty - nastavime na vse
Dim ObjSel(0)
ObjSel(0) = "AnyObject"
' vyber kopirovaneho
Status = oSel.SelectElement2(ObjSel, "Vyberte kopirovane ... ", false)
If (Status = "Cancel") Then
Exit sub
End If
oSel.Copy()
' vyber cile
Status = oSel.SelectElement2(ObjSel, "Vyberte cil ... ", false)
If (Status = "Cancel") Then
Exit sub
End If
' a konecne vlozeni
oSel.PasteSpecial("CATPrtResultWithOutLink")
oSel.Clear()

CATIA.ActiveDocument.Product.ReferenceProduct.Update()
End Sub
Tomáš Ludvík

Poslat zprávu | Profil
[#5646] | Publikováno: 03.03. 2016 - 08:48
Děkuji mnohokrát funguje to perfektně !!!
Potřebuji to přesně jak jste to napsal, tělo z jednoho partu do jiného v partu a to i mezi sestavami.
Stačí mít označenou vrcholovku a můžu kopírovat bez linků jak vzteklej :)
Tomáš Ludvík

Poslat zprávu | Profil
[#5647] | Publikováno: 03.03. 2016 - 09:53
Dokonce to vložení funguje i tak, že už není potřeba strom, stačí kliknout kamkoliv na grafiku partu do kterého chci makrem zkopírované tělo vložit.
Ještě jednou mnohokrát děkuji !!! Ušetřil jste mi trilion kliknutí :)
Ing Jan Cinert

Poslat zprávu | Profil
[#5648] | Publikováno: 03.03. 2016 - 14:25
Rádo se stalo. Ještě to můžete vylapšit tak, že před druhým výběrem zadáte do filtru jen typ Part - ObjSel(0) = "Part", a tím eliminujete chybu při výběru něčeho jiného. Stejně tak při prvním výběru lze nastavit ObjSel(0) = "Body".
Tomáš Ludvík

Poslat zprávu | Profil
[#5960] | Publikováno: 06.09. 2016 - 14:59
Dobrý den,
po nějaké době jsem tento script znovu oprášil a začal mě házet nějakou chybu spojenou s updatem (přikládám screen), nevíte prosím čím by to mohlo být?
Přitom kolegovi funguje bez tohoto eroru. Možná jen nějaká změna nastavení, která u mě proběhla, ale nemůžu odhalit jaká.

Přiložené obrázky:

Ing Jan Cinert

Poslat zprávu | Profil
[#5961] | Publikováno: 07.09. 2016 - 22:32
Dobrý den,

v makru chyba nebude, na to je to moc primitivní. Pravděpodobně se z nějakého důvodu nepodaří Update celé sestavy - chyba může být v kterémkoliv jiném partu v sestavě. Makro spustí update, ten neprojde a proto spadne.

Zkontrolujte si data nebo zkuste na nějakých jednoduchých, jestli to bude fungovat. Nastavení by nemělo mít vliv.

Popř. zakomentujte poslední řádek s updatem sestavy, funkčnost se v zásadě nezmění, jen budete muset po konci kopírování provést update manuálně.


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.