明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: lostbalance

[源码] 通用多层面板

    [复制链接]
 楼主| 发表于 2022-12-23 11:26:50 | 显示全部楼层
注册 发表于 2022-12-18 08:26
试过了,貌似没用

之前第二句少了个右括号,补上再试试。

(setq title0 (strcat "阳羡刚刚好CAD工具箱 V20221212 " datestr))

ps,把四行代码都复制,直接个括号,论坛认为是重复发帖,发不了
发表于 2022-12-23 13:02:33 | 显示全部楼层
lostbalance 发表于 2022-12-23 11:26
之前第二句少了个右括号,补上再试试。

(setq title0 (strcat "阳羡刚刚好CAD工具箱 V20221212 " date ...

         ;通用定义
        (setq datestr (menucmd "m=$(edtime,$(getvar,date),YYYY年M月D日 HH:MM:SS DDD)"))
        (setq title0 (strcat "阳羡刚刚好CAD工具箱 V20221212 " datestr))
         (setq msg
                 (strcat
                         "\n EDIT BY 阳羡刚刚好" datestr
                 )
         )
         (setq switch "main 主板(&Z)")
貌似还是不行,还是谢谢你了
发表于 2022-12-23 13:04:59 | 显示全部楼层
lostbalance 发表于 2022-12-23 11:26
之前第二句少了个右括号,补上再试试。

(setq title0 (strcat "阳羡刚刚好CAD工具箱 V20221212 " date ...

可以了,第2句那里有个错字,修改一下就可以了

本帖子中包含更多资源

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

x
发表于 2022-12-23 13:35:13 | 显示全部楼层
lostbalance 发表于 2022-12-23 11:26
之前第二句少了个右括号,补上再试试。

(setq title0 (strcat "阳羡刚刚好CAD工具箱 V20221212 " date ...

再请教一下,如何实现空格键执行上一个命令,而不是重复打开工具面板?劳烦您了
发表于 2022-12-23 13:43:25 | 显示全部楼层
nochao 发表于 2021-5-18 10:02
我找到解决办法了:(vla-sendcommand (vla-get-ActiveDocument (vlax-get-acad-object)) "**\n")

请问具体如何表达在源码中啊,后面的两个星号对吗?
 楼主| 发表于 2022-12-30 22:32:52 | 显示全部楼层
注册 发表于 2022-12-23 13:35
再请教一下,如何实现空格键执行上一个命令,而不是重复打开工具面板?劳烦您了

论坛逛的不勤快。以下是我目前自用的调整后的代码,就是最后面的cond判断执行,由原来的read改成了Vlax-Invoke-Method,我也是抄别人的,感觉后者是模拟了键盘输入命令名的操作,CAD记录下的上一步操作是你后来选中的命令,而不是面板命令,所以可以右键重复执行。



(setq *DOC* (vla-get-ActiveDocument (vlax-get-acad-object)))  ;;这个可以放在通用库里,或者放在函数前面,比较常用和通用

(cond ;;新的命令判断方式,代码更短

    ((boundp (read (strcat "c:" cmd)))
        ;(princ "\n")
        ;;使用以下这句,右键重复的命令为面板
        ;(eval (read (strcat "(c:" cmd ")")))
        ;;使用以下这句,右键重复的命令为面板启动的程序
        (Vlax-Invoke-Method *DOC* 'SendCommand (strcat cmd " "))
        ;;以下是上一句的两种实现方式
        ;(Vlax-Invoke-Method (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'SendCommand (strcat tt " "))
        ;(Vlax-Invoke-Method (Vlax-Get-Or-Create-Object "WScript.Shell" ) 'Sendkeys (strcat tt "{Enter}"))
    )
    ((boundp (read cmd))
        ;(princ "\n")
        ;(eval (read (strcat "(" cmd ")")))
        (Vlax-Invoke-Method *DOC* 'SendCommand (strcat "(" cmd ")" " "))
    )
    (t
        ;(princ "\n")
        ;(vl-cmdf cmd)
        (Vlax-Invoke-Method *DOC* 'SendCommand (strcat cmd " "))
    )
)


发表于 2024-2-15 10:18:36 | 显示全部楼层
好贴必回,加油
发表于 2024-7-18 00:47:15 | 显示全部楼层
lostbalance 发表于 2022-12-30 22:32
论坛逛的不勤快。以下是我目前自用的调整后的代码,就是最后面的cond判断执行,由原来的read改成了Vlax-I ...

挺好,就是不能再主页、帮助这些按钮前,添加文字,请赐教啊
发表于 2024-7-18 13:13:21 | 显示全部楼层
注册 发表于 2022-12-10 07:33
如出一辙,异曲同工----

这个不错,可以分享么?
 楼主| 发表于 2024-7-22 13:27:49 | 显示全部楼层
muai2010 发表于 2024-7-18 00:47
挺好,就是不能再主页、帮助这些按钮前,添加文字,请赐教啊

可以的,你找到对应的按钮,然后再前面添加文字元件就行。
比如以下就是帮助的按钮
(setq dcl-str (strcat dcl-str "\n:button{ fixed_width = true; width = 4; key = "help"; label = " 帮助 ";}"))
在前面加上
(setq dcl-str (strcat dcl-str "\n:text{ label = "xxxx";}"))
不过要注意类似上面提到的帮助按钮,是嵌套在if里的,你要根据需求考虑怎么添加。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 20:55 , Processed in 0.166576 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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