明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 自贡黄明儒

[讨论] 我编写DCL的方法

[复制链接]
发表于 2022-12-29 10:41 来自手机 | 显示全部楼层
本帖最后由 cghdy 于 2022-12-30 09:10 编辑

好贴,dcl值得好好研究,目前我觉得面板写的最好看的当属匠人营国。
我个人写面板一般用飞诗的dcl,直观。写完一般用云傲崖的dcl2lsp,转换完可以直接用。
发表于 2022-12-29 10:52 | 显示全部楼层
俺都是直接这么玩的
http://bbs.mjtd.com/thread-186177-1-1.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1金钱 +5 收起 理由
自贡黄明儒 + 5 各显神通

查看全部评分

发表于 2022-12-29 23:24 | 显示全部楼层

;; e派工具箱自定义函数
  1. (defun c:tt (/ Dlst ll1 ll2)
  2.   (defun main-pro () (princ))
  3.   (defun add ()
  4.     (setq dd (Udist 7 "" "距离<输入或鼠标直接量取>" dd nil))
  5.     (sub)
  6.   )
  7.   (defun ann ()
  8.     (setq nn (Uint 1 "" "整数" nn))
  9.     (sub)
  10.   )
  11.   (defun atx ()
  12.     (setq tx (Ustr 1 "字符串" tx nil))
  13.     (sub)
  14.   )
  15.   (defun sub ()
  16.     (setq ll1 '(dd nn tx bo1 k1 k2 k3)
  17.           ll2 '(100. 3 "abc" "1" "1" "0" "0")
  18.     )
  19.     (defun ajbcs () (xyp-MultSettile ll1 ll2))
  20.     (xyp-initSet ll1 ll2)
  21.     (setq Dlst '(("" "参数" ":boxed_column{")
  22.                  ("dd" "间距" "realp" "8" "" "(add)")
  23.                  ("nn" "数量" "intp" "8" "" "(ann)")
  24.                  ("tx" "文本" "strp" "8" "" "(atx)")
  25.                  "spacer"
  26.                  ("bo1" "变色" "bool")
  27.                  "spacer}"
  28.                  ("" "方式" ":boxed_radio_row{")
  29.                  ("k1" "水平" "radio")
  30.                  ("k2" "垂直" "radio")
  31.                  ("k3" "倾斜" "radio")
  32.                  "}"
  33.                  "spacer;"
  34.                  ("jbcs" "缺省参数" "button1" "(ajbcs)")
  35.                 )
  36.     )
  37.     (if        (= (xyp-Dcl-Init Dlst "【DCL测试】" t) 1)
  38.       (main-pro)
  39.     )
  40.   )
  41.   (sub)
  42.   (princ)
  43. )



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-12-30 02:35 | 显示全部楼层
本帖最后由 vitalgg 于 2022-12-30 02:45 编辑

MVCNIS 方法:6步实现动态DCL编程
https://atlisp.cn/doc/dev-dcl-mvcnis.html





  1. (defun example:dcl-progressbar2 (/ dcl-fp dcl-tmp valuebar v1 v2 v3)
  2.   "MVCNIS 法: 6 步进行动态 DCL 开发之进度条"
  3.   ""
  4.   ""
  5.   (require (quote dcl:*))
  6.   "1. Model 建立数据模型。"
  7.   (setq value-bar 0.01 v1 0.01 v2 0.01 v3 0.01)
  8.   "2. View 建立显示视图。"
  9.   (dcl:dialog "example")
  10.   (progn (dcl:progressbar "pbar0" "width=30;fixed_width=true;height=1;"  t)
  11.    (dcl:progressbar "pbar1" "width=30;fixed_width=true;"    t)
  12.    (dcl:progressbar "pbar2" "width=30;fixed_width=true;"   t)
  13.    (dcl:progressbar "pbar3" "width=30;fixed_width=true;"   t)
  14.    (dcl:mtext "mt"    1 30)
  15.    (dcl:begin-cluster "row"   "")
  16.    (progn (dcl:button "btn1"   "清零"    "")
  17.     (dcl:button "btn2"   "进度+"   "")
  18.     (dcl:end-cluster)))
  19.   (dcl:dialog-end-ok-cancel)
  20.   "3. Control 创建控制流程"
  21.   (defun chg-bar (step)
  22.     (dcl:set-mtext "mt" "执行第一阶段:")
  23.     (while (and (< v1 1)
  24.     (> v1 0))
  25.       (setq v1 (+ v1 step))
  26.       (if (> v1 1)
  27.           (setq v1 1)
  28.         (if (< v1 0)
  29.             (setq v1 0)))
  30.       (dcl:set-progressbar "pbar1" v1)
  31.       (dcl:set-progressbar "pbar0" (/ (+ v1 v2 v3)  3.0))
  32.       (sleep 0.5))
  33.     (dcl:set-mtext "mt" "执行第二阶段: ")
  34.     (while (and (< v2 1)
  35.     (> v2 0))
  36.       (setq v2 (+ v2 (* 0.2 step)))
  37.       (if (> v2 1)
  38.           (setq v2 1)
  39.         (if (< v2 0)
  40.             (setq v2 0)))
  41.       (dcl:set-progressbar "pbar2" v2)
  42.       (dcl:set-progressbar "pbar0"  (/ (+ v1 v2 v3)
  43.                3.0))
  44.       (sleep 0.2))
  45.     (dcl:set-mtext "mt" "执行第三阶段: ")
  46.     (while (and (< v3 1)
  47.     (> v3 0))
  48.       (setq v3 (+ v3 (* 0.3 step)))
  49.       (if (> v3 1)
  50.           (setq v3 1)
  51.         (if (< v3 0)
  52.             (setq v3 0)))
  53.       (dcl:set-progressbar "pbar3"   v3)
  54.       (dcl:set-progressbar "pbar0"  (/ (+ v1 v2 v3) 3.0))
  55.       (sleep 0.5))
  56.     (dcl:set-mtext "mt" "执行完毕!! "))
  57.   (defun cb-btn1 nil (setq v1 0.001 v2 0.001 v3 0.001)
  58.    (dcl:set-mtext "mt" "准备中 ... ")
  59.    (mapcar (quote dcl:set-progressbar)
  60.      (quote ("pbar0" "pbar1" "pbar2" "pbar3"))
  61.      (quote (0.001 0.001 0.001 0.001))))
  62.   (defun cb-btn2 nil (chg-bar 0.1))
  63.   "4. New 一个新对话框对象。"
  64.   (dcl:new "example")
  65.   "5. Init 初始化对话框"
  66.   (set_tile "title"
  67.       "dcl-进度条示例")
  68.   (cb-btn1)
  69.   "6. Show dialog 显示并进行交互"
  70.   (dcl:show)
  71.   (princ))










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-12-31 21:44 | 显示全部楼层
谢谢大师分享,,学习了
发表于 2023-1-3 16:17 | 显示全部楼层
dcl不需要手写吧,我做对话框都是直接用飞诗的插件,每个控件都是模块化的,简单好用

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
自贡黄明儒 + 1 很给力!

查看全部评分

发表于 2023-1-6 16:28 | 显示全部楼层
学习下大佬们的好东西
发表于 2023-1-9 15:05 | 显示全部楼层
谢谢分享               .
发表于 2023-3-6 15:58 | 显示全部楼层
补个函数,防小白迷路
(defun xty-str-substall ( new old str / inc len )
    (setq len (strlen new)
          inc 0
    )
    (while (setq inc (vl-string-search old str inc))
        (setq str (vl-string-subst new old str inc)
              inc (+ inc len)
        )
    )
    str
)
回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-9 21:08 | 显示全部楼层
感谢大神为明经做的贡献
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-13 00:42 , Processed in 0.159964 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表