<*** 2維DCL 動態行列控制 ***>
本帖最后由 lee50310 于 2023-12-29 05:01 编辑2維DCL 動態行列控制
此程式修改自 不死貓老師自動編碼工具範例-多條件處理
來源出處:http://bbs.mjtd.com/thread-101021-1-1.html
執行指令:sab
執行效果如動態圖
本帖最后由 wzg356 于 2022-7-19 22:14 编辑
提供另一种思路---常用的
;(autodcl+- '("a" "b" "c"))
(defun autodcl+- (lst / ff f i n key keys id dd)
(setq ff (vl-filename-mktemp "temp.dcl") f (open ff "w"))
(write-line "MY_SS: dialog{label=\"dcl+-\";" f)
(setq n(length lst))
(repeat (setq i n)
(setq keys(cons(setq key(strcat "KEY"(rtos(setq i(1- i)))))keys))
(write-line (strcat ":edit_box{label=\"\";key=" (vl-prin1-to-string key) ";}")f)
)
(write-line ":row{: button{label = \"+1\";key = \"kk+\";}" f)
(write-line " : button{label = \"-1\";key = \"kk-\";}}" f)
(write-line " ok_only;}" f)
(close f)
(setq keys(reverse keys))
(setq id (load_dialog ff))
(new_dialog "MY_SS" id)
(mapcar '(lambda(x y)(set_tile x y))keys lst)
(action_tile "kk+" "(if(< n 10)(progn(setq lst(append lst(list(last lst))))(done_dialog 2))(alert \"非法\"))")
(action_tile "kk-" "(if(> n 1)(progn(setq lst(reverse(cdr(reverse lst))))(done_dialog 3))(alert \"非法\"))")
(action_tile "accept" "(setq lst(mapcar 'get_tile keys))(done_dialog 1)")
(setq dd(start_dialog))
(unload_dialog Id)(vl-file-delete ff)
(cond
((> dd 1)(autodcl+- lst))
((= dd 1)lst)
(t nil)
)
)
本帖最后由 lee50310 于 2022-7-20 03:34 编辑
嘉伟钢结构 发表于 2022-7-19 10:28
老师:这是做什么用的?
行業應用 可做成輸入式的對話視窗做統計及計算,計算完後可轉為CAD表格插入圖面
例: 這是電氣開關箱配線回路局部圖 可做成依負載迴路的 負載值及數量 ,使用的電壓 分別填寫 如(圖一)(圖二)
然後計算出各迴路的負載值 及最後的總負載,電流值 將他轉換為cad表格 插入圖面 如圖(三)
但(圖三)只能做一維
若是換成(圖四)(垂直 列)負載名稱有7項配電盤(橫向 行)有5戶 (1A ,2B...5B) 要填入每項負載值
就必須採用2 維來做成統計對話窗
这个东西有个缺点,就是只适合在高分辨率显示器使用,
遇到14寸笔记本,施展不开拳脚 本帖最后由 lee50310 于 2022-7-19 12:27 编辑
這是改良版 V1.2版 (未釋出)
自動新增行列項目標籤
长见识了,多谢楼主分享。 老师:这是做什么用的? 感觉挺好玩的,对话框还动态调用了 台湾同胞又一力作,感谢分享~ 台湾同胞的配电箱系统图都是这么画的啊,长见识了
页:
[1]
2