Converteer 3D-massa naar Dxf met behoud van de oorsprong

Hallo 

Ik heb verschillende 3D-profielen op een onderdeel (deelfamilie) die ik moet converteren naar DXF en met behoud van hun configuratienaam als bestandsnaam, na het proberen van Batchconverter , merk ik dat de oorsprong van mijn onderdeel niet is opgenomen. Ik heb een macro geprobeerd, maar het overkomt mij hetzelfde.

De enige oplossing die ik heb gevonden, is om voor elke configuratie onder dxf op te slaan. Het is lang en ik heb verschillende van dit soort stukken te doen. 

Hebben jullie een oplossing voor mijn probleem? 

Bedankt.

Vriendelijke groeten

Mijn macro: 

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

Hallo

De functie "ExportFlatPatternView" is verouderd, in uw macro moet u de functie ExportToDWG2 gebruiken en met de parameter "Uitlijning" kijken om de coördinaten van de oorsprong en de richtingen van de assen in te stellen.

Vriendelijke groeten

Hallo 

Dank u voor uw antwoord, 

Heb je een voorbeeld van hoe je het kunt gebruiken? Omdat ik het niet begrijp, het is om te exporteren naar DWG toch?

 

Vriendelijke groeten.

Hallo

Zoals aangegeven in de functie-instellingen is dit voor een export in DXF of DWG:

"FilePath : Pad en bestandsnaam van het geëxporteerde DXF/DWG-bestand"

Op de link die ik je gaf staat al een voorbeeld, zie HIER. Om in dit voorbeeld in DXF op te slaan, verander je gewoon de regel sPathName = sPathName + "dwg" in sPathName = sPathName + "dxf".

Vriendelijke groeten

Hallo 

Ok, ik ben niet goed genoeg voor macro's.  ^^

Als ik wil dat de dxf wordt gemaakt op de bestandslocatie van mijn 3D, moet ik iets aanraken? en ik zou graag willen dat de macro een DXF maakt voor elke configuratie

Als je de tijd hebt natuurlijk

 

Vriendelijke groeten.

Hier is een voorbeeld op basis van uw macro:

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

Vriendelijke groeten

1 like

Hartelijk dank. 

Dit zal me helpen in mijn werk en vooral bij het leren van VBA-code. 

Vriendelijke groeten

Hallo 

Ik sta mezelf toe om over deze macro te herschrijven, ik wil hem inderdaad verbeteren door de map te selecteren waar hij moet worden opgeslagen, maar ik blokkeer hem daar een beetje, ik kan de map selecteren, maar hij slaat nog steeds op waar het bestand is. 

Welk stukje code mis ik? Ik probeer te zoeken op het net, maar er is zoveel verschillende code.

Vriendelijke groeten.


dxf.swp