chen3732088 发表于 2024-7-31 17:46:48

请各位老师看看怎么修改,或者提供一下修改思路

小白在论坛上抄了一个制作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))
    )
)
)
)

chen3732088 发表于 2024-8-30 15:02:52

非常感谢lee50310,cjrun,xyp1964三位老师的指导,帮助小白我搞出第一个插件,功能是便于钣金折弯展开计算,下面放源码出来,大家有用的就下载来看看吧哈哈哈,谢谢大家

lee50310 发表于 2024-8-1 08:40:23

本帖最后由 lee50310 于 2024-8-1 08:42 编辑

已改好, 輸入兩數值 再按 結果鍵
執行指令:ww

cjrun 发表于 2024-8-28 21:49:59

本帖最后由 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)
[*])

寒潮大冬瓜 发表于 2024-8-1 08:45:56

lee50310 发表于 2024-8-1 08:40
已改好, 輸入兩數值 再按 結果鍵
執行指令:ww

很好→很棒!很好~很棒!!很好……很棒!!!

chen3732088 发表于 2024-8-1 08:49:47

lee50310 发表于 2024-8-1 08:40
已改好, 輸入兩數值 再按 結果鍵
執行指令:ww

非常感谢老师

chen3732088 发表于 2024-8-5 20:42:09

lee50310 发表于 2024-8-1 08:40
已改好, 輸入兩數值 再按 結果鍵
執行指令:ww

您好lee老师,请问在这个代码上添加一个记忆功能,记住数A上一次输入的结果,请问应该怎么改,或者老师有参考的案例吗,谢谢您

muai2010 发表于 2024-8-5 21:28:14

这个对lee50310来说分分钟的事情啦

lee50310 发表于 2024-8-6 09:54:37

chen3732088 发表于 2024-8-5 20:42
您好lee老师,请问在这个代码上添加一个记忆功能,记住数A上一次输入的结果,请问应该怎么改,或者老师有 ...

面板設定記憶功能, 這裡有以前發表的 參考範例 請參考看看!

[源码] <*** DCL面板設定+記憶功能+幻燈片(尺吋標註) ***>
http://bbs.mjtd.com/thread-189122-1-1.html

chen3732088 发表于 2024-8-28 17:54:20

lee50310 发表于 2024-8-6 09:54
面板設定記憶功能, 這裡有以前發表的 參考範例 請參考看看!

[源码]


您好lee老师,最近才有空去研究这个记忆功能,但是看了您给出案例,本人愚昧,实在想不出如何插入代码,能劳烦您有空帮忙修改一下吗,这是我根据您帮忙修改的程序去改的一个钣金展开计算,谢谢

lee50310 发表于 2024-8-28 19:55:12

chen3732088 发表于 2024-8-28 17:54
您好lee老师,最近才有空去研究这个记忆功能,但是看了您给出案例,本人愚昧,实在想不出如何插入代码, ...

.......我看看!
页: [1] 2
查看完整版本: 请各位老师看看怎么修改,或者提供一下修改思路