Speichern Sie das Makro als STEP-Baugruppe, indem Sie sie in ein Teil umwandeln

Hallo, ich suche nach einer Option in VBA, um eine Baugruppe in STEP zu registrieren, aber vor dem Speichern wird die Baugruppe in ein externes Flächenteil umgewandelt

Hallo

Ich habe im Moment keine SW zur Hand, um sie zu überprüfen, aber Sie sollten in der Lage sein, die SaveAs3-Methodenfunktion (IModelDocExtension) mit der Option "ISldWorks::SetUserPreferenceIntegerValue" zu verwenden, wie etwas weiter unten auf dieser Seite angegeben:

Herzliche Grüße

Ich habe es gerade damit versucht: 

        If CheckBoxSTEP.Value = True Then

               filename = LblCheminSTEP & ActiveConfig & ".STEP"
            
                boolstatus = swApp.SetUserPreferenceIntegerValue(swStepAP, 214)
                boolstatus = swApp.SetUserPreferenceIntegerValue(swSaveAssemblyAsPartOptions, swSaveAsmAsPart_ExteriorFaces)
                boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportData, lErrors, lWarnings)
                
                If boolstatus Then
                    MsgBox "Enregistrement au format STEP réussi" & vbNewLine & filename
                Else
                    MsgBox "Echec de l'enregistrement au format STEP, Error code:" & lErrors, vbCritical, "AVERTISSEMENT"
                End If
        End If

Aber es ändert sich nichts? Er nimmt in STEP auf , erstellt aber die verschiedenen Stücke separat in STEP.

Ich denke, man muss es in mehreren Schritten wie in SolidWorks machen

1- Registrieren Sie die Baugruppe als Teil mit äußerer Oberfläche

2-Öffnen Sie den Raum

3-stufiger Export des Teils

4-Um das Teil mit der Außenfläche zu löschen oder nicht

1 „Gefällt mir“

Trennen Sie Ihre Schritte wie von sbadenis angegeben.

Okay, ich mache das, danke. 
Aber ich frage mich, wie ich es hinbekomme, das Stück automatisch zu löschen, sobald der Schritt erstellt ist.

Was ich gerade mache, funktioniert nicht. Wenn ich die Baugruppe als Teil speichere, wird so viel Körper/Volumenkörper erstellt, wie Teile in der Baugruppe vorhanden sind. und ich möchte, dass alles in 1 Körper "zusammengeführt" wird, wenn ich die Baugruppe in Teilen registriere oder direkt in STEP, wenn es möglich ist.

Ich habe gerade diesen Beitrag im solidworks Forum gesehen, der aus dem Jahr 2012 stammt.

Um zu testen und uns Feedback zu geben:

https://forum.solidworks.com/thread/55589

 

Hier ist das 1. Teil, um die Baugruppe in Teilen zu speichern

Dim swApp               As SldWorks.SldWorks
Dim swModel             As SldWorks.ModelDoc2
Dim swModelDocExt       As SldWorks.ModelDocExtension
Dim FilePath            As String
Dim sFilePath           As String
Dim PathSize            As Long
Dim PathNoExtension     As String
Dim NewFilePath         As String
Dim nErrors             As Long
Dim nWarnings           As Long

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension

FilePath = swModel.GetPathName
PathSize = Strings.Len(FilePath)
PathNoExtension = Strings.Left(FilePath, PathSize - 6)
NewFilePath = PathNoExtension & "SLDPRT"

swApp.SetUserPreferenceIntegerValue swSaveAssemblyAsPartOptions, swSaveAsmAsPart_ExteriorFaces
swModelDocExt.SaveAs NewFilePath, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, nErrors, nWarnings

swApp.CloseDoc swModel.GetTitle

Set swModel = swApp.OpenDoc(NewFilePath, swDocPART)
Set swModel = swApp.ActiveDoc

sFilePath = PathNoExtension & "STEP"
 
swModel.SaveAs (sFilePath)

swApp.CloseDoc swModel.GetTitle

End Sub
'------------------

Dann sollten Sie mit open doc6 in der Lage sein, es zu öffnen und dann schrittweise zu exportieren

Für das Löschen der Datei evtl. mit FSO  ist es machbar

Bearbeiten: für das Löschen der Datei:

https://forum.solidworks.com/thread/61273

 

Für open doc6:

http://help.solidworks.com/2018/English/api/sldworksapi/Open_Document_Example_VB.htm

Es funktioniert, das einzige Problem ist, dass es die Baugruppe wie gewünscht in ein Flächenteil umwandelt, und wenn wir dieses Teil dann in STEP speichern, erstellt es Körper für mich neu.

 

Ist es nicht möglich, so zu speichern, dass es nur 1 Körper gibt (dass alles in 1 einzigen importierten Block zusammengeführt/gruppiert wird)?

Hallo

Sie müssen Folgendes tun:

- Öffnen der Baugruppe.

- Speichern dieser Baugruppe in einem Teil.

- Öffnen des neu erstellten Bauteils.

- Kombinieren Sie die Textkörper mit der Funktion InsertCombineFeature-Methode (IFeatureManager), wobei die Enumerations swBodyOperationType_e auf 15903 (SWBODYADD) festgelegt ist. Ein Beispiel finden Sie HIER.

- Speichern Sie als Schritt.

Herzliche Grüße

2 „Gefällt mir“

Ich habe gerade einen solchen Test gemacht, bevor ich das Makro gestartet habe, und sobald ich mich auf Baugruppen befinde, die ein wenig "komplex" sind, erhalte ich diese Fehlermeldung, wenn ich kombiniere.

 

Hallo

Haben die Körper, die Sie zu 1 einzigen Körper kombinieren möchten, eine Schnittmenge?

Wenn nicht, dann ist diese Meldung normal.

Herzliche Grüße

1 „Gefällt mir“

Ja, das ist richtig, es ist Hardware (Wagenheber oder Schrauben). Es gibt für ihn keine Möglichkeit, alles miteinander zu kombinieren, was er miteinander kombinieren kann, und was er nicht kombinieren kann, schade, lässt er es so und natürlich automatisch?

Nun ja, indem Sie Schleifen und Fehlermanagement in Ihrem Makro durchführen ...