双击属性块直接编辑属性文字
本帖最后由 菜卷鱼 于 2022-10-13 14:49 编辑这个问题已经解决很多年了,主题现在也已经从"提问"转换成"经验"
由于当初提问提得不专业,所以大家很可能不知道我说的是什么。
正常情况,我们双击属性块的属性文字,会弹出"增加属性编辑器",不能像编辑文字一样双击直接编辑
虽然按住ctrl再双击,可以直接编辑,但是总觉得不直接。
现在稍微改造一下就可以直接双击编辑。
首先新建一个命令 attrib (别的名字也可以)
;;;;双击属性文字直接编辑
;;;;by 菜卷鱼
(defun c:attrib (/ *error* ss pt ntp info objtype obj blkname)
(setq cmds (if command-s
command-s
vl-cmdf
)
)
(setq ss (ssget ":s"))
(if ss
(progn
(setq pt (cadr (nth 3 (car (ssnamex ss)))))
(setq pt (trans pt 0 1))
(setq ntp (nentselp pt))
(setvar "cmdecho" 0)
(setq info (entget (car ntp)))
(setq objtype (cdr (assoc 0 info)))
(cmds "undo" "be")
;;;;;
(defun *error* (s)
(if (/= s "函数被取消")
(princ "*取消*")
)
(cmds "undo" "e")
(setvar "cmdecho" 1)
)
;;;;;
(setvar "cmdecho" 0)
(setq obj (ssname ss 0))
(if (= objtype "ATTRIB")
(cmds "_.attipedit" ntp)
(cmds "_.DDATTE" ss)
)
(cmds "undo" "e")
(setvar "cmdecho" 1)
)
)
(prin1)
)
(prin1)
接着,替换原始的双击命令,操作见下图,改造后的效果见2楼。
按住 ctrl 再双击试试,CAD自带功能 sfzyr 发表于 2023-10-29 10:09
不知道是不是版本问题,双击是调用了attrib,但是返回不了鼠标点。所以pt总是nil
(setq pt (cadr (nth 3 (car (ssnamex ss 0))))) ;双击选择对象时,ssnamex返回的对象无点:((0 <图元名: 2124f6e6d90> 1))。只有点选时才有点。即先运行命令,在点选。所以,在PT为nil 而SS又选择了对象,则可以取“lastpoint”的值来解决这个问题。(setq pt (getvar "lastpoint")) 菜卷鱼 发表于 2022-10-13 14:26
单行文字默认全选,多行文字默认不是全选,CAD自带的文字编辑器就是这个逻辑
这个是改变不了的,
习惯 ...
↑这是CAD帮助文件里的一些宏介绍,
我记得语法中某一个特殊符号代表按键盘上的按键,
但是我不懂怎么表达按Ctrl+A键,
如果有这样的语法,那么在命令宏^C^C_ATTRIB之后追加Ctrl+A的语法不就可以了么
本帖最后由 菜卷鱼 于 2022-10-10 10:25 编辑
双击属性块的非属性文字部分,会弹出原始界面"增强属性编辑器"
而双击属性文字,则可以像普通文字一样直接编辑了
菜卷鱼 发表于 2013-12-18 14:33
可以替代双击属性块命令
请教一下这个怎么用?我的还是要鼠标三击 罗尼 发表于 2020-12-17 12:41
请教一下这个怎么用?我的还是要鼠标三击
现在再看看试试 太感激了!!!这么干货的硬知识居然评论这么少! cheefeel 发表于 2022-10-10 10:36
太感激了!!!这么干货的硬知识居然评论这么少!
主要之前不是这个标题,之前是个提问,问题是"鼠标三击怎么变鼠标双击",问题提的不专业,没人明白我要说什么,二楼是自己解答自己 cheefeel 发表于 2022-10-10 10:36
太感激了!!!这么干货的硬知识居然评论这么少!
我之前帮别人写代码别人觉得5块钱都觉得贵,你直接打赏10块!!
老板大气!!
这真的是我搞成的第一个付费程序!! 代码中18,24,35行中有点小笔误需要修正: undo e2002 发表于 2022-10-10 11:07
代码中18,24,35行中有点小笔误需要修正: undo
谢谢大佬提醒,我自己是写的子程序,临时改改错了