We zouden assemblagebestanden moeten exporteren naar DXF (schaal 1:1) Geen massa-export, maar in het idee zou het eerder een export onder ontwerp zijn
Eerste probleem, zoals u wellicht weet, is het onmogelijk om een assemblage rechtstreeks naar DXF te exporteren (althans voor zover ik weet in 2017) We hebben misschien de mogelijkheid om een macro te maken, om naar een deel te exporteren en vervolgens naar DXF te exporteren, hier tweede probleem omdat we geen kennis hebben van macro's
Tot onze beschikking hebben we myCADtools of myPDMtools Maar we kennen niet echt alle mogelijkheden van deze tools.
Heb je aanknopingspunten om te geven? Bij voorbaat dank, Séb
Ik vond een lange tijd geleden deze macro op het forum die alle bestanden van een assembly in PDF opslaat; Als je weet wat je doet, kun je je aanpassen
Bedankt ac cobra 427 voor uw bestand Maar ik kan het niet starten, er wordt niets uitgevoerd, ik heb de indruk, er wordt geen pdf-bestand gegenereerd En op het gebied van macrobewerking ben ik een knikker
Edit: Ik begreep net dat je een drw plan al gemaakt Als gevolg hiervan wordt de macro uitgevoerd
Het is niet mogelijk om een assembly naar een dxf te exporteren, het is noodzakelijk om een tekening door te nemen met de keuze van de te exporteren aanzichten.
Natuurlijk zal het lid van het Europees Parlement in de loop van de procedure opnieuw moeten worden geregistreerd.
Ik weet niet zeker of een macro u veel tijd zal besparen. Het is net zo snel om je 3 weergaven neer te zetten en jezelf te exporteren ^me als om op een knop te drukken en de macro zijn werk te laten doen.
Voor de MyCad-tool hetzelfde, niet echt interessant voor het onderwerp
Heel erg bedankt gwygwy Dit is al een enorme stap vooruit!
DXF van assemblage genereert correct Ik hoef alleen maar de assemblage in 0,0,0 te positioneren (door noodzakelijkerwijs de oorsprong van de 3D) En om het bestand te hernoemen
Is het mogelijk om vanuit een macro een dialoogvenster te hebben om de naam van het gewenste bestand te schrijven? of de naam van een SW-eigenschap van het bestand ophalen?
Dus als ik wil dat de gegenereerde DXF een naam krijgt met "myValue" Moet ik het blok Part.SaveAs wijzigen in de macro die door gwygwy is verzonden?
'--- Het redden van de dxf en het sluiten van de tijdelijke
MEP Part.SaveAs PathNoExtension & ". DXF"
Part.ClearSelection2 True
Set Part = swApp.ActiveDoc
swApp.CloseDoc swDraw.GetTitle 'Stopt zonder een back-up te maken van de MEP.
.
Ik heb ook moeite om mijn assemblage in 0,0,0 te positioneren Standaard ligt de oorsprong van de DXF altijd in het midden van mijn assemblage
Ja, u moet het blok Part.SaveAs wijzigen om de variabele PathNoExtension opnieuw te berekenen.
Een klein voorbeeld:
Dim maValeur As String
maValeur = InputBox("Ma question ?", "Mon titre", "Ma valeur par défaut")
Dim FilePath As String
Dim FileTitle As String
Dim PathSize As Long
Dim TitleSize As Long
Dim PathNoExtension As String
FilePath = Part.GetPathName
FileTitle = Part.GetTitle
PathSize = Strings.Len(FilePath)
TitleSize = Strings.Len(FileTitle)
PathNoExtension = Strings.Left(FilePath, PathSize - TitleSize)
MsgBox PathNoExtension & maValeur & ".dxf"
Het resultaat is echt niet slecht, Het enige dat overblijft is om het geheel in 0,0,0 te positioneren En om de DXF in een bestand in raw op te nemen en niet aan de spietsen van de 3D
Wat bedoel je met "Het enige wat je hoeft te doen is het hele ding in 0,0,0 te positioneren"? Een screenshot van wat je krijgt en wat je zou willen, zou welkom zijn.
En om de dxf in een raw-map op te slaan, moet je de variabele "PathNoExtension" naar wens herwerken.
OK, dus laten we eens kijken of zoiets als het volgende bij je past:
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View
Dim retval As String
Dim FilePath As String
Dim FileTitle As String
Dim PathSize As Long
Dim TitleSize As Long
Dim PathNoExtension As String
Dim maValeur As String
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
'--- Création du nom du fichier
FilePath = swModel.GetPathName
FileTitle = swModel.GetTitle
PathSize = Strings.Len(FilePath)
TitleSize = Strings.Len(FileTitle)
PathNoExtension = Strings.Left(FilePath, PathSize - TitleSize)
maValeur = InputBox("Veuillez indiquer le nom du fichier dxf ?", "Macro Asm To DXF", "MonFichier")
PathNoExtension = PathNoExtension & maValeur & ".dxf"
'--- Calcul du décalage de l'origine
Dim vBox As Variant
Dim swAssy As SldWorks.AssemblyDoc
Dim X_max As Double
Dim X_min As Double
Dim Y_max As Double
Dim Y_min As Double
Dim Z_max As Double
Dim Z_min As Double
If swModel.GetType() <> swDocASSEMBLY Then Exit Sub
Set swAssy = swModel
vBox = swAssy.GetBox(swBoundingBoxIncludeRefPlanes)
X_max = vBox(3)
X_min = vBox(0)
Y_max = vBox(4)
Y_min = vBox(1)
Z_max = vBox(5)
Z_min = vBox(2)
Dim decalX As Double
Dim decalY As Double
decalX = (X_max - X_min) / 2
decalY = (Y_max - Y_min) / 2
'--- Création de la mise en plan
retval = swApp.GetUserPreferenceStringValue(swDefaultTemplateDrawing)
Set swDraw = swApp.NewDocument(retval, 0, 0, 0)
'--- Insertion de la vue
Set swView = swDraw.CreateDrawViewFromModelView3(swModel.GetPathName, "*Face", decalX, decalY, 0)
'--- Rend invisible les annotations de plis
swView.ShowSheetMetalBendNotes = False
'--- Force la vue à l'échelle 1:1
Dim swSheet As Sheet
Dim status As Boolean
Set swView = swDraw.GetFirstView
Set swSheet = swDraw.GetCurrentSheet
status = swSheet.SetScale(1, 1, True, True)
'--- Sauvegarde du dxf et fermeture de la MEP temporaire
swDraw.SaveAs PathNoExtension & ".DXF"
swDraw.ClearSelection2 True
swApp.CloseDoc swDraw.GetTitle
End Sub
Ik heb het niet aangepakt om het dxf-bestand in een andere map op te slaan...
Eindelijk, ik heb net de reden gevonden, We hebben een skelet van opnamen die niet in 3D zijn gemaakt En de ombouw met de Xmax Xmin... Houd rekening met de plannen
Het principe is om de afmetingen van de "BoundingBox" van de assemblage te berekenen en de weergave met de helft ervan te verplaatsen, aangezien de oorsprong van de weergave standaard het midden van de assemblage is.