Baugruppe nach DXF exportieren

Hallo

Wir müssten die Baugruppendateien in DXF (Maßstab 1:1) exportieren.
Kein Massenexport, aber in der Idee wäre es eher ein Export under Design

Erstes Problem, wie Sie vielleicht wissen, ist es unmöglich, eine Baugruppe direkt nach DXF zu exportieren (zumindest meines Wissens im Jahr 2017)
Möglicherweise haben wir die Möglichkeit, ein Makro zu erstellen, in ein Teil zu exportieren und dann nach DXF zu exportieren, hier das zweite Problem, weil wir keine Kenntnisse über Makros haben

Zu unserer Verfügung stehen myCADtools oder myPDMtools
Aber wir kennen nicht wirklich alle Fähigkeiten dieser Tools.

Haben Sie irgendwelche Leads, die Sie geben möchten?
Danke im Voraus,
Séb 

Hallo

Ich habe vor langer Zeit dieses Makro im Forum gefunden, das alle Dateien einer Baugruppe in PDF speichert; Wenn Sie wissen, was Sie tun, können Sie sich anpassen 


pdf_des_composants_de_lassemblage.swp

 Vielen Dank ac cobra 427 für Ihre Datei
Aber ich kann es nicht starten, nichts läuft Ich habe den Eindruck, es wird keine PDF-Datei generiert
Und was die Makrobearbeitung angeht, bin ich eine Murmel

Bearbeiten: Ich habe gerade verstanden, dass Sie einen bereits erstellten DRW-Plan benötigen
Daraufhin wird das Makro ausgeführt

Es ist nicht möglich, eine Baugruppe in eine DXF-Datei zu exportieren, es ist notwendig, eine Zeichnung mit der Auswahl der zu exportierenden Ansichten zu durchlaufen.

Natürlich muss der Europaabgeordnete im Laufe des Verfahrens neu eingetragen werden.

Ich bin mir nicht sicher, ob Sie mit einem Makro viel Zeit bei diesem Problem sparen können. Es ist so schnell, Ihre 3 Ansichten abzulegen und sich selbst ^me zu exportieren, wie es ist, einen Knopf zu drücken und das Makro sein Ding machen zu lassen.

Für das MyCad-Tool dasselbe, nicht wirklich von Interesse für das Fach

Hallo

Ich habe ein Makro, das Teile und Baugruppen mit DXFs verknüpft.

Alles, was Sie tun müssen, ist, einen leeren Hintergrund zu erstellen (Pfad, der im Makro angegeben werden soll) und das Makro in dxf im Maßstab 1 aufzunehmen.

Ich hoffe, dies wird Ihre Anfrage beantworten

A+


dxf.txt
1 „Gefällt mir“

Vielen Dank gwygwy
Das ist schon ein gewaltiger Schritt nach vorne!

DXF aus der Baugruppe wird korrekt generiert
Ich muss nur dazu kommen, die Baugruppe in 0,0,0 zu positionieren (notwendigerweise durch den Ursprung des 3D)
Und um die Datei umzubenennen

Ist es möglich, von einem Makro aus ein Dialogfeld zu haben, in das der Name der gewünschten Datei geschrieben werden kann? oder den Namen einer SW-Eigenschaft der Datei abrufen?

1 „Gefällt mir“

Hallo

Ein kleines Beispiel HIER zum Abrufen einer benutzerdefinierten Eigenschaft...

Andernfalls gilt für ein Dialogfeld, das auf eine Antwort wartet:

Dim maValeur As String
maValeur = InputBox("Ma question ?", "Mon titre", "Ma valeur par défaut")

Herzliche Grüße

 Danke d.roger für das Lob,

Wenn ich also möchte, dass die generierte DXF-Datei nach "myValue" benannt wird,
Muss ich den Part.SaveAs-Block in dem von gwygwy gesendeten Makro ändern?

    
'--- Speichern der DXF und Schließen des temporären
    MEP Part.SaveAs PathNoExtension & ". DXF"
    Part.ClearSelection2 True
    Set Part = swApp.ActiveDoc
    swApp.CloseDoc swDraw.GetTitle 'Wird beendet, ohne den MEP zu sichern.

 

 .

Ich habe auch Schwierigkeiten, meine Baugruppe in 0,0,0 zu positionieren
Standardmäßig befindet sich der Ursprung des DXF-Werts immer in der Mitte meiner Baugruppe

Ja, Sie müssen den Part.SaveAs-Block ändern, um die Variable PathNoExtension neu zu berechnen.

Ein kleines Beispiel:

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"

Herzliche Grüße

Vielen Dank d.roger

Ausführen des Makros aus einer Assembly,
Ich habe das Teil durch sw.model ersetzt

DateiPfad = Teil.GetPfadName
FileTitle = Teil.GetTitle

Das Ergebnis ist wirklich nicht schlecht,
Es bleibt nur noch, das Ganze in 0,0,0 zu positionieren
Und um das DXF in einer Datei im Rohformat aufzunehmen und nicht auf die Aufspießung des 3D

Was meinst du mit "Alles, was du tun musst, ist, das Ganze in 0,0,0 zu positionieren"? Ein Screenshot von dem, was Sie bekommen und was Sie möchten, wäre willkommen.

Und um die dxf in einem Raw-Ordner zu speichern, müssen Sie die Variable "PathNoExtension" nach Belieben überarbeiten.

Auf der linken Seite dxf aus dem Makro
Ein rechtes, manuell modifiziertes DXF mit Neupositionierung der Projektion auf dem Ursprung

Was den Weg angeht, habe ich ein wenig gekratzt und es ist ok;)


origine.png

OK, mal sehen, ob so etwas wie das Folgende zu Ihnen passt:

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

Ich habe das Speichern der DXF-Datei in einem anderen Ordner nicht gehandhabt ...

Herzliche Grüße

Hallo

@sjoly_TRI

Ich bin froh, dass mein Makro Ihnen geholfen hat, voranzukommen

A+

 Danke d.roger
Es wird eine Neupositionierung durchgeführt, die jedoch nicht gut auf x0 y0 eingestellt ist (CF-Bild)

Ich gebe zu, dass ich das Prinzip von decalX und decalY mit dem xMax xMin nicht verstehe (...)


2020-10-27_16_02_01-draftsight_enterprise_-_monfichier1.dxf_.png

Endlich habe ich gerade den Grund gefunden,
Wir haben ein Skelett von Aufnahmen, die nicht in 3D sind
Und der Umbau mit dem Xmax Xmin... Berücksichtigung der Pläne

 


2020_10_27_16_16_58_solidworks_premium_2017_x64_edition_r_a.106568.sldasm_lecture_seule_.png

Das Prinzip besteht darin, die Abmessungen der "BoundingBox" der Baugruppe zu berechnen und die Ansicht um die Hälfte zu verschieben, da der Ursprung der Ansicht standardmäßig der Mittelpunkt der Baugruppe ist.

Versuchen Sie, die Leitung zu ersetzen:

vBox = swAssy.GetBox(swBoundingBoxIncludeRefPlanes)

Von ihm:

vBox = swAssy.GetBox(Falsch)

Wann immer du einen Plan hast, der dir in die Quere kommt...

Herzliche Grüße

Daniel

In der Tat ist es besser so,
Vielen Dank an Sie alle für die aufgewendete Zeit und für Ihre Hilfe!

1 „Gefällt mir“