next up previous
Naprej: Kontrola notranjosti lika Gor: Laboratorijske vaje pri predmetu Nazaj: Vztrajnostni moment kroga

Konstrukcija prereza

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) 
)



Leon Kos
Mon Oct 9 07:40:12 GMT+0100 1995