Lisp搜索层和通道
你好:很好的一天。
我是一个新手,试图找出是否有一个Lisp程序,可以帮助我了。
我需要浏览200个图形,并将某些图层更改为特定线宽。
以下是我需要做的:
选择图层管理器
搜索*furn*-全选-将线宽更改为0.05
搜索*eqpm*
如果*eqpm*的前缀为“mv-”,线宽保持不变,
否则将线宽更改为0.05
搜索*pfix*-全选-将线宽更改为0.05
等
谢谢你的帮助。
-凯尔 嗨,克尔,欢迎来到CADTutor,我希望你会喜欢这里
最好的选择是使用脚本打开每个图形,运行LISP程序更改图层线宽,然后保存/关闭图形并移动到下一个图形;或者使用ObjectDBX,尽管设置更复杂,但它可以在不打开它们的情况下处理所有图形(因此它可以在不到一分钟的时间内处理数百个图形)。
让我知道你想走哪条路,我会帮你走。
李 对于初学者,请在单个图形上尝试以下代码:
不确定如何运行代码?读这个。 谢谢李,
我一直是一个球迷,已经在这个论坛上阅读了很长一段时间了,它只是最近,我需要帮助。
我想我会运行Lisp程序的例行程序-这将是我最好的选择。因为我不熟悉ObjectDBX。虽然时间至关重要,但我认为我可以遍历每个图形并运行lisp命令。通过这种方式,我也可以看到我是否需要改变什么。
谢谢。你们是最棒的 看起来很棒。
我们可以修改它以提示我/或要求输入线宽吗 很酷,不用担心
如果您决定使用ObjectDBX路径,一种简单的方法是将该程序加载到一个空白的新图形中,然后加载并运行:
(defun c:DBXLWChange nil
(foreach x
(LM:ODBX
(function
(lambda ( x / n )
(vlax-for l (vla-get-layers x)
(if
(and
(wcmatch (setq n (strcase (vla-get-name l))) "*FURN*,*EQPM*,*PFIX*")
(not (wcmatch n "MV-*EQPM*"))
)
(vla-put-lineweight l acLnWt005)
)
)
)
)
nil t
)
(princ
(strcat "\n--> Drawing: " (car x)
(if (vl-catch-all-error-p (cdr x))
(strcat "\n Error: " (vl-catch-all-error-message (cdr x)))
"\nSuccessful."
)
)
)
)
(princ)
)
(vl-load-com) (princ)
李
当然,比如:
(defun c:LWChange(/lws lw n)(setq lws’(-3.00 0.00 0.05 0.09 0.13 0.15 0.18 0.20 0.25 0.30 0.35 0.40 0.50 0.53 0.60 0.70 0.80 0.90 1.00 1.06 1.20 1.40 1.58 2.00 2.11))(而(和(setq lw(getreal“\n指定线宽(默认值为3):”)(非(成员lw lws))(原理“\n-->无效线宽”)(如果lw(progn(setq lw)(如果( 它起作用了。
太棒了!谢谢 你让我的生活轻松了一点。
再次感谢。
不客气,我只是好奇,你指的是什么代码,ObjectDBX?
页:
[1]
2