Aufzeichnen in STEP mit einem Makro

Hallo ihr alle

Ich habe derzeit ein Makro, das eine 3D-Datei mit einer Familie von Teilen öffnet, die der Benutzer in einer Liste ausgewählt hat, sowie die zugehörige Zeichnung.
In einigen Fällen benötigen meine Kollegen die Datei möglicherweise im STEP-Format, daher wende ich mich zur Klärung an Sie, um diesen Vorgang mit einem Makro durchzuführen. Folgendes möchte ich tun: 

- Bieten Sie dem Benutzer die STEP-Dateiaufzeichnung des bereits geöffneten Teils über einen "OptionButton" an,
- Wenn der Button ausgewählt ist, möchte ich die Datei in STEP unter einem anderen Namen speichern: STEP_"Name vorher pro Benutzer eingegeben"
- In einer anderen Datei, die nur STEP auf dem Server hosten soll, mit einem einfachen Pfad C:\Users\.......\STEP\STEP_"Name, der zuvor pro Benutzer eingegeben wurde". SCHRITT

Ich habe bereits den Makrorekorder durchgesehen, aber ich bekomme nur: 

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
longstatus = Part.SaveAs3("C:\Users\cbr\Desktop\CAO W25\STEP\STEP.STEP", 0, 0)
End Sub

Aber kommt mir das ganz leicht vor oder ist es wirklich "so einfach"?

Ich wollte auch mit dem Makro von .PL http://www.lynkoa.com/tutos/3d/macro-enregistrer-sous-avec-solidworks  schauen, aber ich denke, es ist zu komplex für meinen Fall.

Also würde ich gerne wissen, ob mir bitte jemand helfen könnte? 

Vielen Dank!

Hallo

Auch hier ist alles in der API-Hilfe von SW: http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldocextension~saveas.html

und um die Exportoptionen festzulegen: http://help.solidworks.com/2017/english/api/swconst/filesaveasstepoptions.htm

Schönen Tag

4 „Gefällt mir“

Also ja, das ist es auch, aber nein, es wird nichts für Sie sein, weil Sie im maco cbr durch den Benutzernamen ersetzen müssen, der theoretisch bei jedem Beitrag anders ist, es ist das einzige Problem, das ich sehe, ah und auch eine Variable für den Dateinamen :)

 

EDIT a priori diese Zeile würde Ihr Problem mit verschiedenen Umgebungsvariablen beantworten

MsgBox CreateObject("WScript.Shell").specialfolders("Desktop")

 

2 „Gefällt mir“

Zunächst einmal vielen Dank für Ihre Antworten!

Remrem Ich habe die Frage direkt im Forum gestellt, weil ich dachte, dass ich schneller Lösungen finden würde, da die Dinge bereits erledigt waren (was auch der Fall ist). Und vermeiden Sie es, auf die Erklärungen der API zu stoßen (was auch der Fall ist..), weil ich die Parameter Option und ExportData nicht verstehe. Ich verstehe noch weniger, warum diese Syntax beim Rekorder nicht beachtet wird.

MaD, dieser Aufzeichnungspfad ist temporär für meine Tests, aber in Wirklichkeit wird es ein Ort auf dem Server sein, also denke ich, dass er dieses Problem löst. Die Variable mit dem Namen ist bereits erstellt und wird :) verwendet.
Ich verstehe nicht wirklich, was diese Linie macht? A quo icorrespond ("WScript.Shell") bitte?

1 „Gefällt mir“

SA ermöglicht es Ihnen, ein bestimmtes Objekt zu erstellen, das es Ihnen ermöglicht, Systemvariablen abzurufen, wir sind uns der reinen Programmierung sicherer als des SW-Makros

2 „Gefällt mir“

Okay, danke für Ihre Erklärung. 

Sie glauben also, dass die vom Rekorder angegebene Codezeile ausreicht? Ich werde versuchen.

Wenn es nur für einen Export in Schritt ja danach ist, wie auf dem remrem-Link  , können Sie eine Option erzwingen, wenn Sie sie benötigen

2 „Gefällt mir“

Auch hier hängt es von Ihrem Ziel ab.

Wenn Sie ein einfaches Speichern unter und Schritt durchführen möchten. Davon abgesehen sehe ich nicht wirklich den Sinn darin, ein Makro für drei Klicks zu erstellen...

Wenn Sie die Einstellungen erzwingen möchten, um sicherzustellen, dass Ihr Export so ist, wie Sie es möchten und nicht gemäß den PC-Einstellungen, dann wird alles in der Hilfe erklärt.

Versuchen Sie, einen Code wie erklärt zu schreiben und wenn Sie auf ein Problem stoßen. Kommen Sie zurück zu uns und wir werden versuchen, es Ihnen zu erklären oder zu beraten... ;-)

2 „Gefällt mir“

Das ist genau mein Ziel, nun, es geht nicht darum, 3 Klicks zu vermeiden, sondern darum, immer den gleichen Ordnernamen, Dateinamen und den gleichen Datensatzpfad zu haben.

Also habe ich die einfache Lösung ausprobiert und sie funktioniert in einem Fall, aber nicht in einem anderen:
 

'Pour l'enregistrement en fichier STEP
                         If Check_step.Value = True Then
                            EnregistrementSTEP = Part.SaveAs3("C:\Users\cbr\Desktop\CAO W25\STEP\STEP_" & ActiveConfiguration & ".STEP", 0, 0)
                            MsgBox "Le fichier STEP a été enregistré dans le dossier suivant : C:\Users\cbr\Desktop\CAO W25\STEP" & Chr(10) & "Sous le nom suivant : STEP_" & ActiveConfiguration, vbInformation, "Emplacement du fichier"
                         End If

Ich habe genau den gleichen Code. In einem Fall funktioniert es und im anderen erhalte ich die Fehlermeldung "Laufzeitfehler '91'", aber ich sehe nicht, was falsch ist. Wahrscheinlich ein undefiniertes Element, aber ich sehe es nicht.

Hallo

Ich habe gerade herausgefunden, dass die SaveAs3-Methode im Jahr 2017 veraltet ist. Wir müssen jetzt dies verwenden: http://help.solidworks.com/2017/english/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IModelDocExtension~SaveAs.html

Au! Ich muss einen Teil meiner Bewerbung in VB.net überprüfen....

Bearbeiten: Achten Sie auf diesen Absatz:

"Um als IGES-, STL- oder STEP-Datei zu speichern, muss das zu konvertierende Dokument das aktive Dokument sein. Bevor Sie diese Methode aufrufen:

  1. Rufen Sie ISldWorks::ActivateDoc3 auf, um das Dokument in das aktive Dokument zu konvertieren.
  2. Rufen Sie ISldWorks::ActiveDoc auf, um das aktive Dokument abzurufen."

Verdammt, es stimmt, dass sich der Code je nach SW-Version ändert...
Ich bin im Jahr 2015, also funktioniert SaveAs3 zu Hause, aber SaveAs funktioniert nicht...
Ja, danke, das ist mir aufgefallen, nachdem ich meinen Kommentar gepostet habe.

Gibt es eine Möglichkeit, eine vorhandene Tabelle, die es Ihnen ermöglicht, "veraltete Methoden" zu kennen, bitte? Denn ohne das wird es mir Probleme bereiten.

Dazu können Sie in der Hilfe die Zielversion über das Dropdown-Menü oben rechts ändern.

Beispiel: Wenn ich zu 2015 wechsle, ist SaveAs3 immer noch veraltet. Wenn ich es 2010 versuche, ist es nicht verfügbar.

1 „Gefällt mir“

Guten Abend

Äh, die veralteten Funktionen sind nicht mehr nutzbar. Ich verwende immer noch vba-Makros in SaveAs2 auf SW2016 und es funktioniert sehr gut (für Exporte in step, stl, iges, pdf)

2 „Gefällt mir“

Hallo Cyril.f

Vielen Dank für Ihre Klarstellung. Ich werde mich damit befassen, um zu sehen, woher das Problem kommt.

Die Verfügbarkeit oder Nichtverfügbarkeit einiger SW-Funktionen hängt von der referenzierten DLL ab.

Aus dem Arbeitsspeicher erstellt VBA keine Kopie der referenzierten DLLs, sondern verwendet die verfügbare. Es kann vorkommen, dass einige Funktionen in neueren DLLs entfernt wurden.

Dassault macht sich nicht die Mühe, seine DLLs zu reparieren, sondern fügt Funktionen, Parameter und Prozeduren nach Bedarf hinzu. 

Dies hat zumindest einen Vorteil, nämlich dass Sie abwärtskompatible Makros schreiben können, die aber auch mit späteren Versionen kompatibel sind, jedoch mit dem Verlust bestimmter Funktionen.

2 „Gefällt mir“