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

Aktivace partu/produktu v sestavě

UživatelPříspěvek
Ing Jan Cinert

Poslat zprávu | Profil
Datum: 5.4. 2010 | Zobrazeno: 11634x
Konfigurace CATIA:

Text dotazu:
Nevěděl by někdo, jak makrem aktivovat označený part/produkt v sestavě? Zkoušel jsem to přes CATIA.StartCommand() pomocí příkazu Edit, ale nevím jestli to vůbec jde ani jaká je správná syntaxe.

Jan Svoboda

Poslat zprávu | Profil
[#375] | Publikováno: 05.04. 2010 - 20:38
Ten příkaz by měl vypadat CATIA.StartCommand("Edit"), ale problem je, že zrovna v tomhle případě to nefunguje. Taky jsme hledali řešení aktivace, ale nikde jsme nic nenašli...
Ing Jan Cinert

Poslat zprávu | Profil
[#376] | Publikováno: 05.04. 2010 - 20:49
Přesně to jsem zkoušel, když to udělám přímo v Catii, chvíli se něco děje, ale výsledek žádný. V makru většinou jen chyba.
Narazil jsem na případy, kdy potřebuju v průběhu makra měnit aktivitu. Zatím to tedy vypadá na neřešitelný problém, co?
Zkoušel jsem to i změnou WorkBench, ale to funguje jen z Part Design na Assembly Design (zaktivuje se uzel instance Partu). Obráceně se otevře nový Part.
Jan Svoboda

Poslat zprávu | Profil
[#378] | Publikováno: 05.04. 2010 - 21:11
Projižděl jsem cad.de a na nic jsem tam taky nanarazil. Co to makro má přesně dělat?
Ing Jan Cinert

Poslat zprávu | Profil
[#380] | Publikováno: 05.04. 2010 - 21:47
Píšu makro na kopírování geometrie do vybraného setu v jiném partu. Předtím se ještě vytvoří samostatný set (název sestavený z vybraných vlastností zdrojového partu) a po nakopírování se před původní názvy geometrie vloží také prefix složený z vlastností zdroje (pro metodiku DC). Používám funkce SelectElement2 a SelectElement3. Problém vzniká, když je před kopírováním aktivní Part - vybrané elementy pak nelze zkopírovat do schránky. Musím tedy předtím aktivovat nějakou sestavu, proto ten dotaz. Řeším to pomocí CATIA.StartWorkBench("Assembly") - aktivuje se instance aktivního partu a to stačí.
Ale i tak by mě zajímalo jestli se ta aktivace dá nějak provést.
Ing Jan Cinert

Poslat zprávu | Profil
[#381] | Publikováno: 05.04. 2010 - 22:00
Jenom pro zajímavost krátká videoukázka, jak by to mělo vypadat. Ještě bych chtěl, aby se po kopírovaní zaktivoval cílový part, aby se uživatel nemusel proklikávat.

Přiložené soubory:
dc_copy_paste.zip

Jan Svoboda

Poslat zprávu | Profil
[#387] | Publikováno: 06.04. 2010 - 11:45
Ještě mě napadlo, zkusit to udělat tak, že makro vybere ten part, a pak spustí simulaci dvojkliku. Teoreticky by to mohlo fungovat...
Ing Jan Cinert

Poslat zprávu | Profil
[#388] | Publikováno: 06.04. 2010 - 12:28
Dobrá myšlenka. Mohl byste mi ještě poradit, jak se provede ta simulace dvojkliku?
Jan Svoboda

Poslat zprávu | Profil
[#390] | Publikováno: 06.04. 2010 - 12:38
Já jsem to teda nikdy nepoužil, ale našel jsem tohle:
Declare Sub mouse_event Lib "user32" AliAs "mouse_event" _

(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, _
ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Public Const MOUSEEVENTF_ABSOLUTE = &H8000 'absolutní pohyb
Public Const MOUSEEVENTF_LEFTDOWN = &H2 'stisk levého tlačítka
Public Const MOUSEEVENTF_LEFTUP = &H4 'uvolnění levého tlačítka
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20 'stisk středního tlačítka
Public Const MOUSEEVENTF_MIDDLEUP = &H40 'uvolnění středního tlačítka
Public Const MOUSEEVENTF_MOVE = &H1 'pohyb myši
Public Const MOUSEEVENTF_RIGHTDOWN = &H8 'stisk pravého tlačítka
Public Const MOUSEEVENTF_RIGHTUP = &H10 'uvolnění pravého tlačítka

Příklady použití:
'Koordináty X a Y se vztahují k obrazovce, ne k formuláři
mouse_event MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, x, y, 0, 0

mouse_event MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, x, y, 0, 0

mouse_event MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, x, y, 0, 0
Ing Jan Cinert

Poslat zprávu | Profil
[#392] | Publikováno: 06.04. 2010 - 13:25
Hm, tak z toho nejsem dvakrát moudrý. Není třeba mít ještě kurzor nad produktem? Pak by to asi bylo opravdu neřešitelné...
Jan Svoboda

Poslat zprávu | Profil
[#409] | Publikováno: 09.04. 2010 - 16:46
Zkusim to dneska otestovat, tak uvidim jak dopadnu, pokud by musel ten kurzor být nad produktem tak by to asi neslo...
Jan Svoboda

Poslat zprávu | Profil
[#410] | Publikováno: 11.04. 2010 - 15:09
tak se mi to nepodařilo, takhle to asi nepude...
Ing Jan Cinert

Poslat zprávu | Profil
[#413] | Publikováno: 11.04. 2010 - 15:46
I kdyby se to povedlo, tak nechápu, proč tak banální věc nejde udělat normálně. I samotné zjištění, který produkt je aktivní, dělám přes Search. Prošel jsem celý manuál k makrům a nikde nic není.
Zkoušel byc jít přes ten příkaz Edit, ale zatím se mi nepovedlo příjít na to jak ho použít ani v samotné CATII.
Jan Svoboda

Poslat zprávu | Profil
[#417] | Publikováno: 11.04. 2010 - 21:08
Ještě mě napadlo, když vybereš tem part a pustiš CATIA.StartWorkbench("PrtCfg", vybraný part se ti aktivuje, už to tam používáš obráceně, pro aktivaci instance,celkem to funguje... Ale přes ten Edit to nepude, ještě jsem se díval jestli by proto nešla nastavit klávesová zkratka, ale ani to nejde...
Ing Jan Cinert

Poslat zprávu | Profil
[#418] | Publikováno: 11.04. 2010 - 23:33
A zkoušel jsi to? Mě se takhle pokaždé otevřel nový part, tak jsem tuhle možnost rovnou zavrhnul, ale nevím jestli jsem měl ten part předtím vybraný. Kdyby to takhle šlo tak je to naprosto dostatečný.
Jan Svoboda

Poslat zprávu | Profil
[#420] | Publikováno: 12.04. 2010 - 07:41
JJ zkoušel, ten part musíš mít vybraný a pokud není vytvoří to nový part, chová se to stejně jako když to děláš ručně...
Ing Jan Cinert

Poslat zprávu | Profil
[#421] | Publikováno: 12.04. 2010 - 15:48
Aha, no tak pak je to vyřešený. Co mi to stálo času...
Roman

Poslat zprávu | Profil
[#2135] | Publikováno: 16.08. 2011 - 15:09
Zdravím, na aktivaci (předem vybraného) Partu, Produktu nebo Komponentu mi spolehlivě funguje následující:
Sub CATMain()

SendKeys "c:FrmActivate" & Chr(10)
End Sub

pozn.: nespouštět z okna kódu (F5), jinak se text pošle právě sem a v CATII se nic neprovede

.... snad je to pro vás ještě aktuá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.