Makro można zapisać jako zespół KROK, przekształcając go w część

Witam, szukam opcji w VBA, aby zarejestrować zespół w STEP, ale przed zapisaniem przekształca zespół w zewnętrzną część powierzchni

Witam

Nie mam teraz pod ręką oprogramowania, aby to sprawdzić, ale powinieneś być w stanie użyć funkcji metody SaveAs3 (IModelDocExtension) z opcją "ISldWorks::SetUserPreferenceIntegerValue", jak wskazano nieco dalej na tej stronie:

Pozdrowienia

Właśnie próbowałem z tym: 

        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

Ale to niczego nie zmienia?  nagrywa w STEP, ale tworzy różne utwory osobno w STEP.

Myślę, że trzeba to zrobić w kilku krokach jak w solidworks

1- Zarejestruj zespół jako część z powierzchnią zewnętrzną

2-Otwórz pokój

Eksport części w 3 krokach

4-Aby usunąć lub nie część z powierzchnią zewnętrzną

1 polubienie

Oddziel swoje kroki zgodnie ze wskazaniami sbadenis.

Dobra, pójdę z tym, dziękuję. 
Ale zastanawiam się, jak zamierzam sprawić, aby automatycznie usunął kawałek i zapisał się po utworzeniu kroku.

To, co robię, nie działa. Kiedy zapisuję zespół jako część, tworzy on tyle bryły/bryły, ile jest części w złożeniu. i chciałbym, aby wszystko zostało "połączone" w 1 ciało, gdy zarejestruję zespół w częściach lub bezpośrednio w STEP, jeśli to możliwe.

Właśnie zobaczyłem ten post na forum solidworks, który pochodzi z 2012 roku.

Aby przetestować i przekazać nam opinię:

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

 

Oto 1. część, aby zapisać zespół w częściach

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

Następnie za pomocą open doc6 powinieneś być w stanie go otworzyć, a następnie wyeksportować w kroku

Do usunięcia pliku być może za pomocą FSO  jest to wykonalne

Edycja: do usunięcia pliku:

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

 

Dla otwartego dokumentu6:

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

to działa, jedyny problem polega na tym, że przekształca zespół w część powierzchniową zgodnie z żądaniem, a następnie, gdy zapiszemy tę część w STEP, odtwarza dla mnie bryły.

 

Czy nie jest możliwe zapisanie tak, aby była tylko 1 treść (aby wszystko było połączone/zgrupowane w 1 pojedynczy zaimportowany blok)?

Witam

Musisz zrobić:

- Otwieranie zespołu.

- Częściowe zapisanie tego zespołu.

- Otwarcie nowo utworzonej części.

- Połącz obiekty za pomocą funkcji InsertCombineFeature Method (IFeatureManager) z swBodyOperationType_e wyliczeniową ustawioną na 15903 (SWBODYADD). Przykład masz TUTAJ.

- Zapisz jako krok.

Pozdrowienia

2 polubienia

Właśnie zrobiłem taki test przed uruchomieniem makra i gdy tylko jestem na zestawach, które są trochę "złożone", pojawia się ten komunikat o błędzie podczas łączenia.

 

Witam

Czy ciała, które próbujesz połączyć w 1 pojedyncze ciało, mają przecięcie?

Jeśli nie, oznacza to, że ten komunikat jest normalny.

Pozdrowienia

1 polubienie

Tak, zgadza się, to sprzęt (podnośniki lub). Nie ma sposobu, aby połączył wszystko, co może ze sobą połączyć, a czego nie może połączyć szkoda, że tak to zostawia i automatycznie oczywiście?

No tak, robiąc pętle i zarządzanie błędami w swoim makrze ...