请各位老师看看怎么修改,或者提供一下修改思路
小白在论坛上抄了一个制作DCL的代码,想修改成计算输入的数字,点击确认后返回计算结果到最后一个空格内,但是完全没有头绪,用了AI帮忙修改都不行,所以来请教一下各位老师,或者提供一下修改的思路,谢谢。(defun C:WW ()(setq dcl_file (open (setq tmp-dcl-file-name (vl-filename-mktemp nil nil ".DCL")) "w"))
(progn
(foreach x
'(
"ZW:dialog {"
" label = \"计算\" ;"
" :boxed_column {"
" :edit_box{label = \"数A:\" ; name = \"BH\"; height=1;}"
" :edit_box{label = \"数B:\" ; name = \"JD\"; height=1;}"
" :edit_box{label = \"结果:\" ; name = \"JG\"; height=1;}"
" }"
" ok_button;"
" cancel_button;"
"}"
) (write-line x dcl_file) )
(setq dcl_file (close dcl_file))
(setq dcl_id (load_dialog tmp-dcl-file-name))
(if (not (new_dialog "ZW" dcl_id)) (exit)) ;; 激活对话框
(setq side "") ; 初始化side变量
(setq AA (start_dialog)) ; 启动对话框
(if (eq AA 1)
(progn
(setq TT1 (getvar "BH"))
(setq YY1 (getvar "JD"))
(setq result (* TT1 YY1))
(setvar "result" (itoa JG))
)
)
)
)
非常感谢lee50310,cjrun,xyp1964三位老师的指导,帮助小白我搞出第一个插件,功能是便于钣金折弯展开计算,下面放源码出来,大家有用的就下载来看看吧哈哈哈,谢谢大家 本帖最后由 lee50310 于 2024-8-1 08:42 编辑
已改好, 輸入兩數值 再按 結果鍵
執行指令:ww
本帖最后由 cjrun 于 2024-8-29 16:31 编辑
;增加输入为0时的判断和自动计算
[*](defun C:QQA ()
[*](defun s_tan (A1);正切函数;输入弧角度如π
[*] (if (= (cos A1) 0) (sin A1) (/ (sin A1) (cos A1)))
[*])
[*](setq dcl_file (open (setq tmp-dcl-file-name (vl-filename-mktemp nil nil ".DCL")) "w"))
[*](progn
[*] (foreach x
[*] '(
[*] "ZW:dialog {"
[*] " label = \"折弯系数\" ;"
[*] " :boxed_column {"
[*] " :edit_box{label = \"板厚:\" ; key = \"BH\"; height=1;}"
[*] " :edit_box{label = \"角度:\" ; key = \"JD\"; height=1;}"
[*] ":row {edit_width = true;"
[*] " :button{label = \"计算\"; key = \"SUM\" ;height=1; width=1; fixed_width = true; }"
[*] " :edit_box{ key = \"JG\"; height=1; edit_width = 14; }"
[*] "}"
[*] " }"
[*] ":text_part{ label=\"备注:\"; key=\"SGG\";}"
[*] ":text_part{ label=\"计算结果为单边扣除尺寸\"; key=\"SRR\";}"
[*] " ok_cancel;"
[*] ":text_part{ label=\"BY:Mentos\"; key=\"tmx\";}"
[*] "}"
[*] )
[*] (write-line x dcl_file)
[*]
[*] )
[*] (defun do:sum ()
[*] (setq jg_key (rtos (* 0.833 (read bh_key)(/ 1 (s_tan (/ (* (read jd_key) 3.14) 360)))) 2 1))
[*] )
[*] (defun fun:sum ()
[*] (do:sum)
[*] (set_tile "JG"jg_key)
[*] )
[*]
[*] (setq dcl_file (close dcl_file))
[*] (setq dcl_id (load_dialog tmp-dcl-file-name))
[*] (if (not (new_dialog "ZW" dcl_id)) (exit)) ;; 激活对话
[*] ;key命名触发操作
[*] (if (not bh_key) (progn (setq bh_key "10") ))
[*] (if (not jd_key) (progn (setq jd_key "10")))
[*] (do:sum)
[*]
[*] (set_tile "BH" bh_key)
[*] (set_tile "JD" jd_key)
[*] (set_tile "JG" jg_key)
[*] ;(if (not sum) (setq bh "10"))
[*] (action_tile "BH" (vl-prin1-to-string '(progn (if (= $value "0")(alert "板厚不能为 0 !!!") (setq bh_key $value))(fun:sum)))) ;当编辑框有输入值时 将值存入 bh_key变数中
[*] (action_tile "JD" (vl-prin1-to-string '(progn (if (= $value "0")(alert "角度不能为 0 !!!") (setq jd_key $value)) (fun:sum))))
[*] (action_tile "SUM" "(fun:sum)")
[*] (action_tile "cancel" "(done_dialog 0)") ;按取消键 离开
[*] (mode_tile "tmx" 1)
[*] (mode_tile "SGG" 1)
[*] (mode_tile "SRR" 1)
[*] (mode_tile "JG" 1)
[*] (action_tile "accept" "(setq sum_key (atof (get_tile \"JG\")))(done_dialog 1)");按确认键
[*] (setq AA (start_dialog)) ; 启动对话框
[*] ;(if (eq AA 1)
[*] ; (progn
[*] ; )
[*] ;)
[*])
[*](princ)
[*])
lee50310 发表于 2024-8-1 08:40
已改好, 輸入兩數值 再按 結果鍵
執行指令:ww
很好→很棒!很好~很棒!!很好……很棒!!! lee50310 发表于 2024-8-1 08:40
已改好, 輸入兩數值 再按 結果鍵
執行指令:ww
非常感谢老师 lee50310 发表于 2024-8-1 08:40
已改好, 輸入兩數值 再按 結果鍵
執行指令:ww
您好lee老师,请问在这个代码上添加一个记忆功能,记住数A上一次输入的结果,请问应该怎么改,或者老师有参考的案例吗,谢谢您 这个对lee50310来说分分钟的事情啦 chen3732088 发表于 2024-8-5 20:42
您好lee老师,请问在这个代码上添加一个记忆功能,记住数A上一次输入的结果,请问应该怎么改,或者老师有 ...
面板設定記憶功能, 這裡有以前發表的 參考範例 請參考看看!
[源码] <*** DCL面板設定+記憶功能+幻燈片(尺吋標註) ***>
http://bbs.mjtd.com/thread-189122-1-1.html lee50310 发表于 2024-8-6 09:54
面板設定記憶功能, 這裡有以前發表的 參考範例 請參考看看!
[源码]
您好lee老师,最近才有空去研究这个记忆功能,但是看了您给出案例,本人愚昧,实在想不出如何插入代码,能劳烦您有空帮忙修改一下吗,这是我根据您帮忙修改的程序去改的一个钣金展开计算,谢谢 chen3732088 发表于 2024-8-28 17:54
您好lee老师,最近才有空去研究这个记忆功能,但是看了您给出案例,本人愚昧,实在想不出如何插入代码, ...
.......我看看!
页:
[1]
2