明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 12921|回复: 73

[资源] 重写经典---麦版面板dcl 短小精干(20241016传可伸缩版))

    [复制链接]
发表于 2023-1-31 20:53:20 | 显示全部楼层 |阅读模式
本帖最后由 wzg356 于 2024-10-18 20:23 编辑

炒冷饭了,顶顶人气,互相经验交流
节前看有关DCL帖子有些多,新年了,也来一波

20241016上传一个可伸缩的版本-底部下载

以下是最初版本
;一直这样使用

;去年疫情影响,空闲多,无聊对主程序(最下面)做了改写,略微精简

;面板函数mainpaneldcl发动程序
(defun c:xx ()(mainpaneldcl(list
        (list "常用1"
                (list "快速选择" "ss")
                ;功能名称/命令,这种命令方式可空格/回车重复执行上次
                ;命令也可以是(*)方式
                (list "快速建块" "qblk")
                (list "选特定字" "sstxt")                                
                (list "对象替换" "rss")
                (list "原位缩放" "scs")                                
                (list "递增复制" "caf")                                                                                                                        
        )               
        (list "制图环境"
                (list "标准外框" "wtk")                                
                (list "建标注样" "dimset")
                (list "Dim刷字h" "dimSETtxtsize")
                (list "字h刷Dim" "txtSETdimScale")
                (list "MY 宋 体" "mysimsunb")
                (list "等线仿宋" "myHztxt")                                
                (list "换背景色" "bjs")
                (list "MY打印机" "setp")
                (list "》a" "laytool");进入子板a
        )                        
))(princ))
(defun c:laytool ()(mainpaneldcl(list               
        (list "层操作"
                (list "层 关 闭" "lcs")
                (list "层反关闭" "lcsa")
                (list "层 冻 结" "lfs")
                (list "层反冻结" "lfsa")
                (list "层 锁 定" "lks")
                (list "层反锁定" "lksa")
                (list "层全打开" "w1")
                (list "层全解冻" "w2")
                (list "层全解锁" "w3")
                (list "三个全部" "w123")
                (list "《" "XX");返回主板
        )
))(princ))

;面板主程序
(vl-load-com)
(defun mainpaneldcl (strklst / maxl keylst n nn lcmd ff f id cmd)
        (setq ff(vl-filename-mktemp "temp_pannel.dcl") f(open ff "w"))
        (write-line "MYbutton:button{width =10;vertical_margin=none;horizontal_margin=none;}" f)
        (write-line "MYpanel:dialog{label=\"xx工具\";:row{" f)
        (setq n 0 nn(mapcar 'length (mapcar 'cdr strklst)) maxl(apply 'max nn));表长
        (mapcar (function(lambda(x / l1)
                (write-line(strcat ":column{label=" (vl-prin1-to-string(car x))";")f)
                (setq x(cdr x) x(append x(repeat(- maxl(length x))(setq l1(cons '("" "")l1)))));表补长
                (mapcar (function(lambda(y / k)
                        (setq k(strcat "key" (itoa(setq n(1+ n)))))
                        (write-line(strcat
                                ":MYbutton{label="(vl-prin1-to-string(car y))";key= "(vl-prin1-to-string k)
                                (if(= (setq y(cadr y)) "")";is_enabled = false;}" ";}");填充的空白键
                        )f)                        
                        (setq keylst(cons k keylst) lcmd(cons y lcmd));键表key1开始/命令表
                ))x)
                (write-line "}" f)
        ))strklst)
        (write-line "}:row{" f)
        (write-line(if(> (length nn)2)":text{label=\"盛年不再来!岁月不待人!\";is_enabled = false;}" "spacer_0;")f)
        (write-line":button{label=\"关闭\"; key=\"cancel\";is_cancel=true;width=6;fixed_width=true;}" f)
        (write-line "spacer_0;}}" f)
        (close f)
        (setq id(load_dialog ff))(vl-file-delete ff)
        (new_dialog "MYpanel" id "3" P_MYpaneldcl)
        (mapcar (function(lambda(x)(action_tile x(strcat "(setq P_MYpaneldcl(done_dialog "(substr x 4)"))"))))keylst)
        (setq n (start_dialog))(unload_dialog id)        
        (if(> n 0)(if(wcmatch(setq cmd(nth(1- n)(reverse lcmd))) "(*)")(eval(read cmd));(函数)方式
                (vla-SendCommand(vla-get-ActiveDocument(vlax-get-acad-object))(strcat cmd "\n"));c:命令方式,方便重复执行
        ));点击按钮的值
)

本帖子中包含更多资源

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

x

评分

参与人数 8明经币 +8 金钱 +20 收起 理由
hubeiwdlue + 1 赞一个!
leedun + 1 + 20 很给力!
lee50310 + 1 很给力!
丶俗人 + 1 很给力!
USER2128 + 1 赞一个!
趣意人生 + 1 很给力!
guosheyang + 1 很给力!
tigcat + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-2-17 21:35:33 | 显示全部楼层
  1. ;快捷键---图层控制
  2. (defun c:ww ()
  3. (mainpaneldcl
  4. (list
  5. (list "图层控制tcg"
  6. (list "图层关闭/l-" "layoff")
  7. (list "图层关闭(反)/tcgbf" "tcgbf")
  8. (list "全部显示/`"   "layon")
  9. (list "孤立图层/q" "layiso")
  10. (list "退出孤立/qq" "layuniso")
  11. )


  12. ))
  13. (princ))

  14. ;面板主程序
  15. (vl-load-com)
  16. (defun mainpaneldcl (strklst / maxl keylst n nn lcmd ff f id cmd)
  17.         (setq ff(vl-filename-mktemp "temp_pannel.dcl") f(open ff "w"))
  18.         (write-line "MYbutton:button{width =10;vertical_margin=none;horizontal_margin=none;}" f)
  19.         (write-line "MYpanel:dialog{label="xx工具";:row{" f)
  20.         (setq n 0 nn(mapcar 'length (mapcar 'cdr strklst)) maxl(apply 'max nn));表长
  21.         (mapcar (function(lambda(x / l1)
  22.                 (write-line(strcat ":column{label=" (vl-prin1-to-string(car x))";")f)
  23.                 (setq x(cdr x) x(append x(repeat(- maxl(length x))(setq l1(cons '("" "")l1)))));表补长
  24.                 (mapcar (function(lambda(y / k)
  25.                         (setq k(strcat "key" (itoa(setq n(1+ n)))))
  26.                         (write-line(strcat
  27.                                 ":MYbutton{label="(vl-prin1-to-string(car y))";key= "(vl-prin1-to-string k)
  28.                                 (if(= (setq y(cadr y)) "")";is_enabled = false;}" ";}");填充的空白键
  29.                         )f)                        
  30.                         (setq keylst(cons k keylst) lcmd(cons y lcmd));键表key1开始/命令表
  31.                 ))x)
  32.                 (write-line "}" f)
  33.         ))strklst)
  34.         (write-line "}:row{" f)
  35.         (write-line(if(> (length nn)2)":text{label="盛年不再来!岁月不待人!";is_enabled = false;}" "spacer_0;")f)
  36.         (write-line":button{label="关闭"; key="cancel";is_cancel=true;width=6;fixed_width=true;}" f)
  37.         (write-line "spacer_0;}}" f)
  38.         (close f)
  39.         (setq id(load_dialog ff))(vl-file-delete ff)
  40.         (new_dialog "MYpanel" id "3" P_MYpaneldcl)
  41.         (mapcar (function(lambda(x)(action_tile x(strcat "(setq P_MYpaneldcl(done_dialog "(substr x 4)"))"))))keylst)
  42.         (setq n (start_dialog))(unload_dialog id)        
  43.         (if(> n 0)(if(wcmatch(setq cmd(nth(1- n)(reverse lcmd))) "(*)")(eval(read cmd));(函数)方式
  44.                 (vla-SendCommand(vla-get-ActiveDocument(vlax-get-acad-object))(strcat cmd "\n"));c:命令方式,方便重复执行
  45.         ));点击按钮的值
  46. )
我的程序  汉字面板为什么是  乱码的啊?
 楼主| 发表于 2024-10-17 15:30:35 | 显示全部楼层
decemc 发表于 2024-10-17 13:06
大佬,我一直用你之前的面板,刚试过了最新的版本,默认是收缩的,个人觉得不太方便,还有就是每列的对齐, ...

第一个问题,稍有接触lsp就可以改啊
(if mytoolgnall strklst0(list(car strklst0)(cadr strklst0)))
改为
(if mytoolgnall (list(car strklst0)(cadr strklst0))strklst0)

":button{label=\""(if mytoolgnall "《" "》")"\"; key=\"key1\";width=4;}"
改为
":button{label=\""(if mytoolgnall "》" "《")"\"; key=\"key1\";width=4;}"

第二个问题,这种改法不通用,也失去简洁的意义了,自己继续学习试做修改吧

 楼主| 发表于 2024-10-16 15:42:16 | 显示全部楼层
Qwer1243 发表于 2024-10-14 16:24
我也想问这个,感觉太挤了,看着有点眼花

(write-line "MYbutton:button{width =10;vertical_margin=none;horizontal_margin=none;}" f)
改为
(write-line "MYbutton:button{width =10;horizontal_margin=none;}" f)

(write-line "MYbutton:button{width =10;}" f)
发表于 2023-1-31 22:16:40 | 显示全部楼层
谢谢楼主分享
发表于 2023-2-1 07:57:26 | 显示全部楼层
老大,复制试了一下,太牛了。。。。
发表于 2023-2-1 08:00:30 | 显示全部楼层
謝謝樓主分享
发表于 2023-2-1 09:19:14 | 显示全部楼层
🐮  感谢分享源码!
发表于 2023-2-1 09:24:52 | 显示全部楼层
手机上看,有运行时截图吗
发表于 2023-2-1 09:44:33 来自手机 | 显示全部楼层

老迈的好像还带自定义命令的,你精简掉了吗

老迈的好像还带自定义命令的,你精简掉了吗
发表于 2023-2-1 10:01:30 | 显示全部楼层
謝謝樓主分享!!!!
发表于 2023-2-1 10:31:08 | 显示全部楼层
很好,谢谢分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 04:48 , Processed in 0.207300 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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