Membuat bentangan dengan LISP

Coding ini dibilang masih sederhana karena hanya bisa membentangkan profil U dari polyline yang tidak memiliki radius dan masih bersifat horizontal dan vertikal saja.

Konsep penulisan coding disusun untuk meletakkan formula. Tapi sayangnya formula yang dicari hilang :-P. Kalau ada formula bentangan plate boleh dikirim ke saya ya. Ke UdaafAtYahooDotCoDotId.

Berikut coding sederhana untuk membuat bentangan U. Semoga bisa dipelajari

[sourcecode language='cpp']

(defun c:FP1 (/ ss ename ed obj elist thelist pt1 pt2 pt3 pt4 cnt len)
(vl-load-com)
(setq ss (ssget ‘((0 . “LWPOLYLINE”))))
(setq ename (ssname ss 0))
(setq ed (entget ename))
(setq obj (vlax-ename->vla-object ename))
(setq elist (vlax-get-property obj ‘coordinates))
(setq thelist (vlax-safearray->list  (variant-value elist)))
(setq cnt 0)
(setq oldosn (getvar “osmode”))

(repeat 1
(setq pt1 (list (nth cnt thelist) (nth (1+ cnt) thelist)))
(setq cnt (+ 2 cnt))
(setq pt2 (list (nth cnt thelist) (nth (1+ cnt) thelist)))
(setq cnt (+ 2 cnt))
(setq pt3 (list (nth cnt thelist) (nth (1+ cnt) thelist)))
(setq cnt (+ 2 cnt))
(setq pt4 (list (nth cnt thelist) (nth (1+ cnt) thelist)))
)
(princ )
(setq len (+ (+(abs(- (car pt1) (car pt2))) (abs(- (cadr pt1) (cadr pt2))))
(+(abs(- (car pt2) (car pt3))) (abs(- (cadr pt2) (cadr pt3))))
(+(abs(- (car pt3) (car pt4))) (abs(- (cadr pt3) (cadr pt4))))
)
);setq
(entdel ename)
(setvar “osmode” 0)
(setq pt5 (list (+ (car pt1)len) (cadr pt1)))
(command “line” pt1 pt5 “”)
(setvar “osmode” oldosn)
(princ)
)
(princ)

[/sourcecode]

Semoga bisa bermanfaat.

Salam,

Abu Labib