明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9079|回复: 33

[经验] 双击属性块直接编辑属性文字

[复制链接]
发表于 2011-10-15 19:54:39 | 显示全部楼层 |阅读模式
本帖最后由 菜卷鱼 于 2022-10-13 14:49 编辑

这个问题已经解决很多年了,主题现在也已经从"提问"转换成"经验"
由于当初提问提得不专业,所以大家很可能不知道我说的是什么。

正常情况,我们双击属性块的属性文字,会弹出"增加属性编辑器",不能像编辑文字一样双击直接编辑
虽然按住ctrl再双击,可以直接编辑,但是总觉得不直接。

现在稍微改造一下就可以直接双击编辑。

首先新建一个命令 attrib (别的名字也可以)
  1. ;;;;双击属性文字直接编辑
  2. ;;;;by 菜卷鱼
  3. (defun c:attrib        (/ *error* ss pt ntp info objtype obj blkname)
  4.   (setq        cmds (if command-s
  5.                command-s
  6.                vl-cmdf
  7.              )
  8.   )
  9.   (setq ss (ssget ":s"))
  10.   (if ss
  11.     (progn
  12.       (setq pt (cadr (nth 3 (car (ssnamex ss)))))
  13.       (setq pt (trans pt 0 1))
  14.       (setq ntp (nentselp pt))
  15.       (setvar "cmdecho" 0)
  16.       (setq info (entget (car ntp)))
  17.       (setq objtype (cdr (assoc 0 info)))
  18.       (cmds "undo" "be")
  19.       ;;;;;
  20.       (defun *error* (s)
  21.         (if (/= s "函数被取消")
  22.           (princ "*取消*")
  23.         )
  24.         (cmds "undo" "e")
  25.         (setvar "cmdecho" 1)
  26.       )
  27.       ;;;;;
  28.       (setvar "cmdecho" 0)
  29.       (setq obj (ssname ss 0))
  30.       (if (= objtype "ATTRIB")
  31.         (cmds "_.attipedit" ntp)
  32.         (cmds "_.DDATTE" ss)
  33.       )
  34.       (cmds "undo" "e")
  35.       (setvar "cmdecho" 1)
  36.     )
  37.   )
  38.   (prin1)
  39. )
  40. (prin1)


接着,替换原始的双击命令,操作见下图,改造后的效果见2楼。




本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 收起 理由
zhangcan0515 + 1
cheefeel + 1 很给力!

查看全部评分

"觉得好,就打赏"
    共1人打赏

本帖被以下淘专辑推荐:

发表于 2022-10-10 12:31:02 | 显示全部楼层
按住 ctrl 再双击试试,CAD自带功能
回复 支持 3 反对 0

使用道具 举报

发表于 2025-5-24 20:04:06 | 显示全部楼层
本帖最后由 KO你 于 2025-5-24 20:08 编辑


编辑属性与文字这样就可以做到自由切换,但感觉切换还不是很顺畅。
编辑文字后不能马上继续切换到属性编辑,有待高手完善。
(defun c:ed (/ *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))
(cond
((= objtype "ATTRIB")
(cmds "_.attipedit" ntp))
((member objtype '("TEXT" "MTEXT"))
(cmds "_.textedit" "_non" pt))
(T (cmds "_.DDATTE" ss)))
(cmds "undo" "e")
(setvar "cmdecho" 1)))
(prin1))
回复 支持 反对

使用道具 举报

发表于 2023-12-4 02:18:01 | 显示全部楼层
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"))
 楼主| 发表于 2013-12-18 14:33:55 | 显示全部楼层
本帖最后由 菜卷鱼 于 2022-10-10 10:25 编辑

双击属性块的非属性文字部分,会弹出原始界面"增强属性编辑器"

而双击属性文字,则可以像普通文字一样直接编辑了





本帖子中包含更多资源

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

x
发表于 2020-12-17 12:41:37 | 显示全部楼层
菜卷鱼 发表于 2013-12-18 14:33
可以替代双击属性块命令

请教一下这个怎么用?我的还是要鼠标三击
 楼主| 发表于 2022-10-10 10:36:28 | 显示全部楼层
罗尼 发表于 2020-12-17 12:41
请教一下这个怎么用?我的还是要鼠标三击

现在再看看试试
发表于 2022-10-10 10:36:42 | 显示全部楼层
太感激了!!!这么干货的硬知识居然评论这么少!
 楼主| 发表于 2022-10-10 10:41:09 | 显示全部楼层
cheefeel 发表于 2022-10-10 10:36
太感激了!!!这么干货的硬知识居然评论这么少!

主要之前不是这个标题,之前是个提问,问题是"鼠标三击怎么变鼠标双击",问题提的不专业,没人明白我要说什么,二楼是自己解答自己
 楼主| 发表于 2022-10-10 10:43:04 | 显示全部楼层
cheefeel 发表于 2022-10-10 10:36
太感激了!!!这么干货的硬知识居然评论这么少!

我之前帮别人写代码别人觉得5块钱都觉得贵,你直接打赏10块!!
老板大气!!
这真的是我搞成的第一个付费程序!!

点评

微薄之力,都不够一杯奶茶。希望更多的人都能在得到帮助时,做出力所能及的感谢!  发表于 2022-10-10 10:50
发表于 2022-10-10 11:07:02 | 显示全部楼层
代码中18,24,35行中有点小笔误需要修正: undo
 楼主| 发表于 2022-10-10 11:08:38 | 显示全部楼层
e2002 发表于 2022-10-10 11:07
代码中18,24,35行中有点小笔误需要修正: undo

谢谢大佬提醒,我自己是写的子程序,临时改改错了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-1 16:16 , Processed in 0.215117 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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