[lisp调用dcl的问题
www.dimcax.com
[lisp调用dcl的问题
lisp:
(defun c:dia5b()
(setvar "cmdecho" 0)
(dcl_dia5b)
(prin1)
)
(defun dcl_dia5b()
(setq dcl_id (load_dialog "dia5b"))
(new_dialog "dia5b" dcl_id)
(set_tile "kww" "50")
(set_tile "khh" "50")
(action_tile "bb1" "(get_ww_hh)(done_dialog 1)")
(action_tile "bb2" "(get_ww_hh)(done_dialog 2)")
(action_tile "bb3" "(get_ww_hh)(done_dialog 3)")
(setq dd (start_dialog))
(cond ((= dd 1)(c:dia5b1))
((= dd 2)(c:dia5b2))
((= dd 3)(c:dia5b3))
(t (alert "未完成任何动作!!!!"))
)
)
(defun get_ww_hh()
(setq ww(atof (get_tile "kww")))
(setq hh(atof (get_tile "khh")))
)
(defun c:dia5b1()
(setvar "cmdecho" 0)
(get_input_data)
(command "pline" p1 p2 p3 pm34 pm pm14 "c")
(prin1)
)
(defun c:dia5b2()
(setvar "cmdecho" 0)
(get_input_data)
(command "pline" p1 p2 p3 p4 "c")
(command "line" p1 p3 "")
(command "line" p2 p4 "")
(prin1)
)
(defun c:dia5b3()
(setvar "cmdecho" 0)
(get_input_data)
(command "pline" p1 p2 p4 p3 "c")
(prin1)
)
(defun get_input_data()
;;;(setq ww (getreal "宽度ww:"))
;;;(setq hh (getreal "\n高度hh:"))
(setq p1 (getpoint "\n插入点:"))
(setq p2 (polar p1 0 ww))
(setq p3 (polar p2 (* pi 0.5) hh))
(setq p4 (polar p3 pi ww))
(setq pm (inters p1 p3 p2 p4))
(setq pm12(polar p1 0 (* ww 0.5)))
(setq pm34(polar p3 pi (* ww 0.5)))
(setq pm23(polar p2 (* pi 0.5) (* hh 0.5)))
(setq pm14(polar p1 (* pi 0.5) (* hh 0.5)))
)
dcl:
dia5b:dialog{
label="按钮测试范例";
:boxed_row{
label="图形尺寸";
:edit_box{label="宽度ww";key="kww";edit_width=8;}
:edit_box{label="高度hh";key="khh";edit_width=8;}
}
:button{label="绘制 dia5b1 → l 型";key="bb1";}
:button{label="绘制 dia5b2 → x 型";key="bb2";}
:button{label="绘制 dia5b3 → 漏斗型";key="bb3";}
spacer_1;
cancel_button;
}
我把这两个文件放在同一个文件夹内,运行lisp程序不调用dcl,只有在 (setq dcl_id (load_dialog "dia5b"))
中指定路径才能正常运行,如何不指定路径也能正常运行?
d
方法1:将dcl文件放在autocad搜索路径里,即options命令->files->support file search path,在此添加搜索路径;
方法2:将dcl文件与lsp文件一起编译到一个vlx文件中,这时lsp中不需要指定路径.
change your life style.
d
谢谢了,我试试
d