Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Abfrage bei DXF speichern

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 Autodesk Produkte
Autor Thema:  Abfrage bei DXF speichern (1647 mal gelesen)
Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 26. Mrz. 2011 11:39    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 zusammen!

Ich habe eines meiner älteren Programme etwas erweitert.
Ferner möchte ich diesem hinzufügen, dass wenn die DXF - Datei
bereits vorhanden ist, dann MsgBox "Yes" / "No" etc.
Hier der Code:

Code:

For Each BlockEnt In DSSet
    Set BlockObj = BlockEnt
    If BlockObj.ObjectName = "AcDbBlockReference" Then
        If BlockObj.HasAttributes Then
            BlockWert = BlockObj.GetAttributes
            '--DXF - Datei erzeugen--!!!
           
            If Dir(LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString) = BlockWert(0).TextString Then
                '--Abfrage ob man die bereits vorhandene Datei überschreiben möchte--!!!
                Dim Antwort As VbMsgBoxResult
                Antwort = MsgBox("Die Datei ist bereits vorhanden, wollen Sie die Datei überschreiben?", vbQuestion + vbYesNo, "Frage")
                Select Case Antwort
                    Case vbYes
                        strTempPath = LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString & ".dwg"
                        strFilename = RemoveExtension(ThisDrawing.Name)
                        ThisDrawing.Wblock strTempPath, DSSet
                        Set objExportFile = ThisDrawing.Application.Documents.Open(strTempPath)
                        With objExportFile
                        .SaveAs LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString, acR18_dxf
                        .Close
                        End With
                        Kill strTempPath
                        strTempPath = RemoveExtension(strTempPath)
                        Set objExportFile = Nothing
                        Call ListeDXFRegen
                    Case vbNo
                        Call ListeDXFRegen
                        Exit Sub
                End Select
            Else
                strTempPath = LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString & ".dwg"
                strFilename = RemoveExtension(ThisDrawing.Name)
                ThisDrawing.Wblock strTempPath, DSSet
                Set objExportFile = ThisDrawing.Application.Documents.Open(strTempPath)
                With objExportFile
                .SaveAs LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString, acR18_dxf
                .Close
                End With
                Kill strTempPath
                strTempPath = RemoveExtension(strTempPath)
                Set objExportFile = Nothing
                Call ListeDXFRegen
            End If
      End If
    End If
Next BlockEnt

Das mit der Abfrage wenn die Datei bereits vorhanden ist funktioniert so leider noch nicht.
Wo liegt da mein Fehler, oder wie müßte es richtig lauten?

Vielen Dank im Voraus.

------------------
Gruß

Dirk

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 26. Mrz. 2011 12:28    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 Dirk.B 10 Unities + Antwort hilfreich

Hi Dirk,

An welcher Stelle hakt es denn?!
Beim ermitteln, ob die Datei vorhanden ist oder bei dem Yes/No Auswerten?!

Gruß, Carsten

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


Ex-Mitglied

erstellt am: 26. Mrz. 2011 13:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> If Dir(LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString) = BlockWert(0).TextString Then

Kannst Du mal nachsehen, was in den Variablen:

    LB_DXFFileLocal.Caption
    BlockWert(0).TextString

drinsteht?

Ich würde mal, ohne den Inhalte der Variablen zu kennen, vermuten, dass da die Extension fehlt; oder endet der Inhalt von BlockWert(0).TextString mit ".dxf"?

- alfred -

------------------
www.hollaus.at

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 26. Mrz. 2011 21:28    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 Carsten!
Hallo Alfred!

Danke für die Tips.
Das mit dem & ".dxf" wars.

Code:

If Dir(LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString & ".dxf") = BlockWert(0).TextString & ".dxf" Then

Nun funktioniert es prima.

... schönes Wochenende noch.

------------------
Gruß

Dirk

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

AutoCAD 2021/2022
CAD+T
HP ZBook 15 G4, 64-bit,
WIN 10 Pro

erstellt am: 27. Mrz. 2011 14:51    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!

Habe dazu noch eine Frage.
Wie kann ich dem User nach dem Durchlauf der Schleife die Info
geben, welche Datei überschrieben unter "Yes" und / oder unter "No"
nicht überschrieben wurde?

Code:

If Dir(LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString & ".dxf") = BlockWert(0).TextString & ".dxf" Then
    '--Abfrage ob man die bereits vorhandene Datei überschreiben möchte--!!!
    Dim Antwort As VbMsgBoxResult
    Dim DxfVorhanden As String
    DxfVorhanden = BlockWert(0).TextString & ".dxf"
    Antwort = MsgBox("Die Datei - " & DxfVorhanden & " - ist bereits vorhanden, wollen Sie die Datei überschreiben?", vbQuestion + vbYesNo, "Frage")
    Select Case Antwort
        Case vbYes
            strTempPath = LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString & ".dwg"
            strFilename = RemoveExtension(ThisDrawing.Name)
            ThisDrawing.Wblock strTempPath, DSSet
            Set objExportFile = ThisDrawing.Application.Documents.Open(strTempPath)
            With objExportFile
            .SaveAs LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString, acR18_dxf
            .Close
            ''###--schreiben in einer Textdatei ".txt" oder ".log" welche Datei überschrieben wurde--##????
           
            End With
            Kill strTempPath
            strTempPath = RemoveExtension(strTempPath)
            Set objExportFile = Nothing
        Case vbNo
            Resume Next
            ''###--schreiben in einer Textdatei ".txt" oder ".log" welche Datei nicht überschrieben wurde--##????
           
    End Select
Else

Hätte da jemand eine Lösungansatz für mich?

Vielen Dankim Voraus.

------------------
Gruß

Dirk

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 27. Mrz. 2011 15: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


DxfLog.txt


DxfLog1.txt

 
... habe da etwas gefunden, was auch soweit funktioniert.

Code:

Select Case Antwort
    Case vbYes
        strTempPath = LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString & ".dwg"
        strFilename = RemoveExtension(ThisDrawing.Name)
        ThisDrawing.Wblock strTempPath, DSSet
        Set objExportFile = ThisDrawing.Application.Documents.Open(strTempPath)
          With objExportFile
        .SaveAs LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString, acR18_dxf
        .Close
       
        '--in Textdatei schreiben--!!!
        Dim Nr As Integer
        Dim datei As String
        datei = LB_DXFFileLocal.Caption & "\" & "DxfLog.txt"
        Nr = FreeFile
        Open datei For Append As #Nr
        Print #1, BlockWert(0).TextString & ".dxf"
        Close #Nr
        '------------------------------
       
        End With
        Kill strTempPath
        strTempPath = RemoveExtension(strTempPath)
        Set objExportFile = Nothing
    Case vbNo
        Resume Next
End Select

Die Datei DxfLog.txt sieht dann so wie im Anhang aus.
Wie bekommt man es hin, das diese dann so aussieht, we ich sie
in der DxfLog1.txt von Hand geschrieben habe?
Ist das überhaupt möglich?

Vielen Dank im voraus.

------------------
Gruß

Dirk

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


Ex-Mitglied

erstellt am: 27. Mrz. 2011 15:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ich fürchte, ich verstehe die Frage nicht, sonst würde ich zu:

>> Wie kann ich dem User nach dem Durchlauf der Schleife die Info geben [...]

In jedes Case eine MsgBox einsetzen.

Code:
MsgBox "Überschreibe: " & LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString

...oder Du arbeitest mit

Code:

ThisDrawing.Utility.Prompt "Überschreibe: " & LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString

Und ich kann mir nicht vorstellen, dass das gefragt war, das hättest Du schon gemacht, oder?

- alfred -

------------------
www.hollaus.at


Ex-Mitglied

erstellt am: 27. Mrz. 2011 15:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Ok, unsere Posts haben sich überschnitten. 

>> Wie bekommt man es hin, das diese dann so aussieht, we ich sie
>> in der DxfLog1.txt von Hand geschrieben habe?
>> Ist das überhaupt möglich?

Du sammelst in zwei Arrays die Meldungen, die Du ausgeben willst, zusammen. Einmal für die überschriebenen, einmal für die anderen Drawings.

Und am Ende Deines Durchlaufs schreibst Du diese dann raus.

.... das mal die Vorstellung, wie ich's machen würde. Mein Problem dabei ist, dass ich nicht weiss, was daran (bei Dir) nicht funktioniert? Die Idee wirst Du ja auch schon gehabt haben, vermute ich mal. 

- alfred -

------------------
www.hollaus.at

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 27. Mrz. 2011 20:15    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 Alfred!

... mit dem über Array nachgedacht hast Du recht.
Ich weiss nur nicht, wie ich das richtig umsetzen muss?

Daher wäre ich Dir sehr dankbar, wenn Du mir dabei helfen könntest.

Code:

If Dir(LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString & ".dxf") = BlockWert(0).TextString & ".dxf" Then
    '--Abfrage ob man die bereits vorhandene Datei überschreiben möchte--!!!
    Dim Antwort As VbMsgBoxResult
    Dim DxfVorhanden As String
    DxfVorhanden = BlockWert(0).TextString & ".dxf"
    Antwort = MsgBox("Die Datei - " & DxfVorhanden & " - ist bereits vorhanden, wollen Sie die Datei überschreiben?", vbQuestion + vbYesNo, "Frage")
    Select Case Antwort
        Case vbYes
            strTempPath = LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString & ".dwg"
            strFilename = RemoveExtension(ThisDrawing.Name)
            ThisDrawing.Wblock strTempPath, DSSet
            Set objExportFile = ThisDrawing.Application.Documents.Open(strTempPath)
            With objExportFile
            .SaveAs LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString, acR18_dxf
            .Close
            '--DXFArray1---------------!!!
            Dim DXFArray1() As Variant
            Dim i As Info
            DXFArray1 = BlockWert(0).TextString & ".dxf"
            For i = 1 To UBound(DXFArray1)
            'Hier die Frage, wie müßte das mit dem Array richte lauten???
            'Mit dem Array habe ich so meine Problem.
            'Wie setzte ich es wo richtig ein?
            '....
            '....
           
           
            '--in Textdatei schreiben--???
            Dim Nr As Integer
            Dim datei As String
            datei = LB_DXFFileLocal.Caption & "\" & "DxfLog.txt"
            Nr = FreeFile
            Open datei For Append As #Nr
            Print #1, BlockWert(0).TextString & ".dxf"
            Close #Nr
            '------------------------------
           
            End With
            Kill strTempPath
            strTempPath = RemoveExtension(strTempPath)
            Set objExportFile = Nothing
        Case vbNo
            Resume Next
            '--DXFArray1---------------!!!
            Dim DXFArray2() As Variant
            Dim e As Info
            DXFArray2 = BlockWert(0).TextString & ".dxf"
            For e = 1 To UBound(DXFArray2)
            'Hier die Frage, wie müßte das mit dem Array richte lauten???
            'Mit dem Array habe ich so meine Problem.
            'Wie setzte ich es wo richtig ein?
            '....
            '....
           
           
            '--in Textdatei schreiben--???
            Dim Nr1 As Integer
            Dim datei1 As String
            datei1 = LB_DXFFileLocal.Caption & "\" & "DxfLog.txt"
            Nr1 = FreeFile
            Open datei1 For Append As #Nr
            Print #1, BlockWert(0).TextString & ".dxf"
            Close #Nr
            '------------------------------
    End Select
Else
    strTempPath = LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString & ".dwg"
    strFilename = RemoveExtension(ThisDrawing.Name)
    ThisDrawing.Wblock strTempPath, DSSet
    Set objExportFile = ThisDrawing.Application.Documents.Open(strTempPath)
    With objExportFile
    .SaveAs LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString, acR18_dxf
    .Close
    End With
    Kill strTempPath
    strTempPath = RemoveExtension(strTempPath)
    Set objExportFile = Nothing
End If

Vielen Dank im Voraus.

------------------
Gruß

Dirk

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


Ex-Mitglied

erstellt am: 27. Mrz. 2011 20:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ich sehe in Deinem Code nicht, wie Du was aufrufst, ob dieses Codeschnippsel in einem Modul oder in der ThisDrawing oder in einer eigenen Instanz läuft. Wie soll ich da was machen können?
Ein Vergleich dazu wäre, dass ich eine Nockenwelle brauche, aber nicht verrate, was rundherum ist (Automarke, Baujahr, Motortyp, ...). 

Nun denn, versuchen wir's

In einem Modul definierst Du

Code:
Dim FilesWritten1 as Collection  'hier kommen die rein, die 'normal' geschrieben wurden
Dim FilesWritten2 as Collection  'hier kommen die rein, die 'überschrieben wurden'
Dim FilesWriteCanceled as Collection  'hier kommt rein, was nicht überschrieben wurde

In der Procedure, wo Du den Durchlauf startest, schreibst Du dann am Anfang

Code:
FilesWritten1 = New Collection
FilesWritten2 = New Collection
FilesWriteCanceled = New Collection

In Deiner Abarbeitung schreibst Du dann

Code:
If Dir(LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString & ".dxf") = BlockWert(0).TextString & ".dxf" Then
  Select Case Antwort
      Case vbYes
        '....
        call FilesWritten2.Add(LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString)
        '....
      Case vbNo
        '....
        call FilesWriteCanceled.Add(LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString)
        '....
  End Select
Else
  '...
  call FilesWritten1.Add(LB_DXFFileLocal.Caption & "\" & BlockWert(0).TextString)
  '...
End If


'und am Ende (in der Proc, wo Du die Schleifen durchgelaufen bist) kannst Du mit

Code:
Dim tStr as Variant
For each tStr in FilesWritten1
  'da läufst Du jetzt alle 'normal' geschriebenen Dateien durch
  'in tStr steht der Dateiname drin
Next
'und das gleiche für die anderen beiden Collections.

die Dateinamen rausschreiben.

HTH, - alfred -

------------------
www.hollaus.at

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 28. Mrz. 2011 20:13    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 Alfred!

Vielen Dank erst einmal.
Das hat mir schon mal sehr geholfen.

------------------
Gruß

Dirk

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)2023 CAD.de | Impressum | Datenschutz