lostbalance 发表于 2022-12-23 11:26:50

注册 发表于 2022-12-18 08:26
试过了,貌似没用

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

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

ps,把四行代码都复制,直接个括号,论坛认为是重复发帖,发不了:L

注册 发表于 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句那里有个错字,修改一下就可以了

注册 发表于 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")

请问具体如何表达在源码中啊,后面的两个星号对吗?

lostbalance 发表于 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 " "))
    )
)


atone 发表于 2024-2-15 10:18:36

好贴必回,加油

muai2010 发表于 2024-7-18 00:47:15

lostbalance 发表于 2022-12-30 22:32
论坛逛的不勤快。以下是我目前自用的调整后的代码,就是最后面的cond判断执行,由原来的read改成了Vlax-I ...

挺好,就是不能再主页、帮助这些按钮前,添加文字,请赐教啊

muai2010 发表于 2024-7-18 13:13:21

注册 发表于 2022-12-10 07:33
如出一辙,异曲同工----

这个不错,可以分享么?:loveliness:

lostbalance 发表于 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里的,你要根据需求考虑怎么添加。
页: 1 2 3 4 5 [6] 7
查看完整版本: 通用多层面板