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

Nespojitý element vytvořený makrem

Kompletní přehled příspěvků v tématu Nespojitý element vytvořený makrem řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Ing Jan Cinert

Poslat zprávu | Profil
Datum: 23.7. 2010 | Zobrazeno: 3994x
Konfigurace CATIA:

Text dotazu:
Zdravím,
dneska jsem narazil na problém. Vytvářím makrem "mrtvý" join, který se i v případě nespojitého elementu vytvoří jako jedna plocha (křivka). Pokud se při vytváření joinu přímo v Catii zatrhne volba Create Datum, vytvoří se na rozdíl od prvního případu více ploch v počtu jednotlivých nespojitých oblastí.
V některých případech mi to nijak nevadí, ale jindy bych rád měl každou oblast jako samostatnou plochu. Funkce Disassemble není makrem dostupná (sice dá spustit pomocí StartCommand, ale zase skončíme u dialogu, který chce potvrdit) a Copy - PasteSpecial plochu taky nerozdělí.

Věděl by někdo jak na to?

Jan Svoboda

Poslat zprávu | Profil
[#919] | Publikováno: 23.07. 2010 - 08:58
Ahoj, když použiješ StartCommand tak ten dialog můžeš potvrdit
SendKeys “{ENTER}”, True
(nějak takhle to bude). Jinak by se možná dala použít funkce Extract, ale to si nejsem jistý, jestli by to pro tebe bylo vhodny.
Ing Jan Cinert

Poslat zprávu | Profil
[#920] | Publikováno: 23.07. 2010 - 09:15
Extract by asi zafungoval, ale pokud bych ho vytvářel zase mrtvý, myslím že by výsledek byl stejný (jedna naspojitá plocha).
Jinak píšu to ve VB2008; pokud byste věděl jak nasimulovat ještě stisknutí tlačítka myši, také by mi to (sice v něčem úplně jiném) pomohlo.
Jan Svoboda

Poslat zprávu | Profil
[#921] | Publikováno: 23.07. 2010 - 11:48
Tohle by ti mohlo pomoct, ale sám jsem to zatim nikde nepoužíval :
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
[#922] | Publikováno: 23.07. 2010 - 12:04
Vyzkouším, uvidím. Pak sdělím pocity a dojmy...
Ing Jan Cinert

Poslat zprávu | Profil
[#927] | Publikováno: 23.07. 2010 - 19:10
Tak jsem to vyzkoušel, simulace funguje, myš kliká. Dostat ji ale na místo v dialogu, kde se má opravdu kliknout (když se dialog otevře pokaždé někde jinde) je naprosto nereálné.
Takže si zatím o ovládání formulářů myší můžu nechat zdát.

Uvidíme, třeba někdo poradí. Nicméně díky za návod.
Jan Svoboda

Poslat zprávu | Profil
[#928] | Publikováno: 23.07. 2010 - 19:44
Vím, že je funkce která vrací polohu formuláře a to polohu od levého horního rohu obrazovky k levému hornímu rohu formuláře, ale nevím jestli by se to dalo naaplikovat na catijácký formuláře.
Ing Jan Cinert

Poslat zprávu | Profil
[#929] | Publikováno: 23.07. 2010 - 20:55
Pokud by VB nějak dokázal formulář, zacílit oblast pro kliknutí by už bylo snadné. Zkusím se zeptat na VB fóru, třeba poradí.
Ing Jan Cinert

Poslat zprávu | Profil
[#936] | Publikováno: 26.07. 2010 - 00:47
Tak jsem na to nakonec přišel. V HybridShapeFactory existuje funkce AddNewDatums - z plochy vytvoří instance podle počtu nespojitých oblastí a uloží je do pole. Tyto se pak vloží do setů pomocí AppendHybridShape(prvek pole) jako Datum feature. V podstatě to nahrazuje funkci Disassemble, ale jen její druhou volbu Domains only.

Ukázka kódu:
MultiDomainShapes = oHybridShapeFactory.AddNewDatums(oReference)

For i = 0 To UBound(MultiDomainShapes)
oSubSet.AppendHybridShape(MultiDomainShapes(i))
Next
Kamil

Poslat zprávu | Profil
[#937] | Publikováno: 26.07. 2010 - 10:15
Všimol som si že tu píšete o nejakom Visual Basic fóre. Na akej adresa to prosím Vás nájdem?
Jan Svoboda

Poslat zprávu | Profil
[#938] | Publikováno: 26.07. 2010 - 10:22
... na www.vbnet.cz.


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.