Lisp替换属性blo
大家好,
有人知道Lisp用于用dwg许多文件替换文件夹的内部块。
例如:特定文件夹中有一个“n”文件,其中包含使用相同属性和标记的A3格式块,因此,如果有必要对此格式进行一点详细更正,则有必要对所有这些文件逐个进行替换。
提前感谢。。。 为了明确起见,您希望用另一个块完全替换该块,但保留atribute值或仅更新块的各种属性。
第一步是在前后发布一个或两个dwg。 如果要保留所有属性值,那么很容易。
1)为新块创建Wblock。
2)将其保存在您常用的目录中(为方便起见)。
3.)将该目录路径添加到Autocad选项中的支持文件搜索路径。
4)只需确保新块和旧块的基点相同。
5.)创建脚本。
6.)安装script pro。
7.)运行script pro,选择图形和脚本,然后运行。
注:首先用1张图纸进行测试。
CMDECHO
0
ATTREQ
0
-insert
YOUR_NEW_BLOCK_NAME
0,0,0
1.0
1.0
0.0
-blockreplace
YOUR_OLD_BLOCK_NAME
YOUR_NEW_BLOCK_NAME
y
erase
l
zoom
e
CMDECHO
1
ATTREQ
1
;
已经在200-600张图纸中进行了大约2年的此过程。
Bigal,最好的方法是保留所有dwg文件的属性值,因为每个页面都有特定的标题或特定的细节。更改/更正块后,它将在该文件夹中的所有文件中替换为您以前的信息。
谢谢
谢谢你,我会试试的!。。。
不客气。 我用这个,李麦克-作品每一次!
谢谢李。
;-----------------------------------------------------------------------------------------------------------------
;http://www.cadtutor.net/forum/archive/index.php/t-52973.html
;-----------------------------------------------------------------------------------------
(defun ReDef (block / *error* oc spc doc block)
(vl-load-com)
;; © Lee Mac 2010
(defun *error* (msg)
(and oc (setvar 'CMDECHO oc))
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
(princ (strcat "\n** Error: " msg " **"))
)
(princ)
)
(setq spc
(if
(or
(eq AcModelSpace
(vla-get-ActiveSpace
(setq doc
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
)
)
)
(eq :vlax-true (vla-get-MSpace doc))
)
(vla-get-ModelSpace doc)
(vla-get-PaperSpace doc)
)
)
(setq oc (getvar 'CMDECHO))
(setvar 'CMDECHO 0)
(if (setq block (findfile block))
(progn
(vla-delete
(vla-insertblock
spc
(vlax-3D-point '(0. 0. 0.))
block
1.
1.
1.
0.
)
)
(vl-cmdf "_.attsync" "_N" (vl-filename-base block))
)
)
(setvar 'CMDECHO oc)
(princ)
)
;;Call like this:
;;(Redef "C:\\MyFolder\\MyBlock.dwg") 我也使用了上面李的LISP,但是我认为,它只适用于你的新的和旧的块共享相同的名称。
我认为,重新定义和替换是两个不同的术语。
对不起,我没有看完整条线索。
给自己的提示:始终阅读线程!
干杯 你不必道歉,我的朋友,你发的帖子没有问题,我只解释李Lisp程序的用法。
页:
[1]
2