Autor
|
Thema: Catia-Checkbox über winapi ansprechen schlägt fehl (1286 mal gelesen)
|
Tom667 Mitglied CAD-Methodiker
Beiträge: 10 Registriert: 16.02.2018 Core i7-7820HQ - 32GB RAM nvidia Quadro P3000 Win 10 Pro Catia R19-R29 / 3DX_2020x VB.net/VBA/CATScript/KWA/KBE/RPA
|
erstellt am: 30. Okt. 2019 10:23 <-- editieren / zitieren --> Unities abgeben:
Hallo winapi-Experten, ich möchte in VBA über die winapi/win32 die checkbox "Merge all bodies of each part in one body" der Catia-Funktion "Generate CATPart from Product" ansprechen. Funktioniert soweit - allerdings nur "optisch", also auf der GUI. D.h. die checkbox wird wie gewünscht über die winapi an- bzw. abgewählt, aber Catia akzeptiert die Eingabe nicht. Nach dem Bestätigen des Dialogfensters mit "OK" wird die Funktion "Generate CATPart from Product" normal ausgeführt - allerdings wird die winapi-Änderung an der checkbox ignoriert. konkretes Bsp.: Die Winapi schaltet die (zuvor ausgeschaltete) Checkbox EIN, das Ergebnis nach Ausführen von "Generate CATPart from Product" ist aber als wäre die checkbox ausgeschaltet gewesen (siehe Bild im Anhang). (Da sich Catia die letzte Einstellung der checkbox merkt, bestätigt ein erneute Öffnen der Funktion "Generate CATPart from Product", dass die Änderung der checkbox nicht angenommen wurde. Hier steht die checkbox wieder auf AUS). Wie schaffe ich es, dass Catia die Änderung an der checkbox über winapi schluckt? Mein Code (debug-fähig):
Code:
Option ExplicitPrivate Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare PtrSafe Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Const GW_HWNDCHILD = 5 Const GW_HWNDLAST = 1 Const BM_SETCHECK = 241 Const BST_CHECKED = &H1 Sub CATMain() Dim hWnd As Long hWnd = FindWindow(vbNullString, "Generate CATPart from Product") 'folgende handler über GetWindow, da FindWindowEx hier nicht funktionert Dim hOK As Long hOK = GetWindow(hWnd, GW_HWNDCHILD) Dim hPartOptions As Long hPartOptions = GetWindow(hOK, GW_HWNDLAST) Dim hMerge As Long hMerge = GetWindow(hPartOptions, GW_HWNDCHILD) Call SendMessage(hMerge, BM_SETCHECK, BST_CHECKED, 0) End Sub
(CatiaV5 R24 SP4 HF88) Danke und Grüße, Tom ------------------ Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom667 Mitglied CAD-Methodiker
Beiträge: 10 Registriert: 16.02.2018 Core i7-7820HQ - 32GB RAM nvidia Quadro P3000 Win 10 Pro Catia R19-R29 / 3DX_2020x VB.net/VBA/CATScript/KWA/KBE/RPA
|
erstellt am: 06. Nov. 2019 07:46 <-- editieren / zitieren --> Unities abgeben:
Servus zusammen, ich konnte dank cad.de schon einige spezielle Programmieraufgaben lösen, für die ich nirgends anders eine Lösung gefunden habe. Bin begeistert von dem Forum. Da dies (oben) mein erster eigener Beitrag ist, bin ich jetzt etwas überrauscht : habe ich die Frage falsch gestellt oder ist das Thema zu speziell? Hat tatsächlich niemand eine Idee? (hätte wohl mit einer einfacheren Frage einsteigen sollen ) Jegliches feedback wäre sehr willkommen Mir würde schon weiterhelfen, wenn jemand das Verhalten bestätigen könnte. Wäre sehr wenig Aufwand, da der Code so wie oben gepostet so lauffähig ist. Dann kann ich zumindest ausschließen, dass es an irgendwelchen Systemeinstellungen hier liegt. Grüße, Tom ------------------ Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 07. Nov. 2019 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für Tom667
Moin, ich habe deinen Code gerade mal in V5R21 getestet und kann das von dir beschriebene Verhalten bestätigen. Leider habe ich was das Ansprechen von CATIA Dialogen in dieser Art keine Erfahrungen. Sorry! Nachtrag: Habe gerade gemerkt das CATIA die Bodies auch nicht zusammenbaut wenn ich die Checkbox von Hand aktiviere. Mit welchem Release bist du diesbezüglich unterwegs? Nachtrag 2: R27 = selbes Verhalten. Gruß Randle ------------------ Wer für nichts steht, fällt für alles! [Diese Nachricht wurde von Randle am 07. Nov. 2019 editiert.] [Diese Nachricht wurde von Randle am 07. Nov. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom667 Mitglied CAD-Methodiker
Beiträge: 10 Registriert: 16.02.2018 Core i7-7820HQ - 32GB RAM nvidia Quadro P3000 Win 10 Pro Catia R19-R29 / 3DX_2020x VB.net/VBA/CATScript/KWA/KBE/RPA
|
erstellt am: 11. Nov. 2019 07:02 <-- editieren / zitieren --> Unities abgeben:
Hi Randle, danke für deinen Test. Ich arbeite gerade in CatiaV5 R24 (SP4 HF88). Das Verhalten, dass Catia nichtmal beim manuellen Aktivieren der Checkbox die Bodies zusammenbaut, kann ich nicht bestätigen. Das funktioniert bei mir immer. Sorry für die blöde Frage, aber bist du sicher, dass du darauf geachtet hast: Nur Bodies aus ein und demselben Part werden zusammengebaut. Funktioniert also nur, wenn du mehrere Bodies (oder Geosets) ein einem Part hast. Habe das von dir beschriebene Verhalten ("manuell") und meinen Code jetzt nochmal in R18 (SP8 HF33) und R29 (SP3 HF5) getestet. Selbes Ergebnis: Manuell funktioniert's immer, per Code nie. Mein Problem scheint also Release-unabhängig. Gruß, Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|