| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Mit komplexer Geometrie und organischen Formen arbeiten |
Autor
|
Thema: Makro dxf import (1422 mal gelesen)
|
GVolker Mitglied
Beiträge: 4 Registriert: 10.05.2017
|
erstellt am: 10. Mai. 2017 22:47 <-- editieren / zitieren --> Unities abgeben:
Hallo, bin ein kleiner Anfänger was SolidWorks angeht. Arbeite viel mit AutoCAD und ISYCam. Ich würde gerne meine DXF files automatisch als Skizze in ein Bauteil importieren. Nur wenn ich das Makro aufzeichne und ein dxf file importiere klappt das zwar bei der Aufzeichnung , aber beim abspielen bleibt später die Skizze leer. Kann mir das einer erklären? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 11. Mai. 2017 06:51 <-- editieren / zitieren --> Unities abgeben: Nur für GVolker
Hallo, sollte machbar sein, hier nur ein paar wichtige Grundsatzfragen: 1. Sind das unterschiedliche dxf oder ist es immer die gleiche? 2. Ist die Skizze zum Startzeitpunkt des Macros bereits aktiv? 3. Auf welche Ebene soll die dxf eingefügt werden bei nicht aktiver Skizze? 4. Soll eine Batch Abarbeitung ablaufen oder nur einzelne dxf separat? In der API Hilfe gibt es für den ersten Ansatz ein gutes Beispiel dazu >Hier entlang<. 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 |
GVolker Mitglied
Beiträge: 4 Registriert: 10.05.2017
|
erstellt am: 11. Mai. 2017 17:28 <-- editieren / zitieren --> Unities abgeben:
Hi, danke für die schnelle Antwort : zu 1. es sind immer die gleichen benamungen der dxf files.(für unterschiedliche Projekte) zu. 2. ich habe nur einen Rohling als model. klicke auf die Ebene und füge dann die Skizzen ein welche dann mit einem Feature versehen werden. zu3. siehe 2 glaube ich zu 4 was ist eine Batch Abarbeitung ?? sorry hoffe das ist keine so schlimme Frage. Danke.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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. Mai. 2017 07:20 <-- editieren / zitieren --> Unities abgeben: Nur für GVolker
Hallo, Zitat: zu 4 was ist eine Batch Abarbeitung ?? sorry hoffe das ist keine so schlimme Frage.
Das heißt ob du z.B. das Macro auf eine Liste von Datein (Datein in einem Ordner) automatisch der Reihe nach anwenden willst, sowas wie der Taskplaner von SWX zum konvertieren der Datein. Aber aus deiner Frage würde ich die Antwort "nein" vermuten. Hast du mal das von mir verlinkte Macro getestet evtl. mit einer test dxf von dir? Eine Grundsatzfrage, wieso muss es eine DXF sein? Du könntest diese doch einmalig einfügen und dann zu einem Block (alternativ Bibliotheksfeature) umwandeln und dann über die Standard SWX Funktionen ziemlich geschmeidig in mehreren Teilen verwenden? Gruß Bernd 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 |
GVolker Mitglied
Beiträge: 4 Registriert: 10.05.2017
|
erstellt am: 12. Mai. 2017 22:21 <-- editieren / zitieren --> Unities abgeben:
Jo die Anleitung aus der API hat mir sehr weitergeholfen. Läuft mittlerweile. Leider finde ich gerade keine einfache Methode den Skizzennamen gleich mit umzubenennen. Kann es sein das dieser immer Markiert sein muss oder bin ich da wieder zu blöd. Bei Google finde ich nur meterlangen Code. Dachte aber eher an sowas einfaches wie setName "XXX". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GVolker Mitglied
Beiträge: 4 Registriert: 10.05.2017
|
erstellt am: 13. Mai. 2017 23:39 <-- editieren / zitieren --> Unities abgeben:
H, sry das ich nochmal störe. Habe da leider doch noch einen kleinen Fehler. Ich weiß nur noch nicht wie ich den weg bekomme. Und zwar bekomme ich das ImportData nicht in meine aktuelle baugruppe rein sondern das Makro erstellt jedes mal eine neue Baugruppe. Und wenn ich es über den Feature Manager importiere habe ich es zwar in der Baugruppe aber nicht mit den importData Einstellungen. Hier der Code : Sub main() Set swApp = _ Application.SldWorks Set Part = swApp.ActiveDoc Dim myModelView As Object Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized boolstatus = Part.Extension.SelectByID2("", "FACE", 0.33559972235372, 0.221830771072007, 9.99999999982037E-03, False, 0, Nothing, 0) Dim filename As String Dim longerrors As Long Dim retVal As Boolean filename = "D:\3D_test\xxx.dxf" Dim importData As SldWorks.ImportDxfDwgData Set importData = swApp.GetImportFileData(filename) ' Import method importData.ImportMethod("") = Part.FeatureManager.InsertDwgOrDxfFile("D:\3D_Doku_test\075mil.dxf") importData.LengthUnit("") = SwConst.swLengthUnit_e.swMM Dim myFeature As Object Set myFeature = Part.FeatureManager.InsertDwgOrDxfFile("D:\3D_Doku_test\075mil.dxf") ' Gets Debug.Print "Part Sketch Gets:" Debug.Print " Add constraints: " & importData.AddSketchConstraints("") Debug.Print " Merge points: " & importData.GetMergePoints("") Debug.Print " Merge distance: " & (importData.GetMergeDistance("") * 1000#) & " mm" Debug.Print " Import dimensions: " & importData.ImportDimensions("") Debug.Print " Import hatch: " & importData.ImportHatch("") 'Sets Debug.Print "Part Sketch Sets:" importData.AddSketchConstraints("") = True Debug.Print " Add constraints: " & importData.AddSketchConstraints("") retVal = importData.SetMergePoints("", True, 0.000002) Debug.Print " Merge points: " & retVal Debug.Print " Merge distance: " & (importData.GetMergeDistance("") * 1000#) & " mm" importData.ImportDimensions("") = True Debug.Print " Import dimensions: " & importData.ImportDimensions("") importData.ImportHatch("") = True Debug.Print " Import hatch: " & importData.ImportHatch("") Part.ClearSelection2 True Part.SketchManager.InsertSketch True End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Absolvent / Trainee Konstruktion & Entwicklung (m/w/d) | Seit über 50 Jahren bringen wir Menschen mit dem zusammen, was sie begeistert. In unseren sechs Fachbereichen Maschinen- und Anlagenbau, Fahrzeugtechnik, Energietechnik, Elektrotechnik sowie Bauwesen & TGA bringen unsere Mitarbeiter ihr Know-How genau dort ein, wo es gebraucht wird - in abwechslungsreichen Engineering-Projekten. Werden auch Sie Teil des Teams und verbinden Sie das klassische Ingenieurwesen mit der digitalen Zukunft.... | Anzeige ansehen | Konstruktion, Visualisierung |
|
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: 15. Mai. 2017 07:54 <-- editieren / zitieren --> Unities abgeben: Nur für GVolker
Hallo Volker, laut API-Hilfe sollte die Methode "InsertDwgOrDxfFile" bei Baugruppen eigentlich garnicht funktionieren. Hab mal das Macro etwas gekürzt, optisch überarbeitet, auf die neuere "InsertDwgOrDxfFile2" umgestellt und am Ende wird der Name der Skizze auch gleich geändert in derzeit "SketchName". Dieses Mmacro funktioniert aber nur bei Teilen (Parts) nicht bei Baugruppen (assemblies). Code:
Dim swApp As SldWorks.SldWorks Dim swModelDoc As ModelDoc2 Dim importData As ImportDxfDwgData Dim swFeature As Feature Dim boolstaus As BooleanSub main() Set swApp = Application.SldWorks Set swModelDoc = swApp.ActiveDoc filename = "D:\3D_Doku_test\075mil.dxf" Set importData = swApp.GetImportFileData(filename) importData.ImportMethod("") = SwConst.swImportDxfDwg_ImportMethod_e.swImportDxfDwg_ImportToExistingPart importData.LengthUnit("") = SwConst.swLengthUnit_e.swMM importData.AddSketchConstraints("") = True boolstatus = importData.SetMergePoints("", True, 0.000002) importData.ImportDimensions("") = True importData.ImportHatch("") = True Set swFeature = swModelDoc.FeatureManager.InsertDwgOrDxfFile2(filename, importData) swModelDoc.ClearSelection2 True swModelDoc.SketchManager.InsertSketch False swFeature.Name = "SketchName" swModelDoc.ViewZoomtofit2 boolstatus = swModelDoc.ForceRebuild3(False) End Sub
------------------ --- 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 |