修改了一个DCL也合成lsp了,有些问题
源码来自明经;根据论坛修改了一个DCL也合成lsp了,但是按钮各方面无效,要怎样才能加入lsp点击按钮或输入命令执行呢,有没有前辈能整个例子学习一下
先学会 hello world不好么:handshake 链接:https://pan.baidu.com/s/1hG6JinB70NIp2E30LxqzJQ?pwd=9b65
提取码:9b65 (defun c:tt(/ dcl_xssl_dia getpt makexssldcl xy)
(defun makexssldcl(/ lst_str str file f)
(setq lst_str '(
"xssl:dialog {"
" label = \"面板消失示例\" ;"
" :column {"
" :row {"
" :button {"
" key = \"b1\" ;"
" label = \"拾取坐标\" ;"
" }"
" :edit_box {"
" alignment = top ;"
" edit_width = 20 ;"
" is_enabled=false;"
" key = \"e1\" ;"
" }"
" }"
" }"
" :button {"
" is_cancel = true ;"
" key = \"cancel\" ;"
" label = \"确定\" ;"
" }"
"}"
)
)
(setq file (vl-filename-mktemp "DclTemp.dcl"))
(setq f (open file "w"))
(foreach str lst_str
(princ "\n" f)
(princ str f)
)
(close f)
file
)
(defun cs(a b c d e f /)
(print (list a b c d e f ))
)
(defun getpt( /)
(setq
pt(getpoint "\n指定点:")
x(rtos (car pt)2 3)
y(rtos (cadr pt)2 3)
xy(strcat x","y)
)
(command "circle" pt 50)
(setq ssa(ssadd (entlast) ssa))
(set_tile "e1" xy)
(dcl_xssl_dia)
)
(setq ssa(ssadd))
(defun dcl_xssl_dia()
(setq xssl_dia(makexssldcl))
(setq dcl_id(load_dialog xssl_dia))
(new_dialog "xssl" dcl_id"" (cond (jypt) ( '(-1 -1) )))
(or xy (setq xy ""))
(set_tile "e1" xy)
(action_tile "cancel""(setq jypt(done_dialog -1))")
(action_tile "b1""(cs $key $VALUE $DATA $REASON $X $Y)(setq jypt(done_dialog 1))")
(setq id(start_dialog))
(unload_dialog dcl_id)
(vl-file-delete xssl_dia)
(cond
((= id 1)
(getpt)
)
((= id -1)
(vl-cmdf "erase" ssa "")
(princ"\n退出程序!")
)
)
)
(dcl_xssl_dia)
(princ)
) 楼上说的对先学会 hello world ,不然修改现成的没什么意义 你这个只是把dcl,改成lsp,并没有关联的部分,就是点击控件,执行对应lsp,也就是一个萝卜一个坑 我会(print "\nHello Girls!")
页:
[1]