Attribute extrahieren

Fragen und Anmerkungen zu den Lispprogrammen von CADwiesel
Antworten
kau
Newbie
Beiträge: 4
Registriert: Mo 17. Okt 2005, 08:18
Wohnort: CH-7403 Rhäzüns

Attribute extrahieren

Beitrag von kau » Do 24. Nov 2005, 12:28

Hallo zusammen
Im Autocad2006 kann man mit eatext den Inhalt von Blockattributen in ein Excelfile extrahieren. Dabei werden Blöcke, die in der Vorlage nicht angekreuzt oder nicht vorhanden (wohl aber in der Zeichnung) sind, ignoriert.
Im Autocad2002 gibt es den Befehl eattext auch. Dort werden aber die Attribute von Blöcken, die auf zwar auf der Zeichnung aber in der Vorlage nicht vorhanden sind, konsequent mit allen möglichen Daten ebenfalls extrahiert.Mit der Option "o" (Objekte) kann man zwar Objekte auswählen,aber nur auf dem aktuellen Layout. Eine Liste mit den gewünschten Blöcken (aus verschiedenen Layouts) wird aber nicht angenommen. Ich möchte den "Export" über Lisp automatisieren. Gibt es da eine andere Möglichkeit?

Danke im Voraus :) :)
kau

; Filename zv-daten.lsp
; Datum 31.10.05
;
; Funktion Datenaustausch aktuelle Zeichnung von/nach Zeichnungsverwaltung
;
; Revision
;


(defun c:daten-export () ; Inhalt der Zchg.-Köpfe exportieren für ZV
(setvar "cmdecho" 0)
(setvar "attdia" 0)
(setvar "filedia" 0)

; testen, wie der Blockname des Zchg.-Kopfes heisst: falls SF_ix.... zuerst die Köpfe auswechseln
; siehe Funktion ......

(setq vorlage "N:/module/2002/Vorlagen/ems-sf-2002.blk"
exportpfad "c:/cad-temp/"
zchg-name (getvar "dwgname")
nam-laenge (strlen zchg-name)
exportname (substr zchg-name 1 (- nam-laenge 4))
exportfile (strcat exportpfad exportname)
)
(mach-b-liste)
(if (/= (findfile (strcat exportfile ".xls")) nil)
(command "_-eattext" "o" b-liste "" "_n" "_n" "_y" vorlage "x" exportfile "" )
(command "_-eattext" "o" b-liste "" "_n" "_n" "_y" vorlage "x" exportfile )
; (command "_-eattext" "a" "_n" "_n" "_y" vorlage "x" exportfile "") )
; (command "_-eattext" "a" "_n" "_n" "_y" vorlage "x" exportfile )
)
(setvar "cmdecho" 1)
(setvar "attdia" 1)
(setvar "filedia" 1)
(princ)
)


(defun c:daten-import() ; Inhalt der Zchg.-Köpfe ersetzen mit den Angaben aus der ZV
(setvar "cmdecho" 0)
(setvar "attdia" 0)
(setvar "filedia" 0)
(princ "\n....funktioniert noch nicht !......\n")
; testen, wie der Blockname des Zchg.-Kopfes heisst: falls nicht SF_A.... zuerst die Köpfe auswechseln
; siehe Funktion ......

(setvar "cmdecho" 1)
(setvar "attdia" 1)
(setvar "filedia" 1)
(princ)
)

(defun mach-b-liste () ; Liste der in der Zchg.vorhandenen Köpfe erstellen
(setvar "cmdecho" 0)
(setq block-l (tblnext "block" t)
b-name (cdr (assoc 2 block-l))
b-liste nil
)
(if (= b-name nil)
(setq wahl "false")
(progn
(setq wahl "true")
(if (= (strcase (substr b-name 1 2)) "SF")
(setq b-liste (list b-name))
(princ)
)
)
)
(while (/= wahl "false")
(setq block-l (tblnext "block"))
(if (/= block-l nil)
(progn
(setq b-name (cdr (assoc 2 block-l)))
(if (= (strcase (substr b-name 1 2)) "SF")
(if (or (= b-liste nil) (= b-liste ""))
(setq b-liste (list b-name))
(setq b-liste (cons b-name b-liste))
)
(princ)
)
)
(setq wahl "false")
)
)

(setvar "cmdecho" 1)
(princ)
)

Antworten