Konwertuj bryłę 3D na Dxf z zachowaniem początku układu współrzędnych

Witam 

Mam kilka profili 3D na części (rodzinie części), które muszę przekonwertować na DXF i zachowując ich nazwę konfiguracyjną jako nazwę pliku, po wypróbowaniu Batchconverter , zauważam, że pochodzenie mojej części nie jest uwzględnione. Próbowałem makra, ale zdarza mi się to samo.

Jedynym rozwiązaniem, jakie znalazłem, jest zapisywanie pod dxf dla każdej konfiguracji. Jest długa i mam kilka takich kawałków do zrobienia. 

Czy macie rozwiązanie mojego problemu? 

Dziękuję.

Pozdrowienia

Moje makro: 

Option Explicit
Sub main()

    Dim swApp                   As SldWorks.SldWorks
    Dim swModel                 As SldWorks.ModelDoc2
    Dim vConfNameArr            As Variant
    Dim sConfigName             As String
    Dim nStart                  As Single
    Dim i                       As Long
    Dim bShowConfig             As Boolean
    Dim bRebuild                As Boolean
    Dim bRet                    As Boolean
  

    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc

    vConfNameArr = swModel.GetConfigurationNames

    For i = 0 To UBound(vConfNameArr)

        sConfigName = vConfNameArr(i)

       
bShowConfig = swModel.ShowConfiguration2(sConfigName)

bRebuild = swModel.ForceRebuild3(False)

Dim FilePath As String
Dim PathSize As Long
Dim PathNoExtension As String
Dim NewFilePath As String

FilePath = swModel.GetPathName
PathSize = Strings.Len(FilePath)
PathNoExtension = Strings.Left(FilePath, PathSize - 6)

NewFilePath = PathNoExtension + sConfigName & ".DXF"

'Export Flat Pattern
bRet = swModel.ExportFlatPatternView(NewFilePath, 1)

Next i

End Sub

 

 


meule_heller_pour_dxf.sldprt

Witam

Funkcja "ExportFlatPatternView" jest przestarzała, w swoim makrze musisz użyć funkcji ExportToDWG2 i zobaczyć za pomocą parametru "Alignment", aby ustawić współrzędne początku i kierunki osi.

Pozdrowienia

Witam 

Dziękuję za odpowiedź, 

Czy masz przykład, jak go użyć? Bo nie rozumiem, że to eksport do DWG, prawda?

 

Pozdrowienia.

Witam

Jak wskazano w ustawieniach funkcji, dotyczy to eksportu w formacie DXF lub DWG:

"FilePath : Ścieżka i nazwa eksportowanego pliku DXF/DWG"

Na linku, który Ci podałem, jest już przykład, zobacz TUTAJ. Aby zapisać w DXF w tym przykładzie, po prostu zmień linię sPathName = sPathName + "dwg" na sPathName = sPathName + "dxf".

Pozdrowienia

Witam 

Ok, nie jestem wystarczająco dobry do makr.  ^^

Jeśli chcę, aby plik dxf został utworzony w lokalizacji mojego pliku 3D, muszę czegoś dotknąć? i chciałbym, aby makro tworzyło DXF dla każdej konfiguracji

Oczywiście, jeśli masz na to czas

 

Pozdrowienia.

Oto przykład oparty na makrze:

Option Explicit

Sub main()

    Dim swApp                   As SldWorks.SldWorks
    Dim swModel                 As SldWorks.ModelDoc2
    Dim swPart                  As SldWorks.PartDoc
    Dim vConfNameArr            As Variant
    Dim sConfigName             As String
    Dim nStart                  As Single
    Dim i                       As Long
    Dim bShowConfig             As Boolean
    Dim bRebuild                As Boolean
    Dim bRet                    As Boolean
    Dim varAlignment            As Variant
    Dim dataAlignment(11)       As Double
    Dim varViews                As Variant
    Dim dataViews(0)            As String

    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc
    
    swModel.ShowNamedView2 "*Face", 1
    swModel.ViewZoomtofit2
    
    dataAlignment(0) = 0#
    dataAlignment(1) = 0#
    dataAlignment(2) = 0#
    dataAlignment(3) = 1#
    dataAlignment(4) = 0#
    dataAlignment(5) = 0#
    dataAlignment(6) = 0#
    dataAlignment(7) = 1#
    dataAlignment(8) = 0#
    dataAlignment(9) = 0#
    dataAlignment(10) = 0#
    dataAlignment(11) = 1#

    varAlignment = dataAlignment

    varViews = dataViews

    vConfNameArr = swModel.GetConfigurationNames

    For i = 0 To UBound(vConfNameArr)

        sConfigName = vConfNameArr(i)

        bShowConfig = swModel.ShowConfiguration2(sConfigName)
        
        bRebuild = swModel.ForceRebuild3(False)

        Dim sPathName As String
        Dim sModelName As String
        
        sModelName = swModel.GetPathName
        
        sPathName = swModel.GetPathName
        sPathName = Left(sPathName, Len(sPathName) - 6)
        sPathName = sPathName + sConfigName + ".dxf"
    
        Set swPart = swModel

        swPart.ExportToDWG2 sPathName, sModelName, swExportToDWG_ExportAnnotationViews, False, varAlignment, False, False, 0, varViews

    Next i

End Sub

Pozdrowienia

1 polubienie

Dziękuję bardzo. 

Pomoże mi to w pracy, a zwłaszcza w nauce kodu VBA. 

Pozdrowienia

Witam 

Pozwalam sobie na przepisanie o tym makrze, rzeczywiście chcę je poprawić wybierając folder, w którym ma się zapisać ale trochę go tam blokuję, mogę wybrać folder ale nadal zapisuje się tam, gdzie jest plik. 

Jakiego fragmentu kodu mi brakuje? Próbuję poszukać w sieci, ale jest tak wiele różnych kodów.

Pozdrowienia.


dxf.swp