- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Melden
Hallo
ich habe ein .lsp geschrieben, welches in einem .scr geladen wird.
Das .scr möchte ich zusammen mit einem DWG mittels Consolenbefehl abarbeiten lassen.
"C:\Program Files\Autodesk\AutoCAD 2017\accoreconsole.exe" /I "C:\temp\AutoCAD_LISP\DR_m_Ass.dwg /s "C:\Temp\AutoCAD_LISP\xref2.lsp"
Das .lsp führt einige Befehle aus, und macht eine Ausgabe in eine Text-Datei.
(Es ist kein Zusatzprogramm involviert , es ist NUR AutoCAD 2017 installiert. Sollte also von jedem so nachvollziehbar sein, einzig die 3 DWG's (XREF Struktur) müssen selbst erstellt warden)
(ich habe eine DR_m_ass.dwg, die 2 XREFs enthält : DR1_mm.dwg + DR2_cm.dwg)
Wenn ich AutoCAD normal öffne, eine Zeichnung (die auch XREFS enthält) öffne, und dann mittels
SCRIPT -> "C:\Temp\AutoCAD_LISP\xref2.lsp"
das Script starte, wird die Text-Datei angelegt und befüllt.
Wenn ich den Consolenbefehl von oben benutze, wird nichts ausgegeben.
Im Consolenfenster selbst sehe ich nur das hier :
Script:
(load "C:\\Temp\\AutoCAD_LISP\\xref2.lsp") (c:XREF_LIST)
xfre2.lsp
(defun C:XREF_LIST( / Block)
(vl-load-com)
(setq outputdir "C:\\Temp\\")
(setq Filename (strcat outputdir "XREF_" (getvar "dwgname") ".txt" ))
(setq file (open Filename "w"))
(setq amount_xref 0)
(vlax-for BLOCK (vla-get-blocks (vla-get-activedocument(vlax-get-acad-object)))
(if (= (vla-get-isxref BLOCK):vlax-true)
(progn
(setq amount_xref (+ amount_xref 1))
(setq XREF_NAME (vla-get-name Block))
(setq XREF_amount (sslength (ssget "_X" (list ( cons 2 XREF_NAME )))))
(princ (strcat "\nXREF Name : " XREF_NAME " - Anzahl : " (itoa XREF_amount)) file)
(setq i 0)
(repeat XREF_Amount
(setq XYZ_Wert (cdr (assoc 10 (entget (ssname (ssget "_X" (list ( cons 2 XREF_NAME ))) i)))))
(setq Entity_Name (cdr (assoc -1 (entget (ssname (ssget "_X" (list ( cons 2 XREF_NAME ))) i)))))
(setq Objekt (vlax-ename->vla-object Entity_name))
(setq get_obj_rotation (vlax-get-property Objekt 'Rotation))
(setq XScale_eff (vlax-get-property Objekt 'XEffectiveScaleFactor))
(setq YScale_eff (vlax-get-property Objekt 'YEffectiveScaleFactor))
(setq ZScale_eff (vlax-get-property Objekt 'ZEffectiveScaleFactor))
(princ (strcat "\nXREF Name : " XREF_NAME " Entityname : " ) file)
(princ Entity_Name file)
(princ "\n Coordinates : " file)
(princ XYZ_Wert file)
(princ "\n EffectiveXScale-factor : " file)
(princ XScale_eff file)
(princ "\n EffectiveYScale-factor : " file)
(princ YScale_eff file)
(princ "\n EffectiveZScale-factor : " file)
(princ ZScale_eff file)
(princ "\n Rotation um Z : " file)
(princ get_obj_rotation file)
(princ)
(setq i (+ i 1))
)
)
)
)
(if (= amount_xref 0)
(princ "no XREF" file)
)
(close file)
(princ)
)
Gelöst! Gehe zur Lösung
