Autor
|
Thema: Makro zum Selektieren eines neuen Stützelement's (1591 mal gelesen)
|
Vladi1991 Mitglied Student
Beiträge: 9 Registriert: 16.11.2015 Win10 Pro 64 Intel Xeon E3-1231v3 3,4GHz 8GB NVidia GTX 970 Catia V5R19
|
erstellt am: 16. Nov. 2015 10:52 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich versuche mich gerade an einem Makro, bei dem der Benutzer eine Fläche oder Eben auswählen kann und diese dann als neues Stützelement für eine Skizze benutzt wird. Probleme sind: -Bei der Makroaufnahme, zur Auswahl eines neuen Stützelements, wird die Skizze bezogen, die beim durchführen ein Fehler ausgibt und als "Nothing" angezeigt wird. -Das zweite Problem ergibt sich bei Selektion, denn wenn ich das richtig Verstanden habe, definiere ich meine Selektion als String. Wie kann ich diese Selektion mit der Makroaufnahme kombinieren? Weiter Information: Ich arbeite im Sheetmetaldesign. --------Die Makroaufnahme:--------- Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part 'part1.Update Dim bodies1 As Bodies Set bodies1 = part1.Bodies Dim body1 As Body Set body1 = bodies1.Item("Hauptkörper") Dim shapes1 As Shapes Set shapes1 = body1.Shapes Dim solid1 As Solid Set solid1 = shapes1.Item("Sperre.Ausschnitt") Dim sketch1 As Sketch Set sketch1 = solid1.GetItem("Sperre.Skizze") 'Fehler part1.UpdateObject sketch1 End Sub -----Der Programmcode für die Selektion:----- 'Selektion definieren und leeren Dim uSel As Selection Dim uSelLB As Object Dim selTyp(1) As Variant Dim sState As String selTyp(0) = "Plane" selTyp(1) = "Face" Set uSel = CATIA.ActiveDocument.Selection Set uSelLB = uSel uSel.Clear sState = uSelLB.SelectElement2(selTyp, "Ebene o. Fläche", False) If sState = "Normal" Then MsgBox ("Klappt") Else MsgBox ("Falsch") End If ____________________ Wäre echt klasse wenn jemand mir helfen könnte. Bin leider noch ein Amateur was das angeht. Gruß Vladi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 16. Nov. 2015 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für Vladi1991
Hi Vladi, :-[ SelectElement2 mag 'as Selection' nicht. Ausserdem ist nicht klar, wozu uSel gut ist. Probier mal:
Code:
-----Der Programmcode für die Selektion:----- 'Selektion definieren und leeren ' Dim uSel As Selection Dim uSelLB As Object Dim selTyp(1) As Variant Dim sState As String selTyp(0) = "Plane" selTyp(1) = "Face" ' oder "PlanarFace" ' Set uSel = CATIA.ActiveDocument.Selection Set uSelLB = CATIA.ActiveDocument.Selection ' uSel.Clear uSelLB.Clear sState = uSelLB.SelectElement2(selTyp, "Ebene o. Fläche", False) If sState = "Normal" Then MsgBox ("Klappt") Else MsgBox ("Falsch") End If
Ausserdem: Sketches auf Faces zu beziehen ist keine gute Idee. Tschau, Joe ------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 16. Nov. 2015 12:03 <-- editieren / zitieren --> Unities abgeben: Nur für Vladi1991
Hallo Vladi, kleiner Nachtrag. Probier bitte
Code:
Sub CATMain()Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part 'part1.Update Dim bodies1 As Bodies Set bodies1 = part1.Bodies Dim body1 As Body Set body1 = bodies1.Item("Hauptkörper") 'Dim shapes1 As Shapes 'Set shapes1 = body1.Shapes 'Dim solid1 As Solid 'Set solid1 = shapes1.Item("Sperre.Ausschnitt") Dim sketch1 As Sketch Set sketch1 = body1.sketches.Item("Sperre.Skizze") 'part1.UpdateObject sketch1 'wozu der update? End Sub
Kann es sein, dass Du nicht den VBA-Editor verwendest? Tschau, Joe ------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Vladi1991 Mitglied Student
Beiträge: 9 Registriert: 16.11.2015 Win10 Pro 64 Intel Xeon E3-1231v3 3,4GHz 8GB NVidia GTX 970 Catia V5R19
|
erstellt am: 16. Nov. 2015 12:04 <-- editieren / zitieren --> Unities abgeben:
Danke für die Hilfe. Mit dem neuen Code spar ich einiges ein, da ich es jetzt auch sehe, dass viel unnötig war. Jedoch komme ich leider noch nicht weiter, was die Änderung des Stützelements angeht. Die Idee ist, dass ein Makro ein Ausschnitt mit dazugehöriger Skizze und Parameter in mein Part reinkopiert und der Benutzer nur auswählt worauf der Ausschnitt/Skizze erstellt werden soll. Das Kopieren und Selektieren klappt an sich schon, nur die Weiterverwendung und Änderung des Stützelements macht mir zu schaffen. Gruß Vladi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Nov. 2015 12:24 <-- editieren / zitieren --> Unities abgeben: Nur für Vladi1991
|
Vladi1991 Mitglied Student
Beiträge: 9 Registriert: 16.11.2015 Win10 Pro 64 Intel Xeon E3-1231v3 3,4GHz 8GB NVidia GTX 970 Catia V5R19
|
erstellt am: 16. Nov. 2015 12:25 <-- editieren / zitieren --> Unities abgeben:
Danke Joe leider taucht immer noch eine Fehlermeldung auf und Debug markiert mir die "Set sketch1..."-Zeile. Aber die Skizze selber liegt ja auch nicht direkt im Hauptkörper, sondern ist meinem Ausschnitt untergeordnet. Kann es vielleicht daran liegen ? Gruß Vladi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Vladi1991 Mitglied Student
Beiträge: 9 Registriert: 16.11.2015 Win10 Pro 64 Intel Xeon E3-1231v3 3,4GHz 8GB NVidia GTX 970 Catia V5R19
|
erstellt am: 16. Nov. 2015 12:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, danke für Deinen Tipp. Ich hab es schon damit versucht, jedoch denke ich nicht, dass Powercopy für spätere Anwendung so gut wie das Makro sein kann, da ich im Makro zum Beispiel in der UserForm schon Parameter direkt eingeben und festlegen kann. Außerdem hatte ich noch paar Problem mit Powercopy, da im nächsten Schritt auch eine Wand an Kante am Ausschnitt angebracht werden soll und er mir die zwei Schritte nicht kombienieren konnte. Durch das Makro versuche ich das weitgehend zu automatisieren, sodass zu Beginn nur Parameter festgelegt werden sollen und im Verlauf zunächst Fläche, dann Kante selektiert werden zur Erstellung. Gruß Vladi Achja verwende den Visual Basic Editor. [Diese Nachricht wurde von Vladi1991 am 16. Nov. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 16. Nov. 2015 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für Vladi1991
OK. Wie heisst die Skizze? Was bekommst Du im Immediate-Window auf
Code:
? catia.ActiveDocument.part.bodies.item(1).sketches.item(1).name
Es sollte der Name des ersten Sketches des ersten Bodies des aktiven PartDocs sein. (Gegebenenfalls anpassen) Deinem Code nach zu urteilen müsste da 'Sperre.Skizze' kommen. Wenn's geht, bitte noch einen Screenshot vom Baum mit Part, Body und Sketch. Tschau, Joe ------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Vladi1991 Mitglied Student
Beiträge: 9 Registriert: 16.11.2015 Win10 Pro 64 Intel Xeon E3-1231v3 3,4GHz 8GB NVidia GTX 970 Catia V5R19
|
erstellt am: 16. Nov. 2015 15:55 <-- editieren / zitieren --> Unities abgeben:
Ja richtig der Name ist Sperre.Skizze. Bekomme Fehlermeldung "Object doesn´t support this property or method". Versuche den Screenshot mal als Anhang hoch zu laden. Genaugenommen ist es die zweite Skizze, jedoch selber Fehler. Gruß Vladi [Diese Nachricht wurde von Vladi1991 am 16. Nov. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Nov. 2015 18:51 <-- editieren / zitieren --> Unities abgeben: Nur für Vladi1991
|
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 16. Nov. 2015 19:04 <-- editieren / zitieren --> Unities abgeben: Nur für Vladi1991
Hi Vladi, gemeint war, dass 'Sperre.Skizze' als Ergebnis zurückgegeben wird. Und zwar auf: ? catia.ActiveDocument.part.bodies.item(1).sketches.item(1).name Probier mal:
Code:
Sub Catmain() Dim oADP As Part Dim oMainBody As Body Dim oSK As Sketch Set oADP = CATIA.ActiveDocument.Part Set oMainBody = oADP.Bodies.Item("Hauptkörper") Set oSK = oMainBody.Sketches.Item("Sperre.Skizze") MsgBox oSK.Name End Sub
Voraussetzungen: Geöffnetes Part mit einer Skizze 'Sparre.Skizze' im PartBody(Hauptkörper). Tschau, Joe ------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Vladi1991 Mitglied Student
Beiträge: 9 Registriert: 16.11.2015 Win10 Pro 64 Intel Xeon E3-1231v3 3,4GHz 8GB NVidia GTX 970 Catia V5R19
|
erstellt am: 16. Nov. 2015 19:31 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, die Zuweisung stimmt jetzt für die Skizze. Bekomme den Namen der Skizze in der MsgBox angezeigt beim durchlaufen. Jetzt frag ich mich nur noch, wie ich dieser Skizze ein (neues) Stützelement zuweisen kann, dass der Benutzter selektiert hat. Jemand eine Idee ? Vielen Dank an diese Stelle an Euch. Gruß Vladi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 16. Nov. 2015 19:45 <-- editieren / zitieren --> Unities abgeben: Nur für Vladi1991
|