zhangbxx 发表于 2010-4-8 16:22:00

求!求!求!解决LISP基础问题

本帖最后由 作者 于 2010-4-12 16:19:34 编辑 <br /><br /> <p><font size="5">请各位高手指教!</font></p><p><font size="5">&nbsp;</font></p><p><font size="5"></font></p>

ZZXXQQ 发表于 2010-4-8 19:25:00

本帖最后由 作者 于 2010-4-15 18:50:31 编辑

;学生做作业呢。

//这是对话框,在当前目录下保存成rectang.dcl文件
rectang:dialog{
label="画矩形";
:edit_box{label="矩形长度";key="length";edit_width=8;}
:edit_box{label="矩形宽度";key="width";edit_width=8;}
spacer;
ok_cancel;
}

;这是程序,在当前目录下保存成扩展名为lsp的文件
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (> (setq dcl_id (load_dialog "rectang") 0) (progn
(if (new_dialog "rectang" dcl_id "") (progn
   (set_tile "length" "200")
   (set_tile "width" "100")
   (action_tile "accept" "(getdata) (done_dialog 1)")
   (action_tile "cancel" "(done_dialog 0)")
   (setq re (statr_dialog))
)
   (alert "Unable to display dialog box!\n无法显示对话框!")
)
(unload_dialog dcl_id)
)
(alert "Unable to load dialog box!\n无法装载对话框!")
)
(if (= re 1) (progn
(setq pt (getpoint "\nInset Center Point 中心插入点 :")
      pt1 (polar (polar pt pi (* l 0.5)) (/ pi -2) (* w 0.5))
      pt2 (polar (polar pt1 0 l) (/ pi 2) w))
(command ".rectang" pt1 pt2)
))
(setvar "CMDECHO" 1)
(princ)
)
(defun getdata ()
(setq w (read (get_tile "width"))
          l (read (get_tile "length")))
)

crazylsp 发表于 2010-4-10 17:36:00

版主真强,喜欢喜欢这样简单的程序, ( 清晰朴实 纯兰辽阔)

zhangbxx 发表于 2010-4-12 11:31:00

<p>不妨直说,我对LISP基本上是不会,现在有这个任务,才找到这里。</p>

zhangbxx 发表于 2010-4-12 11:38:00

多谢2楼!

xyp1964 发表于 2010-4-12 13:12:00

<p>;; 矩形绘制<br/>(defun c:tt (/ ilst l1 l2)<br/>&nbsp; (cmdla0)<br/>&nbsp; ;; __________________________________________________________________<br/>&nbsp; (defun main-pro (/ p1 p2 s1)<br/>&nbsp;&nbsp;&nbsp; (setq p1 (list x y)<br/>&nbsp;&nbsp; p2 (xyp-get-Pt2XY p1 wide high)<br/>&nbsp;&nbsp; s1 (xyp-rectang p1 p2)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; ;; __________________________________________________________________<br/>&nbsp; (defun aaa ()<br/>&nbsp;&nbsp;&nbsp; (xyp-dcl-VectorImagePtn "k0" '(((0 0) (2000 0) (2000 1000) (0 1000) (0 0))) 5 2)<br/>&nbsp; )<br/>&nbsp; ;; __________________________________________________________________<br/>&nbsp; (setq&nbsp;l1 '(x y wide high)<br/>&nbsp;l2 '(0. 0. 2000. 1000.)<br/>&nbsp; )<br/>&nbsp; (defun ajbcs () (xyp-Multiple-Settile l1 l2))<br/>&nbsp; (xyp-initSet l1 l2)<br/>&nbsp; (setq&nbsp;Ilst '(("k0" nil "imagebutton" "-2" "24" "" "(XYP-ABOUTME)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (nil nil "spacer;")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("x" "X" "real" "8")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("y" "Y" "real" "8")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("wide" "宽" "real" "8")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("high" "高" "real" "8")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (nil nil "spacer;")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("jbcs" "缺省参数" "button1" "(ajbcs)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (nil nil "spacer;")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (nil nil "user" "(aaa)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (if (= (xyp-Dcl-Init Ilst "【矩形绘制】" t) 1)<br/>&nbsp;&nbsp;&nbsp; (main-pro)<br/>&nbsp; )<br/>&nbsp; (cmdla1)<br/>)</p><p>效果:</p>

zhangbxx 发表于 2010-4-15 11:08:00

ZZXXQQ发表于2010-4-8 19:25:00static/image/common/back.gif;学生做作业呢。

<p></p>好像第二个有点问题,我是真的不懂!能麻烦改下吗?

ZZXXQQ 发表于 2010-4-15 18:52:00

少了读数据函数。2楼已经加上。

ZZXXQQ 发表于 2010-4-15 19:15:00

少了读数据函数。2楼已经加上。

123426006 发表于 2010-4-16 13:40:00

<p>二楼的可行</p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p>http://www.xiaoshuoxia.com/line.gif <br/>凡人修仙传全文阅读 重生之官道全文阅读 陈二狗的妖孽人生全文阅读 卡徒全文阅读<br/>近身保镖全文阅读&nbsp; 间客全文阅读 重生之官路商途全文阅读<br/>即时比分</p>
页: [1]
查看完整版本: 求!求!求!解决LISP基础问题