Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  DXF-Export bestimmter

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
AMB 2024
Autor Thema:  DXF-Export bestimmter (1711 mal gelesen)
Xenomorph
Mitglied
Produktdesigner

Sehen Sie sich das Profil von Xenomorph an!   Senden Sie eine Private Message an Xenomorph  Schreiben Sie einen Gästebucheintrag für Xenomorph

Beiträge: 3
Registriert: 26.11.2009

erstellt am: 11. Dez. 2012 08:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo liebe Gemeinde 
Ich habe folgendes Problem:
Ich möchte bestimmte Zeichnungsblätter oder Blätter mit einer bestimmten Benennung als DXF-Datei speichern. Kann mir einer einen Typ geben, ob dieses Thema schon irgendwo behandelt wurde oder wie ich das am Besten hinbekomme. Ich habe ein Makro am Start, welches alle Seiten einer 2D-Ableitung ausgibt.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Pete Riley
Mitglied
Student


Sehen Sie sich das Profil von Pete Riley an!   Senden Sie eine Private Message an Pete Riley  Schreiben Sie einen Gästebucheintrag für Pete Riley

Beiträge: 171
Registriert: 30.09.2012

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 21. Dez. 2012 23:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Xenomorph 10 Unities + Antwort hilfreich

Dann lad's doch mal hoch.
Hier gibt's ganz tolle Makro-Umschreiber.

Gruß, Pete

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 22. Dez. 2012 14:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Xenomorph 10 Unities + Antwort hilfreich

Hallo Xenomorph,

und ein herzliches Willkommen im SolidWorks Brett auf CAD.de 

Ein fertiges Makro dafür hab ich jetzt nicht gesucht, aber hier im Brett und hoffentlich auch bei dir geht es ja mehr um Hilfe zur Selbsthilfe - fertige Makros im produktiven Umfeld estellt zu bekommen ist in der Regel eine kostenpflichtige Sache 

Du hast also schon ein Makro, dass Zeichnungsblätter als DXF speichern kann. Irgendwoher muss in diesem Makro ja der Name gebildet werden, hast du dir das mal angeschaut, wie das gemacht wird? Wenn du nur bestimmte Blätter als DXF speichern willst ist es nur nötig vorher den Blattnamen zu ermitteln und mit dem Filter zu vergleichen, die du exportieren möchtest (oder eben nicht).

Wie weit bist du denn mit den Anpassungen in deinem Makro bzw. wo hängst du? Weißt du nicht, wie du "an die Blattnamen kommst? Das würde mit Sheet::GetName gehen - in der API Hilfe gibt es einBeispiel namens Get Sheet Numbers and Names Example (VBA)", vielleicht schaust du dir das auch mal an.

Vielleicht kommst du mit diesen Denkanstößen schon weiter, ansonsten bitte beschreiben wo es hakt und warum du da nicht weiterkommst.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Xenomorph
Mitglied
Produktdesigner

Sehen Sie sich das Profil von Xenomorph an!   Senden Sie eine Private Message an Xenomorph  Schreiben Sie einen Gästebucheintrag für Xenomorph

Beiträge: 3
Registriert: 26.11.2009

erstellt am: 02. Jan. 2013 08:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


SaveAsDXF.zip

 
Hallo Stefan,
erst einmal wünsche ich allen ein gesundes Jahr 2013!
Ich habe mir das Makro von Deiner HP heruntergeladen und es so angepaßt, dass die Blätter in ein festgelegtes Verzeichnis (C:\Data\CAD\DXF_SWX_tmp) gepackt werden. Das war ja auch nicht weiter schwer. Ich möchte aber, dass nur die Blätter mit einer bestimmten Kennung, wie z.B. "Blatt 3 (DXF)" gespeichert werden. Da ich aber noch ein Neuling in Sachen Makroprogrammierung bis übersteigt das ein wenig meinen Horizont 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 02. Jan. 2013 09:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Xenomorph 10 Unities + Antwort hilfreich

Hallo Xenomorph,

Zitat:
Original erstellt von Xenomorph:
Ich möchte aber, dass nur die Blätter mit einer bestimmten Kennung, wie z.B. "Blatt 3 (DXF)" gespeichert werden. Da ich aber noch ein Neuling in Sachen Makroprogrammierung bis übersteigt das ein wenig meinen Horizont

Hm, da solltest du dich ein wenig mit den Grundlagen der Programmierung beschäftigen ...

Ich hab dir den Code mal so geändert, dass du als Beispiel sehen kannst, wie du z.B. alls Blätter mit der Kennung "NC-" im Namen nicht als DXF speicherst; das solltest du dann entsprechend so ummodeln, wie du es brauchst.

Code:

' **********************************************************************
' * Makro erzeugt aus dem aktiven Zeichnungsdokument für alle Blätter
' * eine DXF Datei im Verzeichnis der Zeichnung. Es werden alle Blätter
' * unter dem Namen kombiniert mit dem Blattnamen abgespeichert.
' *
' * 05.04.2001 Stefan Berlitz (stefan.berlitz@solidworks.cad.de)
' * http://solidworks.cad.de
' * http://swtools.cad.de
' **********************************************************************

Dim SwApp As Object
Dim DrawingDoc As Object
Dim Sheet As Object

Dim Titel As String
Dim Datei As String
Dim temp As String
Dim pfad As String
Dim msgtxt As String

Dim i As Long
Dim AnzahlBl As Long
Dim SheetName As String

Const swDocDRAWING = 3

Sub main()
   
    Set SwApp = CreateObject("SldWorks.Application")
    Set DrawingDoc = SwApp.ActiveDoc
   
    If (DrawingDoc.GetType <> swDocDRAWING) Then
        ' wenn keine Zeichnung aktiv wird das Makro wieder beendet
        MsgBox "Nur für Zeichnungen geeignet"
        Exit Sub
    End If
   
    ' die Anzahl der Blätter holen, und dann in der Schleife eines nach
    ' dem anderen Abspeichern. Dazu ein Handle auf das aktuelle Blatt holen
    AnzahlBl = DrawingDoc.GetSheetCount
    Set Sheet = DrawingDoc.GetCurrentSheet
   
    ' damit die DXF anschließend im Verzeichnis der Zeichnung gespeichert werden
    ' muss der Pfad ermittelt werden. Ansonsten werden die DXFs im Verzeichnis
    ' des Makro gespeichert. Wenn man ein Sammelverzeichnis hat kann man das
    ' natürlich auch einfach direkt angeben
    ' temp = DrawingDoc.GetPathName
    temp = "C:\Data\CAD\DXF_SWX_tmp\"
    pfad = temp
    ' da wir nur den Pfad brauchen alles andere abtrennen
    ' For i = Len(temp) To 1 Step -1
    '    If Mid$(temp, i, 1) = "\" Then
    '        pfad = Left(temp, i)
    '        Exit For
    '    End If
    ' Next i
   
    ' wenn mehr als ein Blatt da ist könnte es sein, dass wir nicht auf
    ' Blatt 1 sind. In einem Makro müssen wir jetzt einen Trick machen, um
    ' auf das erste Blatt zurückzukommen.
    ' Dazu immer wieder ein Blatt zurückspringen und dabei den Blattnamen
    ' vergleichen; wenn der gleich bleibt haben wir das erste Blatt erreicht.
    SheetName = Sheet.GetName
    For i = 1 To AnzahlBl - 1
        DrawingDoc.SheetPrevious
        Set Sheet = DrawingDoc.GetCurrentSheet
        If (SheetName = Sheet.GetName) Then
            Exit For
        End If
        SheetName = Sheet.GetName
    Next i
       
    ' jetzt sind wir garantiert auf dem ersten Blatt und können jetzt eins
    ' nach dem anderen Abspeichern
    msgtxt = ""
    For i = 1 To AnzahlBl
       
        ' nur den Dokumentnamen holen (der in der Titelzeile von SolidWorks
        ' angezeigt wird)
        Titel = DrawingDoc.GetTitle
        ' und die Endung mit dem .slddrw abschneiden, wenn vorhanden
        If (InStr(Titel, ".sld") > 0) Then
           Datei = Left(Titel, InStr(Titel, ".sld") - 1)
        Else
           Datei = Titel
        End If
       
        ' *** hier steht jetzt in Datei der Name ***
        If InStr(1, Datei, "NC-") > 0 Then
            ' dann Blatt1 auslassen
            MsgBox "Blatt mit NC- im Namen ausgelassen"
        Else
            ' ***
           
            ' wir wollen alle Blätter als DXF mit den eingestellten Optionen abspeichern
            ' hier könnte auch z.B. einfach durch Umbenennen der Endung das Blatt als
            ' DWG (".dwg") oder TIFF (".tif") gespeichert werden. dabei werden aber
            ' jeweils die aktuellen Exportparameter benutzt, also würden z.B. alle
            ' TIFFs in derselben Größe abgespeichert.
            Datei = pfad & Datei & ".dxf"
           
            ' dann erfolgt das Speichern, die Parameter sind:
            ' DrawingDoc.SaveAs2 ( newName, unused, saveAsCopy, silent )
            ' wenn alles geklappt hat, wird eine 0 zurückgeliefert, ansonsten ein
            ' Wert ungleich 0
            If (DrawingDoc.SaveAs2(Datei, 0, True, False)) Then
                MsgBox "FEHLER BEIM SPEICHERN VON " & Datei & Chr$(10) & Chr$(13)
                msgtxt = msgtxt & "*** FEHLER bei: " & Datei & Chr$(10) & Chr$(13)
            Else
                msgtxt = msgtxt & "erfolgreich gespeichert: " & Datei & Chr$(10) & Chr$(13)
            End If
        End If     
     
        ' und wenn noch Blätter kommen dieses aktivieren
        If AnzahlBl > i Then
            DrawingDoc.SheetNext
        End If
   
    Next i
   
    ' und noch die Zusammenfassung übers Speichern ausgeben
    MsgBox msgtxt
End Sub



Ich weiß, dass es nicht genau das ist, was du haben möchtest, das ist aber Absicht - ich hoffe, du verstehst auf diese Weise wie es funktioniert, dass du es selbst abwandeln kannst und dadurch ein größeres Veständnis für die Programmierung aufbringst. Wenn du es einfach nur gemacht haben willst gilt natürlich auch hier derAufruf wie bei vielen meiner Makros auf freiwilliger Basis, deine örtliche Tafel wird es dir danken   

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz