aXioooG 发表于 2018-5-22 10:20:58

[求助贴]请问各位高手关于标注的问题

各位高手朋友们,我想请问一下,AutoCAD如何才能查找或选定那些手动输入数值的标注哇?因为图纸传来传去,有些设计人员为了图省事,直接修改了标注数值,这样在不知情的情况下,在后续的设计中会出很多问题……很烦人……找又很难找……所以提前谢谢各位了!

pzweng 发表于 2018-5-22 11:08:58

(defun c:test ()
(setq ss (ssget "x" '((0 . "DIMENSION"))))
(setq l (sslength ss))
(setq i 0)
(repeat l
    (setq ent (ssname ss i))
    (setq obj (vlax-ename->vla-object ent))
    (setq txt (vla-get-TextOverride obj))
    (if (/= txt "")
      (vla-put-TextColor obj 1)
    )
    (setq i (1+ i))
)
)

dunkel 发表于 2018-5-22 12:38:04

2010 上看了会儿没发现简单直接的方法。筛选或快速选择功能上都不支持空值。(ssget...) 函数的逻辑运算又不支持字符串类的,这样的话就只能通过代码来进行筛选了。

dunkel 发表于 2018-5-22 14:07:23

2010 的 filter 命令有个小漏洞,可以直接筛选它们出来,就是操作起来有些麻烦,但做好了之后可以将筛选条件保存起来,后面只要选择了就可以“应用”了。
1. 在个新建图里写个 TEXT 实体,编辑文字直接将文字删除;这样就创建了一个文字内容为空的 TEXT实体。
2. filter 命令,选择过滤器列表最后的“**开始NOT”,“添加到列表”。
3. “添加选定对象”按钮,提示选择时键入 L 回车,即选择了刚才的空 TEXT,然后将列表里的除了 2. 和 文字值 的那项外的全部“删除”。
4. 将“**结束NOT”项添加到列表。
5. 将“标注”对象类型添加到列表。
6. “另存为”按钮右边的名称框输入个名字,点击“另存为”按钮将当前筛选条件保存到用户 support 目录下的 filter.nfl 文件了。
7. 以后需要时,就可以从 filter 命令对话框的“*未命名”那里选择刚才的名,然后“应用”进行筛选了。

aXioooG 发表于 2018-5-22 15:56:17

感谢各位!

dunkel 发表于 2018-5-23 09:29:47

昨天看错了,应该一个简单的 lsp 语句就可以了:
(ssget "X" '((0 . "DIMENSION") (-4 . "<NOT") (1 . "") (-4 . "NOT>")))
返回 nil 说明没有这样的;返回个选择集,就可以 p 选择方式进行引用了。

pzweng 发表于 2018-5-23 12:07:13

dunkel 发表于 2018-5-23 09:29
昨天看错了,应该一个简单的 lsp 语句就可以了:
(ssget "X" '((0 . "DIMENSION") (-4 . "")))
返回 nil...

有的在标注文字前面加了M 或%%C应该不算改了文字的

dunkel 发表于 2018-5-23 12:37:43

这么考虑的话,是要复杂了,得先筛选出来,然后逐个查看是否包含 "<>" 字符,有的,不算,没有就是手工设置的尺寸了;当然,这只能由代码来做了。

aXioooG 发表于 2018-5-23 14:33:08

本帖最后由 aXioooG 于 2018-5-23 14:41 编辑

pzweng 发表于 2018-5-23 12:07
有的在标注文字前面加了M 或%%C应该不算改了文字的
两位的方法,我都用了,确实有个问题,就是标注里面加了文字比如:“直径”“内径”什么的但是这个标注的数值并没有被文字代替,标注的颜色也会变成红色,用filter的话就也会被选中。
我觉得有没有可能像dunkel说的,只筛选包含“<>”字符的标注,并把他们放置到一个新建的图层中。

当然就目前的状态就已经非常方便了,感谢二位!
想学Lisp好久了,一直也没能留出时间……惭愧!不过想问您一下,我这种编程几乎0基础的能学么……?哈哈


页: [1]
查看完整版本: [求助贴]请问各位高手关于标注的问题