| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: igs-Import per Makro (1188 mal gelesen)
|
Tommes01 Mitglied Konstrukteur
Beiträge: 749 Registriert: 21.02.2003
|
erstellt am: 13. Dez. 2013 16:15 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bin relativ unerfahren im Programmieren, deshalb folgende (einfache?) Frage: Ich möchte per Makro eine iges-Datei importieren. Der Pfad der iges-Datei ist in einer Expression vorhanden. Der Dateiname ist nicht bekannt, d.h. sie soll per Exlorer (in vorgegebenem Pfad) ausgewählt werden. Wie ist das machbar? Danke für eure Hilfe. Tommes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tommes01 Mitglied Konstrukteur
Beiträge: 749 Registriert: 21.02.2003 Solid Edge 2021 MP4 NX 1953 NX 2206 (Test)
|
erstellt am: 16. Dez. 2013 14:47 <-- editieren / zitieren --> Unities abgeben:
|
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 16. Dez. 2013 18:01 <-- editieren / zitieren --> Unities abgeben: Nur für Tommes01
Hallo Tommes, der Ansatz wird vermutlich ohne grundsätzliche Kenntnisse deinerseits nicht viel nützen, dennoch mal der Versuch: Die Expression auszulesen geht direkt über Expobj.Equation. Das ergibt einen String. Der kann einem FileOpenDialog als Startverzeichnis mitgegeben werden. Sobald der Dialog geöffnet und ein Dateiname angegeben wird, kommt wieder ein String zurück. Der wiederum kann als Name der Iges-Datei verwendet werden. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tommes01 Mitglied Konstrukteur
Beiträge: 749 Registriert: 21.02.2003
|
erstellt am: 17. Dez. 2013 14:14 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank... mit ein wenig probieren hab ich die Dateiauswahl per Verzeichnisbaum jetzt hinbekommen. Jetzt hab noch folgendes Problem beim Import der Datei: Was muss ich beim Import als OutputFile angeben um immer in das jeweilig aktuelle File zu importieren? igesImporter1.OutputFile = xxx Gruß Tommes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 17. Dez. 2013 17:54 <-- editieren / zitieren --> Unities abgeben: Nur für Tommes01
|
Tommes01 Mitglied Konstrukteur
Beiträge: 749 Registriert: 21.02.2003
|
erstellt am: 21. Jan. 2014 09:58 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich hab den iges-Import per Makro leider immer noch nicht hinbekommen. Ich hänge nach wie vor am igesImporter1.OutputFile =??? Ich will die iges Datei in das momenatan aktive prt einlesen. Beim Übergeben eines leeren Strings kommt folgende Fehlermeldung (siehe Anhang). Kann mir jemand weiterhelfen? Gruß Tommes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pleudel Mitglied Projektleiterin
Beiträge: 156 Registriert: 28.11.2011 Windows 7 UG NX 10 (auch Daimler) Visual Basic 2013 Express Programmierung in NX und ProE/Creo
|
erstellt am: 21. Jan. 2014 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für Tommes01
Hallo, gib für "OutputFile" mal eine temporäre Datei an, z.B.: "C:\temp\import_iges.prt" Ich hab auch mal ein Programm für den IGES-Import geschrieben. Ich bin mir nicht mehr ganz sicher, aber ich glaube, da wird einfach temporär diese Datei erstellt und danach wieder automatisch gelöscht, zumindest finde ich in meinem Code keine direkte Anweisung zum Löschen! Wenn es nicht klappt, sag nochmal Bescheid, dann poste ich mal den ganzen Code! Viel Erfolg! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tommes01 Mitglied Konstrukteur
Beiträge: 749 Registriert: 21.02.2003
|
erstellt am: 21. Jan. 2014 10:57 <-- editieren / zitieren --> Unities abgeben:
Hi pleudel, danke für deine Hilfe. Hab es mit der temporären Datei mal probiert. Jetzt importiert er zwar was, ich weiß allerdings nicht wohin... Die temporäre Datei ist nach Ablauf des Makros nicht mehr da und im aktiven prt ist auch nichts angekommen. Wäre super, wenn du deinen Code mal posten könntest! Gruß Tommes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pleudel Mitglied Projektleiterin
Beiträge: 156 Registriert: 28.11.2011 Windows 7 UG NX 10 (auch Daimler) Visual Basic 2013 Express Programmierung in NX und ProE/Creo
|
erstellt am: 21. Jan. 2014 11:05 <-- editieren / zitieren --> Unities abgeben: Nur für Tommes01
So, hier mein Code: Private Sub Import_IGES(Datei As String) Dim markId1 As Session.UndoMarkId markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Start") Dim igesImporter1 As IgesImporter '---------------------------Abfrage, welche NX-Version gerade geöffnet ist (weil bei uns mehrere Versionen im Einsatz sind), mittlerweile glaube ich aber, dass es auch einfach mit einer .def geht, was da der Unterschied ist, weiß ich leider nicht... If theSession.GetEnvironmentVariableValue("UGII_FULL_VERSION").Contains("v7.5") Then igesImporter1.SettingsFile = "D:\UGNX75\iges\igesimport.def" ElseIf theSession.GetEnvironmentVariableValue("UGII_FULL_VERSION").Contains("v8.0") Then igesImporter1.SettingsFile = "D:\UGNX8\IGES\igesimport.def" ElseIf theSession.GetEnvironmentVariableValue("UGII_FULL_VERSION").Contains("v8.5") Then igesImporter1.SettingsFile = "D:\UGNX85\IGES\igesimport.def" End If
'---------------------------diverse Einstellungen igesImporter1 = theSession.DexManager.CreateIgesImporter() igesImporter1.CopiousData = IgesImporter.CopiousDataEnum.LinearNURBSpline igesImporter1.SmoothBSurf = True igesImporter1.LayerDefault = 1 igesImporter1.GeomFixupTol = 0.0127 igesImporter1.ObjectTypes.Curves = True igesImporter1.ObjectTypes.Surfaces = True igesImporter1.ObjectTypes.Solids = True igesImporter1.ObjectTypes.Annotations = True igesImporter1.ObjectTypes.Structures = True igesImporter1.SimplifyGeometry = True theSession.SetUndoMarkName(markId1, "Import from IGES Options Dialogfenster") igesImporter1.ImportTo = IgesImporter.ImportToEnum.WorkPart igesImporter1.InputFile = Datei
'--------------------------- besagtes Outputfile igesImporter1.OutputFile = "C:\temp\import_iges.prt" Dim markId2 As Session.UndoMarkId markId2 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Import from IGES Options")
igesImporter1.FileOpenFlag = False igesImporter1.LayerMask = "0-99999" Dim nXObject1 As NXObject nXObject1 = igesImporter1.Commit() theSession.DeleteUndoMark(markId2, Nothing) theSession.SetUndoMarkName(markId1, "Import from IGES Options") igesImporter1.Destroy() End Sub Ich muss hier allerdings erwähnen, dass in ein bereits geöffnetes Part importiert wird! Ist das bei dir auch der Fall oder wohin willst du exportieren? Dann müssen wir den Code noch etwas anpassen, und zwar ein leeres Part erstellen bzw. ein vorhandenes Startpart irgendwohin kopieren und dann dort hinein importieren! Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischer Produktdesigner (m/w/d) Automatisierungstechnik | Die igus GmbH ist ein inhabergeführtes Unternehmen mit Hauptsitz im Großraum Köln. Als ?Hidden Champion? sind wir ein internationaler agierender Hersteller von technischen Produkten aus Hochleistungskunststoffen. Unsere Produkte sind vielseitig und lassen sich in über 50 verschiedenen Branchen wiederfinden, darunter in der Automobilindustrie, der Raumfahrt oder im 3D-Druck. Die Kommunikation zwischen unseren weltweit über 4.... | Anzeige ansehen | Produktdesign, Industriedesign |
|
Tommes01 Mitglied Konstrukteur
Beiträge: 749 Registriert: 21.02.2003
|
erstellt am: 21. Jan. 2014 13:21 <-- editieren / zitieren --> Unities abgeben:
|