Autor
|
Thema: CAA Selektions Problem (1892 mal gelesen)
|
Templer Mitglied System Engineer
Beiträge: 141 Registriert: 24.01.2003
|
erstellt am: 23. Aug. 2011 16:18 <-- editieren / zitieren --> Unities abgeben:
Also ich kann mir jetzt keinen reim mehr machen auf folgendes PRoblem: Ich habe Testweise ein simples selektions makro gebastelt.
Code: Sub CATMain() Dim Doc As Document Set Doc = CATIA.ActiveDocument Dim select As Selection Set select = Doc.Selection MsgBox select.Item2(1).Type End Sub
Wenn ich das Catscript über RUN ausführe funktioniert es einwandfrei. Binde ich es aber über eine CAA Toolbar ein>> Bleibt Catia stehen (kein absturz) man kann ab nun alle icons anklicken und sie werden nur orange. Als ob Catia den Baum nicht erkennen würde man kann im Baum selbst nichts anklicken und bekommt somit keinen Wert zurück. Ich habe das Problem offenbar immer dann wenn ich den user anweise etwas zu selektieren, egal in welchen macro auch immer. In den Catia Logfiles selbst steht nichts, auch in dem tracefile nicht. Es wird nur der aufruf des macros mitgeloggt aber das wars dann auch. Eine umgehung hatte ich mir auch schon überlegt. Ein Mini script in die CAA Toolbar einbinden und das Macro über das Mini script starten, fehlanzeige. Hatte jemand schon mal diesen effekt mit CAA?? PS: Egal ob CATScript oder CATVba immer das selbe ------------------ Non in omnes omnia conveniunt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 23. Aug. 2011 19:54 <-- editieren / zitieren --> Unities abgeben: Nur für Templer
Hallo Templer, ich habe zwar nicht dein Problem, welches du schilderst, aber mit deinem Code bekomme ich erst gar nichts zum Laufen (Kompilierungsfehler, "Description: Bezeichner erwartet; Statement: Dim select; Line: 5; Column: 12"). Ändere ich hingegen das select auf selection ab, läuft es bei mir: Sub CATMain() Dim Doc As Document Set Doc = CATIA.ActiveDocument Dim selection As Selection Set selection = Doc.Selection MsgBox selection.Item2(1).Type End Sub Wenn ich etwas vorselektiere und danach das Makro über ein zugewiesenes Icon in einer neu erstellten Toolbar klicke, kommt damit der Type als Box-Nachricht wie erwartet hoch. Läuft also in V5R19SP5. Womit versuchst du es? ------------------ Grüße aus dem Thurgau Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Templer Mitglied System Engineer
Beiträge: 141 Registriert: 24.01.2003
|
erstellt am: 24. Aug. 2011 07:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Ja du hast recht, mein code sieht so aus wie bei dir. Ich habs nur hier schnell reingetippt Die eigentlichen Scripte sind sowieso größer. In diesem Beispiel geht es mir ja nur darum, dass ich sowie eine Selektion ausgeführt werden soll über die CAA Toolbar zum stehen komme. Wie gesagt, führe ich das Macro über Tools>Macro>Run aus....funktionieren alle einwandfrei Ein Bild hab ich dazugetan um die auswirkung besser zu sehen. Die Toolbar wurde nicht auf dem herkömmlichen weg erstellt wie es ein benutzer machen würde, also "Tools > Customize" Über den weg würde es auch normal funktionieren...Nur CAA macht hier das Problem Catia V5R19SP03HF83 Aber gleiches Problem mit R17 oder 18... Ich nehme fast an, dass hier irgendeine Runtime von Windows gewaltig reinpfuscht...kann es aber nicht verifizieren, da keine Logfiles herauskommen ------------------ Non in omnes omnia conveniunt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Templer Mitglied System Engineer
Beiträge: 141 Registriert: 24.01.2003 Win 7, Catia V5 R19,22,23, Enovia VPM 1.6, Enovia 3dcom 19, Enovia V6 2013x, Catia V6 2013x
|
erstellt am: 24. Aug. 2011 14:54 <-- editieren / zitieren --> Unities abgeben:
Also mittlerweile habe ich folgendes herausgefunden: WEnn man über CAA Toolbars geht, beißt sich die Zeile InputObjectType(0) = "Body" Führe ich das Macro so aus, steckt Catia
Code: Sub CATMain() On Error Resume Next Dim oDocument As Document Set oDocument = CATIA.ActiveDocument Dim oselection As Selection Set oselection = oDocument.Selection MsgBox "Please select the Body to calculate" Dim InputObjectType(0) InputObjectType(0) = "Body" Status = oselection.SelectElement2(InputObjectType, "Select a Body", False) If (Status = "Cancel") Then MsgBox "Macro abortet" Exit Sub Else MsgBox oselection.Item2(1).Type end if End Sub
Führe ich das Macro so aus, funktioniert Catia
Code: Sub CATMain() On Error Resume Next Dim oDocument As Document Set oDocument = CATIA.ActiveDocument Dim oselection As Selection Set oselection = oDocument.Selection MsgBox "Please select the Body to calculate" Dim InputObjectType(0) 'InputObjectType(0) = "Body" (Auskommentiert) Status = oselection.SelectElement2(InputObjectType, "Select a Body", False) If (Status = "Cancel") Then MsgBox "Macro abortet" Exit Sub Else MsgBox oselection.Item2(1).Type end if End Sub
------------------ Non in omnes omnia conveniunt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 24. Aug. 2011 17:13 <-- editieren / zitieren --> Unities abgeben: Nur für Templer
Hallo Templer, gib mir mal mehr Input. :-) Also, das habe ich verstanden: Du hast ein simples Makro, welches die Selection verwendet. Dieses Makro ist ein CATVBA. Im Makro-Modus (Interpreter) vom CATIA über Tools --> Macro --> Macros läuft es. Nun baust Du ein CAA, welches eine Toolbar enthält, welche wiederum über einen Command das Makro ausführt und dann wird Dein CATIA unbrauchbar. Zunächst einmal, was passiert, wenn Du <ESC> zweimal hintereinander drückst, wenn CATIA in diesem Zustand ist? Dann wüsste ich gern wie Du das Makro in ein CAA eingebunden hast, denn ich denke hier wurde etwas vergessen, nicht im Makro selber. Stimmt der Input "Body" eigentlich oder hat die Klasse einen anderen Namen? Hast Du mal Messageboxen eingebaut um die genaue Stelle zu finden, oder kannst Du das makro im Debugger durchstep'en, wenn es über die Toolbar gestartet wird? Und damm zum Schluss, was Du bei Makros eben machen musst, wenn Du Variablen an eine Schnittstelle übergibst: Setz die Selection auf den Typ Object also Code:
Dim oselection As Object
Was auch noch sein könnte: CAA hat einen eigenen Namensraum, wenn Du die entsprechenden Module klar angribst, also INFTITF.Document und so, dann vermeit man überschneidungen. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Templer Mitglied System Engineer
Beiträge: 141 Registriert: 24.01.2003
|
erstellt am: 25. Aug. 2011 08:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Also das MAcro ist eigentlich schon wesentlich größer. Ich habe nur den Teil am Anfang herausgenommen, der das Problem verursacht und als Output nur eine Msg Box gemacht anstatt der restlichen funktion. Wenn ich 2x Esc drücke, passiert nichts. Catia steht weiterhin und verhält sich wie am Bild. Der Input Body stimmt, weil ja die Msg Box mir auch den Wert "Body" liefert (Item2(1).Type) In diesem Fall habe ich das Macro auf ein einfaches Catscript reduziert also nicht VBA. Was ansich aber egal ist, da sich der Code in beiden Fällen gleich verhält. Die MSg Box taktik hatte ich schon probiert, bringt aber nichts. Auf die Fehlerhafte Zeile bin ich gestoßen, nachdem ich das Macro schritt für schritt neu aufgebaut hatte. Das Problem tritt genau an der Stelle auf: Code: InputObjectType(0) = "Body"
kommentiere ich sie aus, funktioniert es. Debuggen über die Toolbar, wüsste ich nicht wie. Im VB Editor nützt das debuggen nichts, da ja das MAcro ohne toolbar wunderbar funktioniert CAA wurde von einem anderen erstellt, ich muss nur die icons liefern und mein Macro in einem Configfile eintragen. Was müsste ich da genau nachfragen? DAs Configfile: MagnaMacroConfigFile Zeile: G:\adm\tk\das\v5\all\makros\ABMASSE select_test_select.CATScriptEnvironment:
Code:
CAAPath=G:\adm\tk\das\v5\all\msf\CAAToolbar\1.2\R19\intel_a CATMsgCatalogPath=%CATMsgCatalogPath%;%CAAPath%\resources\msgcatalog CATDictionaryPath=%CATDictionaryPath%;%CAAPath%\code\dictionary CATDLLPath=%CATDLLPath%;%CAAPath%\code\bin CATGraphicPath=%CATGraphicPath%;%CAAPath%\resources\graphic\icons PATH=%PATH%;%CAAPath%\code\bin MagnaMacroConfig=%CAAPath%\..\..\MagnaMacroConfigFile
Wie ich die Selection als Object einfüge wie bei dir beschrieben, ändert sich auch nichts. Gleiches Verhalten.Das mit dem Namesraum habe ich nicht ganz verstanden, was muss ich da genau tun? ------------------ Non in omnes omnia conveniunt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 25. Aug. 2011 14:44 <-- editieren / zitieren --> Unities abgeben: Nur für Templer
Wenn das CAA nicht von euch kommt, dann würde ich mich an den Hersteller wenden. Was wir noch probieren können: CStr("Body") und eventuell mit einem Set davor. Was auch manchmal passiert bei solchen Sachen (mehrere Sprachen) ist dass die Arrays plötzlich nicht bei 0 sondern bei 1 anfrangen, also versuch mal ein größeres Array. Dass es genau in der Zeile InputObjectType(0) = "Body" abschmiert ist schon komisch. Debuggen und so funzt nicht, wenn ihr den Code nicht habt. Ansonsten gehen mir langsam die Ideen aus. :-( ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|