DXF-Export der aktuellen Registerkarte einer Solidworks-Zeichnung

Hallo

Ich habe gesucht und konnte kein kleines Makro finden, das die aktuelle Registerkarte einer Solidworks-Zeichnung im DXF-Format (für das Laserschneiden) mit dem genauen Namen der aktuellen Planregisterkarte als Dateinamen exportiert

Hat jemand die Komplettlösung?

Beachten Sie, dass ich schlecht in der VBA-Programmierung bin

Vielen Dank im Voraus

Hallo

Schauen Sie sich dieses Makro an, probieren Sie es aus und sagen Sie mir, ob es für Sie in Ordnung ist

Sub main()

Dim swApp als SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim montab As Variante
Dim montab2 als Variante
Dim montab3 als Variante
Dim inintern As String
Name als Zeichenfolge dimmen
Pfad als Zeichenfolge dimmen
Dim-Name Als Zeichenfolge
Dim FilePath        As String
Pfadgröße        so lange dimmen
Dim PathNoExtension als Zeichenfolge
Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc

DateiPfad = swModel.GetPfadName
PfadGröße = Zeichenfolgen.Len(Dateipfad)
PfadNoExtension = Zeichenfolgen.Links(DateiPfad, Pfadgröße - 7)

montab = Split(swModel.GetPathName, "\", -1)
interm = montab(UBound(montab))
name = Mid(interm, 1, Len(interm) - 7)
montab2 = Split(name, ".", 2)
Name = montab2(0)

'montab3 = Split(Name, "$", 2)
'Name = Montab3(1)

path = PathNoExtension & ".dxf" 'Format, in dem Sie speichern möchten
'pathMEP = swModel.GetPathName
'FullFileName = Mid(MEPPATH, 1, Len(MEPPATH) - 7)
'Elemente = Split(FullFileName, "\", -1)
'FullFileName = Elemente(0)

'MessAlert = MsgBox("Akzeptieren Sie diese Datei?" + FullFileName, vbYesNo)
'Wenn MessAlert = vbNo, dann sub beenden
name = Name & " - Blatt1"
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
Part.SaveAs2-Pfad, 0, Wahr, Falsch
Part.Save2 Falsch
Set Part = Nichts
swApp.CloseDoc swModel.GetTitle
'Set swModel = Nichts: Set swApp = Nichts
 
Ende Sub

 

 

Hallo gwygwy

Danke, es funktioniert!

Es wird jedoch mit dem Dateinamen und nicht mit dem Namen des aktuellen Tabs gespeichert

Ist es möglich, Änderungen vorzunehmen?

Vielen Dank im Voraus

 

Hallo

Ich bin kein Spezialist, also konnte ich den Namen des Dokuments und den Namen des Blattes eingeben, aber nicht besser.

Sub main()

Dim swApp als SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim montab As Variante
Dim montab2 als Variante
Dim montab3 als Variante
Dim inintern As String
Name als Zeichenfolge dimmen
Dim Name2 als Zeichenfolge
Pfad als Zeichenfolge dimmen
Dim-Name Als Zeichenfolge
Dim FilePath        As String
Pfadgröße        so lange dimmen
PathSizeTitle   so lange dimmen
Dim PathNoExtension als Zeichenfolge
Dim PathNoExtension2 als Zeichenfolge
Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc

DateiPfad = swModel.GetPfadName
PfadGröße = Zeichenfolgen.Len(Dateipfad)
PfadNoExtension = Zeichenfolgen.Links(DateiPfad, Pfadgröße - 7)


name2 = swModel.GetTitle

montab = Split(swModel.GetPathName, "\", -1)
interm = montab(UBound(montab))
name = Mid(interm, 1, Len(interm) - 7)
montab2 = Split(name, ".", 2)
Name = montab2(0)

PfadGrößeTitle = Zeichenfolgen.Len(Name)
PfadNoExtension2 = Zeichenfolgen.Links(PfadNoErweiterung, PfadGröße - PfadgrößeTitel - 7)

'montab3 = Split(Name, "$", 2)
'Name = Montab3(1)

path = PathNoExtension2 & name2 & ".dxf" 'Format, in welchem Format Sie speichern möchten
'pathMEP = swModel.GetPathName
'FullFileName = Mid(MEPPATH, 1, Len(MEPPATH) - 7)
'Elemente = Split(FullFileName, "\", -1)
'FullFileName = Elemente(0)

'MessAlert = MsgBox("Akzeptieren Sie diese Datei?" + FullFileName, vbYesNo)
'Wenn MessAlert = vbNo, dann sub beenden
'name = Name & " - Blatt1"
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
Part.SaveAs2-Pfad, 0, Wahr, Falsch
Part.Save2 Falsch
Set Part = Nichts
'swApp.CloseDoc swModel.GetTitle
Set swModel = Nothing: Set swApp = Nothing
 
Ende Sub

 

@gwygwy das vorgeschlagene Makro in Bezug auf Code,  Duplikat, nutzlosen Code alles andere als sauber ist... Und außerdem verstehe ich nicht, wie Sie den Namen des Blattes bekommen. Der einzige Blattname wird in der Mano "Leaf1" eingegeben.

Um die Datei mit dem Namen der Registerkarte zu exportieren, lesen Sie dieses Thema, auf das ich geantwortet habe, ohne zu wissen, ob die Antwort auf Sie passt oder nicht.

https://www.lynkoa.com/forum/solidworks/export-diff%C3%A9renci%C3%A9-en-pdf-et-dxf-des-onglets-de-mise-en-plan-par-une-macro

Falls erforderlich, kann es angepasst werden, ohne die Bedingung if Cutout exist in den Registerkartennamen aufzunehmen und ohne es aus dem Dateinamen zu entfernen, wie es bei Bedarf erforderlich ist.

Aber im Allgemeinen vermeiden wir es, 2 sehr nahe beieinander liegende oder identische Themen zu eröffnen.

 

Hallo @sbadenis 

Ja, der Code ist nicht sauber, ich bin kein Profi. Ich habe ein vorhandenes Makro geändert, bei dem noch Code vorhanden ist, der keinen Zweck erfüllt, aber ich behalte ihn für den Fall, dass ich ihn in einem anderen Makro benötige.

Und nein, er wird nicht getroffen, wie du sagst, es gibt ein ' vor der Linie. Diese Zeile ist also nutzlos.

Ich erhole mich mit get.title, das ist alles, was ich gefunden habe. Aber wenn Sie ein Makro haben, das für ihn funktioniert, tun Sie es, Sie scheinen gut zu programmieren.

1 „Gefällt mir“

@gwygwy keine Sorge, es war nur für Sie! Und tatsächlich hatte ich den get.title nicht gesehen, aber an sich bekommt man den Namen des Dokuments + den Namen des aktiven Blattes

Um den Namen jedes Blatts abzurufen und jedes Blatt mit dem Namen des Blatts als Exportnamen zu exportieren, müssen Sie eine Schleife auf den Blättern wie auf dem Makro erstellen, das in der Verknüpfung angegeben ist. Wenn Sie interessiert sind, lade ich Sie zum Anschauen ein, es ist nichts zu kompliziert, vor 2 Jahren hatte ich keine Ahnung von VBA und es ist durch Versuch und Irrtum, dass ich dazu gekommen bin.

Für das Makro habe ich einen im anderen Thema gemacht, aber keine Antwort @Fennec_Flegmatique scheint den Abonnenten zu fehlen!

Freunde, ich bin nicht bei den absteigenden Abonnenten

Vielen Dank für Ihre Beiträge und für die Zeit, die Sie mir geantwortet haben

Ich mache Fortschritte beim Verständnis der Codes (ich bin Böotianer), aber es ist ein bisschen lang

Ich habe mein Thema noch nicht gelöst

Ich lasse dich wissen, ob ich es finde oder ob ich es wert bin!