Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Scripte erstellen und aufrufen Via VBA

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:  Scripte erstellen und aufrufen Via VBA (2398 mal gelesen)
SkiFrank
Mitglied


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

Beiträge: 3
Registriert: 07.01.2011

erstellt am: 07. Jan. 2011 16: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


batchrunner.txt


batchrunner.GIF

 
Hallo Zusammen,

Ich wollte mir mittels VBA einen "Batchrunner" für ACAD baun, dieser soll in allen Zeichnungen eines Ordners das selbe Kommando ausführn und dann wie in der Form eingestellt (Format und Pfad) abspeichern werden.
Leider bin ich was die Direkte Steuerung aus VBA angeht nicht wirklich fit. Deswegen folgender Ansatz:

Mit VBA ein Skript erstellen und im ACAD aufrufen

Hier mein Code:
Private Sub CommandButton3_Click()
Open "C:\batchrunner.scr" For Output As #1
    z = 0
    Print #1, "filedia 0"
    Print #1, "cmddia 0"
    verz = TextBox1.Text
    verz2 = TextBox2.Text & "\"
    If verz = "" Then
        MsgBox ("Bitte Input-Feld Prüfen!")
    End If
    If OptionButton1.Value = True Then
        typ = "dwg"
    End If
    If OptionButton2.Value = True Then
        typ = "dxf"
    End If
    b$ = Dir(verz & "\*." & typ)
    Do Until b$ = ""
            z = z + 1
            b$ = Dir
    Loop
   
    MsgBox (z & " Dateien gefunden." & (Chr(13) & Chr(10)) & "möchten Sie fortfahren"), 1, Abfrage
    If Antwort = vbCancel Then
    End
    End If
   
'Zeichnung öffnen
    a$ = Dir(verz & "\*." & typ)
    x = 0
    Do Until a$ = ""
            x = x + 1
           
            c = verz2 & a$
           
            namen = Left$(a$, Len(a$) - 4)
            Print #1, "_open"
            Print #1, verz & "\" & a$
            Print #1, "zoom"
            Print #1, "g"

'Command
            If TextBox3.Text <> "" Then Print #1, TextBox3.Text
                                 
           
'DXF speichern
            If OptionButton8.Value = True Then
            Print #1, "_saveas"
            Print #1, "dxf"
            Print #1, "v"
            Print #1, "r12"
            Print #1, "16"
            Print #1, c
            Print #1, "_close n"
            End If
           
            If OptionButton9.Value = True Then
            Print #1, "_saveas"
            Print #1, "dxf"
            Print #1, "v"
            Print #1, "2000"
            Print #1, "16"
            Print #1, c
            Print #1, "_close n"
            End If

            If OptionButton10.Value = True Then
            Print #1, "_saveas"
            Print #1, "dxf"
            Print #1, "v"
            Print #1, "2004"
            Print #1, "16"
            Print #1, c
            Print #1, "_close n"
            End If

'DWG speichern
            If OptionButton3.Value = True Then
            Print #1, "_saveas"
            Print #1, "2000"
            Print #1, c
            Print #1, "_close n"
            End If
           
            If OptionButton4.Value = True Then
            Print #1, "_saveas"
            Print #1, "2004"
            Print #1, c
            Print #1, "_close n"
            End If

            If OptionButton5.Value = True Then
            Print #1, "_saveas"
            Print #1, "2007"
            Print #1, c
            Print #1, "_close n"
            End If

'Datei schließen
            If x = z Then
            Print #1, "filedia"
            Print #1, "1"
            Print #1, "cmddia"
            Print #1, "1"
           

            End If
            a$ = Dir
    Loop
    Close 1

    ThisDrawing.SendCommand NewLine("filedia~0~")
    ThisDrawing.SendCommand NewLine("script~C:\batchrunner.scr~~")

Unload BatchrunnerForm1
End Sub

Function NewLine(Txt As String) As String
    NewLine = Replace(Txt, "~", vbCr)
   
End Function


Skript erstellen klappt soweit, jedoch Hört ACAD nach dem Schließen der ersten Zeichnung auf.
Ich hab ein Bild meiner Form, sowie das auf c:\ gespeicherte Script (endung zu txt geändert) angehängt.

Ich weiß hier nicht weiter, und bitte euch um Hilfe

Gruß und Danke

Frank

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


Ex-Mitglied

erstellt am: 07. Jan. 2011 17:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

herzlich willkommen bei CAD-de!

Nur mal nach oberflächlichem Lesen:

Guck mal Dein AutoCAD-Applikationsfenster an, wenn Du die letzte Zeichnung schliesst ==> dann ist auch der Befehlszeilenbereich tschüss. Ist der Befehlszeilenbereich weg, ist auch die Basis für Script entzogen. 

Ich würde per VBA die DWG öffnen und dann je Zeichnung ein Script über SendCommand starten, das sollte dann keine Probleme bereiten.

Viel Erfolg, - alfred -

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

SkiFrank
Mitglied


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

Beiträge: 3
Registriert: 07.01.2011

erstellt am: 10. Jan. 2011 08:05    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,

Danke für die superschnelle Antwort.
Leider kann das nicht die Fehlerursache sein, da im Hintergrund immer die "Zeichnung1" offen ist.
Im Befehlszeilenfenster steht nun:

Befehl: batchrunner
-vbarun
Makroname: batchrunner
Befehl: nil

Befehl: filedia

Neuen Wert für FILEDIA eingeben <1>: 0

Befehl: script

Scriptdateinamen eingeben <C:\Programme\ACADM 2008\Zeichnung1.scr>:
C:\batchrunner.scr
RÜCKTASTE drücken, um Skript zu unterbrechen.

Befehl: filedia
Neuen Wert für FILEDIA eingeben <0>: 0

Befehl: cmddia
Neuen Wert für CMDDIA eingeben <0>: 0

Befehl: _open

Danach ist Schluss. Meiner Meinung nach müsste er doch nun mit dem zweiten "open" aus dem Script weitermachen 

Dein Ansatz klingt auch net schlecht, ich werde mal Versuchen ob ich das hinbekomme.

Gruß
Frank

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


Ex-Mitglied

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

Hi,

nun, ich würde meine Variante bevorzugen. 

Und es wurde noch geäussert: vor Start Deiner Aktion probehalber mal die Einstellung SDI=1 zu setzen (vor allem anderen) (... )
Ob's für Dein zeichnungsübergreifendes Script hilft, hab ich jetzt nicht probiert, ist aber einen Versuch wert!

- alfred -

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

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