S programom Autocad bomo narisali prereze, ki jih bomo kasneje izracunali s programom ISK. V Autocadu bomo uporabljali le daljice ( LINE) in loke ( ARC). Liki zgrajeni iz teh dveh primitivov so lahko zelo kompleksni z veckratnimi luknjami v prerezu.
S programom v Autolispu pa podatke risbe izpisemo v dve datoteki lines.txt in arcs.txt, ki jih uporabimo pri izracunu karakteristik.
Vsaka od navedenih datotek ima v prvi vrstici stevilo gradnikov, ki sledijo. Daljice imajo tako v vsaki vrstici koordinato x in y prve in druge tocke daljice. Loki pa imajo najprej tocko sredisca, nato pa se radij, zacetni in kocni kot loka.
Program v lispu nalozim v Autocad z ukazom (load "post") ter ga izvedemo z ukazom post. Ce program preimenujemo v acad.lsp se bo ob vsakem zagonu Austocad-a avtomatsko nalozil.
;; Program naredi dve datoteki LINES.TXT
;; in ARCS.TXT, ki vsebujejo podatke o
;; crtah in lokih pobranih iz baza Acad-a
;; (C) 1994 Leon Kos
(defun c:post( / f i ss ent lines arcs)
(defun pp(dxf ent / p)
(setq p (assoc dxf (entget ent)))
(princ (cadr p) f) (princ " " f)
(princ (caddr p) f) (princ " " f)
)
(defun pv(dxf ent / p)
(setq p (assoc dxf (entget ent)))
(princ (cdr p) f) (princ " " f)
)
(setq i 0 arcs 0 lines 0)
(setq f (open "LINES.TXT" "w"));dat.daljic
(setq ss (ssget "X" (list '(0 . "LINE"))))
(if (not (null ss))
(progn
(princ (setq lines (sslength ss)) f)
(princ " \n" f)
(while (< i lines)
(setq ent (ssname ss i))
(pp 10 ent) (pp 11 ent)
(princ "\n" f)
(setq i (1+ i))
)
)
(princ "0 \n" f)
)
(close f)
(setq f (open "ARCS.TXT" "w"));dat. lokov
(setq ss (ssget "X" (list '(0 . "ARC"))))
(if (not (null ss))
(progn
(princ (setq arcs (sslength ss) i 0)f)
(princ " \n" f)
(while (< i arcs)
(setq ent (ssname ss i))
(pp 10 ent) ; center
(pv 40 ent) ; radij
(pv 50 ent) ; zac. kot
(pv 51 ent) ; koncni kot
(princ "\n" f)
(setq i (1+ i))
)
)
(princ "0 \n" f)
)
(close f)
(princ "Risba vsebuje ") (princ lines)
(princ " daljic in ") (princ arcs)
(princ " lokov.") (princ)
)