huxu823 发表于 2020-5-28 19:39:08

LSP搜索某个标注样式,如存在则删除

以下这段代码是用来搜索标注样式,如果存在“ISO-25”标注样式,则删除,但是实际测试并不通过不知道是哪里有错,求助!

(if (/= nil dimsn)   ;搜索样式,若有,删除ISO-25
         (progn
            (command "-dimstyle" "r" "standard" )   ;设置当前式样为standard,为了删除ISO-25
            (vla-delete (vla-item (vla-get-dimstyles (vla-get-activedocument (vlax-get-acad-object))) "ISO-25"))
            )
)



原地踏步 发表于 2020-5-29 09:28:25

如果图中使用了这个样式,就不能被删除。

原地踏步 发表于 2020-5-29 09:30:16

应该首先搜索图中有无使用这种样式的对象,若有,要么删除,要么改为其它样式,最后才能删除样式。

huxu823 发表于 2020-5-29 10:20:48

原地踏步 发表于 2020-5-29 09:30
应该首先搜索图中有无使用这种样式的对象,若有,要么删除,要么改为其它样式,最后才能删除样式。

(command "-dimstyle" "r" "standard" )   ;设置当前式样为standard,为了删除ISO-25

这一句就是修改当前标注样式的啊

start4444 发表于 2020-5-29 11:30:23

如果是已经完成的图纸要删除图层或者标注样式那是比较麻烦的事,只要有一个点属于这图层就删除不了了,你可以选中全部这种标注的对象删除,但是有些在图块里面的就要特殊处理,这就很麻烦了,直接改名称是比较简单的处理方法

huxu823 发表于 2020-5-29 11:33:13

start4444 发表于 2020-5-29 11:30
如果是已经完成的图纸要删除图层或者标注样式那是比较麻烦的事,只要有一个点属于这图层就删除不了了,你可 ...

我测试的CAD图形可以手动删除ISO-25这个标注样式,但是用上面的代码却不行,因为代码是网上找来的,不知道是否哪里有错误

start4444 发表于 2020-5-29 11:34:19

huxu823 发表于 2020-5-29 11:33
我测试的CAD图形可以手动删除ISO-25这个标注样式,但是用上面的代码却不行,因为代码是网上找来的,不知 ...

如果确定是可以删除就直接用 PURGE 命令好了

huxu823 发表于 2020-5-29 11:51:45

start4444 发表于 2020-5-29 11:34
如果确定是可以删除就直接用 PURGE 命令好了

新手啊,不知道怎么写,能劳烦兄弟直接帮改一下吗?

huxu823 发表于 2020-5-29 12:06:48

huxu823 发表于 2020-5-29 11:51
新手啊,不知道怎么写,能劳烦兄弟直接帮改一下吗?

你可能没理解我的意思,我是需要通过代码来查找删除这个标注样式,这个代码只是一个LSP插件中的一个片段

huxu823 发表于 2020-5-31 17:36:54

终于找到原因了,原来是代码不完整,需要在最前面加一句:
(setq dimsn (tblsearch "dimstyle" "ISO-25"))
页: [1]
查看完整版本: LSP搜索某个标注样式,如存在则删除