将图纸拆分为单独的
你好我对Lisp程序这件事有点陌生,我想知道是否有人可以帮我完成一项我正试图完成的任务。我有几个图表“图纸”(100+),它们都有相同大小的标题栏,都位于一个图形文件中(都在模型空间中)。每个“纸”在几行和几列中均匀隔开。当我设计我必须设计的东西时,把所有的图纸都放在一张图纸上更容易,这样我就可以快速地将MOD制作成多张图纸。当我必须提交最终设计时,我必须拆分图纸,并在图纸标题栏中为每个图纸命名
我是否可以使用LISP pgm实现这一点?
如果有,有什么建议吗? 如果所有内容都保留在边界内,则可以制作一个LISP,依次获取每个边界(按其块名获取),并创建一个选择集,包括边界和其中的所有内容(使用边界的边界框坐标),然后可以wblock每个选择集。
只是我的想法。
李 那么,每张纸或边框是否需要有一个单独的块名?
你或任何人有任何类似的LISP,我可以使用作为一个例子?
如果所有内容都保留在边界内,则可以制作一个LISP,依次获取每个边界(按其块名获取),并创建一个选择集,包括边界和其中的所有内容(使用边界的边界框坐标),然后可以wblock每个选择集。 边界可以有所有相同的名称或单独的名称,这没有什么区别。
我目前没有一个LISP可以做到这一点,但如果你给我边界块的名称,我可以为你敲一个 好吧,我想就叫它“border”-目前没有名字/边框只是由单行组成-但我可以创建一个名为border的块。 没问题-我将指示块的名称在LISP中的位置,因此您可以根据需要对其进行更改。 试一试:
;; Drawing Cutter, by Lee McDonnell 24.04.2009
(defun c:DwgCut (/ file path ss miPt maPt iSs fname)
(vl-load-com)
(setq doc (vla-get-ActiveDocument
(vlax-get-acad-object))
file (getfiled "Select Location for New Files" (if $def $def "") "dwg" 1))
(if (not (setq $def file)) (exit))
(setq path (vl-filename-directory file))
(if (setq ss (ssget "X" '((0 . "INSERT") (2 . "BORDER"))))
(foreach Obj (mapcar 'vlax-ename->vla-object
(mapcar 'cadr (ssnamex ss)))
(vla-getBoundingBox Obj 'miPt 'maPt)
(setq winLst (mapcar (function
(lambda (x) (vlax-safearray->list x))) (list miPt maPt))
iSs (ssget "_C" (car winLst) (cadr winLst))
fname (vl-filename-mktemp "Dwg~" path ".dwg"))
(vla-wBlock doc fname (vla-get-ActiveSelectionSet doc)))
(princ "\n<!> No Borders Found <!>"))
(princ))
以上内容适用于所有称为“边界”的区块。
写入的文件前缀为Dwg~ 哇-非常感谢!!!!
那个程序完全可以将所有文件分割开来。
所以现在我需要做的另一件事是正确命名每个文件。每张图纸的标题位于每张图纸底角的标题栏中。如果我将标题设为一个单独的层,还是?块,LISP是否可以根据每个边框中的标题w来命名每个工作表?如果没有,那么我想你可以在分割后单独打开每张纸,然后在标题栏中抓取名称,然后替换临时文件名?如果你能帮忙的话,我会再次非常感激!
再次感谢! 最好的方法是将图形标题作为标题栏上的属性。 所以我必须制作一个单独的块,并为每个表命名它的属性?有没有其他方法可以帮我取这个名字?即使它已经分开了?问题是,添加新图纸等时,文件名经常更改。
页:
[1]
2