Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro Teil mit Feature erstellen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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



Sehen Sie sich das Profil von 4kspeed an!   Senden Sie eine Private Message an 4kspeed  Schreiben Sie einen Gästebucheintrag für 4kspeed

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Teil_erstellen.png

 
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 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
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


Sehen Sie sich das Profil von CAD-Maler an!   Senden Sie eine Private Message an CAD-Maler  Schreiben Sie einen Gästebucheintrag für CAD-Maler

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für 4kspeed 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von jörg.jwd an!   Senden Sie eine Private Message an joerg.jwd  Schreiben Sie einen Gästebucheintrag für joerg.jwd

Beiträge: 3109
Registriert: 05.11.2003

erstellt am: 26. Okt. 2017 13:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für 4kspeed 10 Unities + Antwort hilfreich

...ich denke dass das mit Bibliotheksfeature am einfachsten zu realisieren ist.

------------------
Grüße

Jörg

man hat nie Zeit es richtig zu machen, aber immer genug Zeit es nochmals zu machen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

JLaier
Mitglied
Maschinenbautechniker


Sehen Sie sich das Profil von JLaier an!   Senden Sie eine Private Message an JLaier  Schreiben Sie einen Gästebucheintrag für JLaier

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für 4kspeed 10 Unities + Antwort hilfreich

Hallo

Ich bin begeistert. Was habe ich mich die letzten 15 Jahre geplagt, nur weil ich dieses Makro nicht hatte. Vielen Dank für den Beitrag.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

4kspeed
Mitglied



Sehen Sie sich das Profil von 4kspeed an!   Senden Sie eine Private Message an 4kspeed  Schreiben Sie einen Gästebucheintrag für 4kspeed

Beiträge: 91
Registriert: 27.10.2016

erstellt am: 02. Nov. 2017 14:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich habe mit swCommand gelöst  

Code:
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

'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


Sehen Sie sich das Profil von Delta1988 an!   Senden Sie eine Private Message an Delta1988  Schreiben Sie einen Gästebucheintrag für Delta1988

Beiträge: 64
Registriert: 15.06.2012

SolidWorks 2017

erstellt am: 03. Nov. 2017 06:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für 4kspeed 10 Unities + Antwort hilfreich

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz