求:高手指点,为什么会出现,选择楼梯左下角点:错误: 除数为零
autolisp吧
全部回复
仅看楼主
level 1
annuoyi 楼主
;绘制双跑直楼梯主函数-----------------------------------
(defun C:ltpmt
(/ p0 pk p1 p2 p3 p4 p5 p6 p7 p8 db dg dd df ag ud wt pb sj de)
(initget)
(ltpdcl)
(setvar "cmdecho" 0)
(initget ( + 2 4) )
(setq p0 (getpoint "\n选择楼梯左下角点:"))
(setq de (fix (/ dg df)))
(setq a1 (fix (/ de 2)))
(setq a2 ( - de a1))
(setq a3 (/ ( - db sj) 2))
(setq pk (list ( + (nth 0 p0) a3) (nth 1 p0)))
(setvar "osmode" 0)
(setlay "qita")
(command "line" p0 pk "")
(command "array" "l" "" "r" a1 "" dd)
(command "array" "l" "" "r" "" 2 ( + sj a3))
(command "array" "l" "" "r" a2 "" ( - 0 dd))
(setq p1 (polar p0 (/ pi 2) ( * ( - a1 1) dd)))
(setq p2 (polar pk (/ pi 2) ( * ( - a1 1) dd)))
(setq p3 (polar p2 0 sj))
(setq p4 (polar p3 0 a3))
(setq p5 (polar p4 ( * 1.5 pi) ( * ( - a2 1) dd)))
(setq p6 (polar p5 pi a3))
(setq p7 (polar p1 (/ pi 2) pb))
(setq p8 (polar p4 (/ pi 2) pb))
(setq pk1 (polar pk 0 sj))
(command "line" p0 p1 p7 p8 p4 p5 p6 p3 p2 pk "")
(command "line" pk pk1 "")
(if ( = ud 1)
(pfx (polar p0 0 (/ a3 2)) dd a1)
(pfx (polar p6 0 (/ a3 2)) dd a2))
(command "rotate" "c" p5 p7 "" p0 ( - ag 90))
)
;-----------------------------------------------
(defun pfx (p dd num / pc l h)
(setq l ( * dd (/ num 2))
h (getvar "TEXTSISE")
n1 (/ l dd 2)
)
(command "pline"
p
"w"
0 0
(polar p (/ pi 2) l)
"w"
(/ h 4)
0
(polar p (/ pi 2) ( + l dd))
" "
)
(setq pc (polar p (/ pi 2) ( * dd n1)))
(command "text" "j" "ML" pc h 0 (strcat "上" (itoa num)))
) ;参数输入对话框-------------------------
(defun ltpdcl (/ aa ss)
(setq aa (load_dialog "ltpmt.dcl"))
(if (not (new_dialog "ltpmt" aa))
(exit)
)
(while (/= ss 1)
(set_tile "db" "3000")
(set_tile "dg" "3300")
(set_tile "dd" "300")
(set_tile "df" "150")
(set_tile "sj" "100")
(set_tile "ag" "90")
(set_tile "pb" "1500")
(action_tile "ud" "(setq ud 1)")
(action_tile "ud1" "(setq ud 0)")
(action_tile "accept" "(ltpz)(done_dialog 1)")
(action_tile "cancle" "(done_dialog 1)(exit)")
(setq ss (start_dialog))
)
)
;获取对话框中数据值------------------------------
(defun ltpz ()
(setq db (atoi (get_tile "db"))
dg (atoi (get_tile "dg"))
dd (atoi (get_tile "dd"))
df (atoi (get_tile "df"))
sj (atoi (get_tile "sj"))
ag (atoi (get_tile "ag"))
pb (atoi (get_tile "pb"))
)
(setq sjb (list db dg dd df sj ag pb))
(setq b1 (getvar "userr1")
db ( * db b1)
dg ( * dg b1)
dd ( * dd b1)
df ( * df b1)
sj ( * sj b1)
ag ( * ag b1)
pb ( * pb b1)
)
)

2012年06月28日 14点06分 1
1