| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Innovationstag mit SolidCAM und Plogmann bei HEDELIUS in Meppen |
Autor
|
Thema: VBA markiertes Teil virutell machen (1447 mal gelesen)
|
wemasb Mitglied Quereinsteiger
Beiträge: 124 Registriert: 10.09.2012 SolidWorks 2018 Office 2010 AutoCAD 2007
|
erstellt am: 11. Sep. 2017 15:24 <-- editieren / zitieren --> Unities abgeben:
Hallo mal wieder, ich habe momentan etwas Schwierigkeiten und hoffe jemand von euch kann mir helfen. Wie kann ich ein bereits markiertes Teil in einer Baugruppe mittels VBA virtuell machen? Ich danke schon mal in voraus für jegliche Art von Hilfe :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Maler Mitglied Konstrukteur / CAD-Admin / Mädchen für alles
Beiträge: 720 Registriert: 17.01.2007 SWX 2019 SP5 AutoCAD 2019 Win 10 pro 64 bit Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz 64GB RAM Nvidia Quadro M5000 SWx EPDM
|
erstellt am: 11. Sep. 2017 15:46 <-- editieren / zitieren --> Unities abgeben: Nur für wemasb
|
wemasb Mitglied Quereinsteiger
Beiträge: 124 Registriert: 10.09.2012 SolidWorks 2018 Office 2010 AutoCAD 2007
|
erstellt am: 12. Sep. 2017 06:30 <-- editieren / zitieren --> Unities abgeben:
Danke für die schnelle Antwort Jens, aber irgendwie kriege ich es dennoch nicht gebacken Der erste Link bezieht sich ja auf markierte Flächen, Ecken, Kanten usw., für mich so leider keine Verwendbarkeit. Deinen zweiten Link hatte ich auch schon gefunden, werde aber nicht schlau draus. Bisher sieht mein Makro so aus... Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("Anschluss@Baugruppe1", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) End Sub Anschließend wollte ich Part.MakeVirtual() = True verwenden aber dann kommt Laufzeitfehler 438 (ich weiß... Makro-Recorder ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3682 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 12. Sep. 2017 06:44 <-- editieren / zitieren --> Unities abgeben: Nur für wemasb
Also ganz viel besser als Jens mit seinen 2 Links kann man Dir die Lösung nur auftischen, wenn man Dir die drei Zeilen (ohne Deklaration), die Du aus den Links kopieren musst, hier direkt hinschreibt. Möchtest Du das? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wemasb Mitglied Quereinsteiger
Beiträge: 124 Registriert: 10.09.2012 SolidWorks 2018 Office 2010 AutoCAD 2007
|
erstellt am: 12. Sep. 2017 06:51 <-- editieren / zitieren --> Unities abgeben:
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 12. Sep. 2017 07:35 <-- editieren / zitieren --> Unities abgeben: Nur für wemasb
Hallo, Code: Set Part = swApp.ActiveDoc
dir ist bewusst das in deiner Variablen "Part" die Baugruppe drin ist? Code: boolstatus = Part.Extension.SelectByID2("Anschluss@Baugruppe1", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Hier wird immer die gleiche Componente selektirert, ist das beabsichtigt? Code: Part.MakeVirtual()
Hier versuchst du die Hauptbaugruppe virtuell zu machen (da diese ja im Objekt "Part" drin steckt), was nicht möglich ist. Wenn du eine Componente selektierst musst du diese erst über den SelectionManager in eine Variable packen die du dann auch Virtuel machen kannst. Der Hinweis von Jens Ziel daraufhin ab das du ja wahrscheinlich Teile im Grafikbereich selektieren willst um sie dann virtuell zu machen, daher würde er über die selektierten Entities (Flächen, Kanten etc.) auf die dazugehörigen Komponenten gehen um diese dann Virtuell zu machen. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wemasb Mitglied Quereinsteiger
Beiträge: 124 Registriert: 10.09.2012 SolidWorks 2018 Office 2010 AutoCAD 2007
|
erstellt am: 12. Sep. 2017 07:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, die im boolstatus enthaltenen Teil- und Baugruppennamen werden über eine zuvor eingeladenen Textdatei in einen String geschrieben (boolstatus = Part.Extension.SelectByID2(String1 & "@" & String2, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Nach diesem Anwählen konnte ich über Part. schon mehrere Sachen machen, z.b. Part.EditDelete2 nur dieses MakeVirtual ralle ich einfach nicht Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3682 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 12. Sep. 2017 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für wemasb
ungetestet! Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim swSelectionMgr As SldWorks.SelectionMgr Dim swEntity As SldWorks.Entity Dim swComponent As SldWorks.Component2 Sub main() Set swApp = Application.SldWorks Set swSelectionMgr = swModel.SelectionManager Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("Anschluss@Baugruppe1", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Set swEntity = swSelectionMgr.GetSelectedObject6(1, -1) Set swComponent = swEntity.GetComponent boolstatus = swcomponent.MakeVirtual End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wemasb Mitglied Quereinsteiger
Beiträge: 124 Registriert: 10.09.2012 SolidWorks 2018 Office 2010 AutoCAD 2007
|
erstellt am: 12. Sep. 2017 12:22 <-- editieren / zitieren --> Unities abgeben:
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 12. Sep. 2017 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für wemasb
Hallo, sollte hier in deinem Fall auch eher "Part.SelectionManager" heisen. Wäre mir beim freihandtippen aber bestimmt auch passiert da die Deklaration mit swModel für diese Variable geläufiger ist wie Part. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3682 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 12. Sep. 2017 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für wemasb
|