Autor
|
Thema: Objekte selektieren über Form (1804 mal gelesen)
|
FRANKV5 Mitglied
Beiträge: 15 Registriert: 06.07.2005
|
erstellt am: 16. Jun. 2006 11:12 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte während ein Makro läuft eine selektion vornehmen. Das funktioniert wenn ich den Makro ohne VBA-Form starte ja auch ganz gut. Allerdings geht es gar nicht, wenn ich den Makro in eine VBA-Form einbaue. Der Fehler wird immer beim "SelectElement2" angezeigt. Dim E As String E = CATIA.ActiveDocument.Selection.SelectElement2(Auswahl, "Linie wählen.", True) Gruß
Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
serrano Mitglied Student
Beiträge: 27 Registriert: 06.12.2005
|
erstellt am: 16. Jun. 2006 16:34 <-- editieren / zitieren --> Unities abgeben: Nur für FRANKV5
Hi, Ich habe noch nicht mit selektionen gearbeitet. Aber Ich habe eine Idee die Villeicht dir helfen könnte. Ich dachte villeciht solltest du den Befehl in Schritte zerteilen: Set ActDoc = CATIA.ActiveDocument Set ActSelec = ActDoc.Selecion Dim E As String E = ActSelec.SelectElement2(Auswahl, "Linien wählen.", True) ich habe es mir so gedacht, weil es so beim abrufen der DateiName einer Instanz funktioniert. Set MyItem = CATIA.Documents.Item(x) Dim FileName As String FileName = MyItem.Name Momentan habe ich kein CATIA am Rechner un kann dir nicht weiter helfen. Höffentlich Hilft dir mein Beitrag. ------------------ mfg, serrano Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FRANKV5 Mitglied
Beiträge: 15 Registriert: 06.07.2005
|
erstellt am: 16. Jun. 2006 21:32 <-- editieren / zitieren --> Unities abgeben:
Hi serrano, vielen Dank erstmal für die Antwort. Hat aber leider nicht funktioniert, auch nach einen kleinen Umbau des Skripts nicht. Die Fehlermeldung erscheint immer noch beim SelectElement2. Vielleicht hast Du ja noch eine Idee. Gruß und schönes Wochenende Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 19. Jun. 2006 06:34 <-- editieren / zitieren --> Unities abgeben: Nur für FRANKV5
Hallo, wenn du einen Blick in die Online Doku riskierst wirst du feststellen, das das so auch gar nicht funktionieren kann. Du musst zuerst einmal definieren, welcher Object Typ vom User selektiert werden kann. Im Bsp. mal ein Achsensystem, kann aber sonst alles sein. Auch mehrere unterschiedliche (das Array muss dann größer 0 sein). Bsp.: Language="VBSCRIPT"
Sub CATMain() Dim InputObjectType(0) Dim Status, oRoot, oSelection Set oRoot = Catia.ActiveDocument Set oSelection = oRoot.Selection InputObjectType(0) = "AxisSystem" Status = oSelection.SelectElement2(InputObjectType, "Select", False) If (Status <> "Normal") Then MsgBox "Abbruch. ", 16, "Error" Else Set oSelectedElement = oSelection.Item(1).Value Set oParent = oSelection.FindObject("CATIAProduct") oSelection.Clear oSelection.EndSelectElement MsgBox oSelectedElement.Name & " in " & oParent.Name & " wurde ausgewählt. ", 64, "Info" End If End Sub Hoffe das hilft dir weiter. Gruss TomTom ------------------ tomtom1972 [Diese Nachricht wurde von tomtom1972 am 19. Jun. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FRANKV5 Mitglied
Beiträge: 15 Registriert: 06.07.2005
|
erstellt am: 22. Jun. 2006 21:38 <-- editieren / zitieren --> Unities abgeben:
Hallo TomTom, vielen Dank für die Antwort. Leider konnte ich es erst heute probieren, aber ich muss sagen das sieht sehr gut aus. Du hast das ganze viel einfacher als ich aufgebaut und vor allem funktioniert es auch. Nur leider muss ich die VB-Form erst schließen bevor ich die Selektion vornehmen kann. (Den Makro starte ich dabei über einen CommandButton.) Hast Du vielleicht eine Idee was ich probieren kann? Gruß Frank
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 23. Jun. 2006 06:42 <-- editieren / zitieren --> Unities abgeben: Nur für FRANKV5
Hallo, du musst nicht erst die Form schliessen. Du kannst die Form "Modal" or "NonModal" starten, d.h. einmal blockt sie das Script (und wartet auf die User-Interaktion) und einmal läuft das Script einfach weiter. Bsp: FRM_UserSelection.Show vbModeless '--- Form wartet nicht auf Unload FRM_UserSelection.Show vbModal '--- Form wartet auf Unload (OK-Button oder so was) Die Selektionsaufforderung der .SelectElement2 oder ...3 Methode in der CATIA-Befehlszeile ist eher für die Füße - deshalb bedienen wir uns ja überhaupt bei VisualBasic, oder? Also. Ich mache das immer so: -Form im vbModeless laden -Do Loop Until Schleife in der die Selektion selbst eingebettet wird -Schleife wird verlassen bei korrekter Selektion -Form im vbModal umschalten -User muss OK Button drücken -Form Unload Zwei Sachen sind dabei hilfreich: -Form "always on Top" laden (immer im Bildschirm Vordergrund) mit Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Ist das bekannt? Nach dem Laden der Form Catia aktivieren, damit der User wie gewohnt selektieren kann und nicht erst rumklicken muss (mit AppActivate ("CATIA V5")) Falls es nicht klappt, melde dich.
Gruss TomTom
------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FRANKV5 Mitglied
Beiträge: 15 Registriert: 06.07.2005
|
erstellt am: 23. Jun. 2006 13:57 <-- editieren / zitieren --> Unities abgeben:
|
FRANKV5 Mitglied
Beiträge: 15 Registriert: 06.07.2005
|
erstellt am: 23. Jun. 2006 23:58 <-- editieren / zitieren --> Unities abgeben:
Hallo TomTom, also Modal bzw. Modeless einzubinden ist mir leider nicht gelungen. Ich habe es dann einfach mal mit frm.hide und frm.show probiert und das hat sogar funktioniert. Nur eines stört mich noch: Nach dem ersten selektieren des Buttons (für eine Selektion) erscheint noch mal ein Hinweis was ausgewählt werden darf. Gibt es eine Möglichkeit, das ab dem zweiten Drücken des Buttons dieser Hinweis (MsgBox) nicht mehr erscheint? Gruß Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 27. Jun. 2006 06:48 <-- editieren / zitieren --> Unities abgeben: Nur für FRANKV5
|
jkendl007 Mitglied
Beiträge: 2 Registriert: 14.11.2019
|
erstellt am: 15. Nov. 2019 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für FRANKV5
Hallo tomtom1972, wie machst Du das mit dem "Form im vbModal umschalten", etwas so? FRM_UserSelection.Hide FRM_UserSelection.Show vbModal Wie genau machst Du die Do Loop Until Schleife? Super wäre, wenn Du einen Beispielcode posten könntest. Danke, Josef Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |