| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Planen, Verwalten, Kostenoptimieren: Effizienter Layoutentwurf Ihrer Industrieanlagen mit Draftsight |
Autor
|
Thema: Makro Teil mit Feature erstellen (1577 mal gelesen)
|
4kspeed Mitglied
Beiträge: 91 Registriert: 27.10.2016 SW 2019 SP3.0 Windows 10 Pro 64bit CPU E3-1220 v5, Quadro M2000, 16GbRAM, 3DxWare 10.4.9, LGS 8.91.48
|
erstellt am: 26. Okt. 2017 08:59 <-- editieren / zitieren --> Unities abgeben:
Mit dem Makro kann ich schön Blöcke schnell erstellen, 2 Maße (Breite u. Höhe) angeben und fertig Code: Dim swApp As ObjectDim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = _ Application.SldWorks Set Part = swApp.ActiveDoc Set Part = swApp.NewDocument("*.prtdot", 0, 0, 0) 'Pfad zur Vorlage prtdot angeben swApp.ActivateDoc2 "Teil6", False, longstatus Set Part = swApp.ActiveDoc Dim myModelView As Object Set myModelView = Part.ActiveView myModelView.FrameWidth = 1845 myModelView.FrameHeight = 858 Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("XY Ebene", "PLANE", 0, 0, 0, False, 0, Nothing, 0) Part.SketchManager.InsertSketch True Part.ClearSelection2 True Dim vSkLines As Variant vSkLines = Part.SketchManager.CreateCornerRectangle(0, 0, 0, 7.85451284733713E-02, 5.46220523714466E-02, 0) Part.ClearSelection2 True boolstatus = Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 2.87630047930655E-02, 0.056004889140344, 0, False, 0, Nothing, 0) Dim myDisplayDim As Object Set myDisplayDim = Part.AddDimension2(3.73365927602293E-02, 0.061812803569713, 0) Part.ClearSelection2 True Dim myDimension As Object Set myDimension = Part.Parameter("D1@Skizze1") boolstatus = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 9.85915492957747E-02, 5.12323943661972E-02, 0, False, 0, Nothing, 0) Set myDisplayDim = Part.AddDimension2(0.134507042253521, 5.19366197183099E-02, 0) boolstatus = Part.Extension.SelectByID2("D1@Skizze1@Teil5.SLDPRT", "DIMENSION", 0, 0, 0, False, 0, Nothing, 0) Part.ClearSelection2 True Set myDimension = Part.Parameter("D2@Skizze1") Set Part = swApp.ActiveDoc Part.ClearSelection2 True boolstatus = Part.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, False, 4, Nothing, 0) Dim myFeature As Object Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.1, 0.001, False, False, False, False, 1.74532925199433E-02, 1.74532925199433E-02, False, False, False, False, True, True, True, 0, 0, False) Part.SelectionManager.EnableContourSelection = False Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("", "FACE", 6.0100898920723E-03, 1.37433190855631E-02, 4.77824756281962E-02, False, 0, Nothing, 0) Part.ActivateSelectedFeature boolstatus = Part.Extension.SelectByID2("D1@Aufsatz-Linear austragen1@Teil10.SLDPRT", "DIMENSION", 1.20895125400796E-02, -5.07369546274047E-03, 4.50857763946789E-02, False, 0, Nothing, 0) boolstatus = Part.Extension.SelectByID2("D1@Aufsatz-Linear austragen1@Teil10.SLDPRT", "DIMENSION", 3.15564772633854E-02, -1.85121320937828E-02, 4.46236310120849E-02, False, 0, Nothing, 0) End Sub
Das 3. Maß (Tiefe) muss ich allerdings manuell angegeben. Da hängst im Makro (nicht hier im Code). Muss man da ein Userform im Makro erstellen oder kann ich doch irgendwie das Linear Austragen (Tiefe) im normalen Makro mit Bemassungseingabe einbinden? 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: 26. Okt. 2017 09:52 <-- editieren / zitieren --> Unities abgeben: Nur für 4kspeed
Die Tiefe wird doch beim Feature erstellen festgelegt: Hier Die Tiefe ist dabei der Parameter D1 für Richtung 1 bzw. D2 für Richtung 2. Bei dir Code: Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.1, 0.001, False, False, False, False, 1.74532925199433E-02, 1.74532925199433E-02, False, False, False, False, True, True, True, 0, 0, False)
Sind das die Werte 0.1 und 0.001. Die kannst du ja vorher beliebig (per Userform z.B.) festlegen. Ganz andere Idee dazu: Speicher dir doch ein fertig modelliertes Teil inkl. Klotz als Vorlage ab. Diese kannst du dann per Makro öffnen und mußt nur noch die 3 Maße per Makro setzen. Wenn die Teile immer gleich sind, spart das viel Arbeit, vor allem beim Programmieren. Gruß, Jens ------------------ CSWA, CSWP, CSWPA-SM & -SU =) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jörg.jwd Ehrenmitglied V.I.P. h.c. CAD-PDM Administrator
Beiträge: 3109 Registriert: 05.11.2003
|
erstellt am: 26. Okt. 2017 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für 4kspeed
|
JLaier Mitglied Maschinenbautechniker
Beiträge: 63 Registriert: 21.08.2001 WIN 7-64 32GB RAM NVIDIA Quadro 4000 Intel Xeon E5-1620 8 Core 3.6GHz SolidWorks 2014 TopsWorks 6 Keytech 13 ABAS-EKS CSWP 06/2005
|
erstellt am: 27. Okt. 2017 14:23 <-- editieren / zitieren --> Unities abgeben: Nur für 4kspeed
|
4kspeed Mitglied
Beiträge: 91 Registriert: 27.10.2016
|
erstellt am: 02. Nov. 2017 14:13 <-- editieren / zitieren --> Unities abgeben:
Ich habe mit swCommand gelöst Code: Dim swApp As ObjectDim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = Application.SldWorks 'Neues Teil erstellen Set Part = swApp.ActiveDoc Set Part = swApp.NewDocument("*.prtdot", 0, 0, 0) 'Vorlagepfad angeben swApp.ActivateDoc2 "Teil1", False, longstatus Set Part = swApp.ActiveDoc Dim myModelView As Object Set myModelView = Part.ActiveView myModelView.FrameWidth = 1845 myModelView.FrameHeight = 858 'Skizze erstellen Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("XY Ebene", "PLANE", 0, 0, 0, False, 0, Nothing, 0) 'Ebene definieren Part.SketchManager.InsertSketch True Part.ClearSelection2 True Dim vSkLines As Variant vSkLines = Part.SketchManager.CreateCornerRectangle(0, 0, 0, 7.85451284733713E-02, 5.46220523714466E-02, 0) Part.ClearSelection2 True 'Linien erstellen und bemaßen boolstatus = Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 2.87630047930655E-02, 0.056004889140344, 0, False, 0, Nothing, 0) Dim myDisplayDim As Object Set myDisplayDim = Part.AddDimension2(3.73365927602293E-02, 0.061812803569713, 0) Part.ClearSelection2 True Dim myDimension As Object Set myDimension = Part.Parameter("D1@Skizze1") boolstatus = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 9.85915492957747E-02, 5.12323943661972E-02, 0, False, 0, Nothing, 0) Set myDisplayDim = Part.AddDimension2(0.134507042253521, 5.19366197183099E-02, 0) boolstatus = Part.Extension.SelectByID2("D1@Skizze1@Teil1.SLDPRT", "DIMENSION", 0, 0, 0, False, 0, Nothing, 0) Part.ClearSelection2 True Set myDimension = Part.Parameter("D2@Skizze1") 'Linear ausgetragener Aufsatz Set swModel = swApp.ActiveDoc Set swFeat = swModel.FirstFeature swFeat.Select2 False, -1 swApp.RunCommand swCommands_ExtrudedBossBase, "" End Sub
Dass ist der schnellste Weg einen Block/Blech Teil zu erstellen, ohne UserForm! Vorteil bei der Werteingabe werden alle 3 Maße nacheinander "vollmarkiert", somit wird die Maus auch noch geschont [Diese Nachricht wurde von 4kspeed am 02. Nov. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Delta1988 Mitglied Konstrukteur
Beiträge: 64 Registriert: 15.06.2012 SolidWorks 2017
|
erstellt am: 03. Nov. 2017 06:25 <-- editieren / zitieren --> Unities abgeben: Nur für 4kspeed
Hallo Zusammen, ich habe jetzt mal eine blöde frage... Ich finde das Makro hört sich cool an nur ich verstehe nicht ganz wie es funktioniert... Wie funktioniert es wen ich einen neuen Block mit dem Makro machen möchte.... lg Delta Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|