Bonjour ,
J'ai plusieurs profil 3D sur une pièce (famille de pièce) que je dois convertir en DXF et en gardant leur nom de config comme nom de fichier , après essaie de Batchconverter , je remarque que l'origine de ma pièce n'est pas repris. J'ai tenté une macro mais celà m'arrive pareil.
La seul solution que j'ai trouvé c'est enregistrer sous dxf pour chaque configuration. c'est long et j'ai plusieurs pièce comme ceci à faire.
Avez-vous peut être une solution à mon problème ?
En vous remerciant.
Cordialement
Ma 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
Bonjour,
La fonction "ExportFlatPatternView" est obsolète, dans ta macro il faut utiliser la fonction ExportToDWG2 et voir avec le paramètre "Alignment" pour règler les coordonnées de l'origine et les directions des axes.
Cordialement,
Bonjour ,
Je vous remercie pour votre réponse ,
Avez-vous un exemple de comment l'utiliser ? parce que je comprend pas c'est pour exporter en dwg la non ?
Cordialement.
Bonjour,
Comme indiqué dans les paramètres de la fonction, c'est pour un export en DXF ou en DWG :
"FilePath : Path and file name of the exported DXF/DWG file"
Sur le lien que je t'ai donné il y a déjà un exemple, voir ICI. Pour sauvegarder en DXF sur cet exemple, il y a juste à changer la ligne sPathName = sPathName + "dwg" en sPathName = sPathName + "dxf".
Cordialement,
Bonjour ,
Ok je suis pas assez calé pour les macro.. ^^
Si je veux que le dxf soit créer à l'emplacement de fichier de mon 3D je doit toucher quelque chose ? et j'aimerai que la macro créer un DXF pour chaque configuration
Si vous avez le temps évidemment
Cordialement.
Voici un exemple sur la base de ta 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
Cordialement,
1 « J'aime »
Merci beaucoup.
Cela va m'aider dans mon travail et surtout dans mon apprentissage du code VBA.
Cordialement
Bonjour ,
Je me permet de réécrire à propos de cette macro , en effet je souhaite l'améliorer en sélectionnant le dossier ou elle doit enregistrer mais je bloque un peu la , je peux sélectionner le dossier mais elle enregistre quand même ou se trouve le fichier.
quel bout de code il me manque ? j'essaie de chercher sur le net mais il y a tellement de code différent..
Cordialement.
dxf.swp