批量图框加外框源码求完善!!!
平时工作中,图纸的图框的都是块,当图框种类多种批量打印的时候就比较麻烦,所以现在求一个以批量块加矩形外框的lsp,,用秋枫的批量多边形(外框)打印就省事了但是我的图框是由很多图块组成的,所以求大神把以下的源码优化成 只给图框加外框谢谢啦(defun c:tt ( / box e i ss)
(defun ebox (e / pa pb)
(Vlax-Invoke-Method (Vlax-Ename->Vla-Object e ) 'GetBoundingBox 'pa 'pb )
(setq pa (trans (vlax-safearray->list pa) 0 1)
pb (trans (vlax-safearray->list pb) 0 1)
)
(list pa pb)
)
(setq ss (ssget '((0 . "INSERT"))))
(repeat (setq i (sslength ss))
(setq e (ssname ss (setq i (1- i)))
box (ebox e)
)
(vl-cmdf "rectang" (car box) (cadr box))
)
)
本帖最后由 fangmin723 于 2021-4-28 10:15 编辑
先点选要添加外框的块,然后在框选所有图元 希望大神能够帮忙解决 图框都是散的,搞不了的,没那么智能 start4444 发表于 2018-12-18 11:30
图框都是散的,搞不了的,没那么智能
没有做不到 只有想不到 加油~~~ 一下程序源自明经通道
;;;选择对象的最小包围框
(defun C:qq()
(vl-load-com)
(command "undo" "be")
(setvar "cmdecho" 0)
(command "ucs" "w")
(princ "\n请选择物体:")
(while(null(setq en (ssget))))
(setq minx0 1e6 miny0 1e6 maxx0 -1e6 maxy0 -1e6)
(setq i 0)
(repeat (sslength en)
(setq end (ssname en i))
(setq end_data (entget end))
(Min_Max)
(setq i(1+ i))
)
(setq pmin (list minx0 miny0)
pmax (list maxx0 maxy0))
(command ".rectang" "non" pmin "non" pmax)
(command "undo" "e")
(princ)
)
;;;子程序,求选集是大外形坐标
(defun Min_Max()
(vla-getboundingbox(vlax-ename->vla-object end) 'minp 'maxp)
(setq minp (vlax-safearray->list minp)
maxp (vlax-safearray->list maxp))
(setq minx (car minp)
maxx (car maxp)
miny (cadr minp)
maxy (cadr maxp))
(if (> minx0 minx) (setq minx0 minx))
(if (> miny0 miny) (setq miny0 miny))
(if (< maxx0 maxx) (setq maxx0 maxx))
(if (< maxy0 maxy) (setq maxy0 maxy))
) yanshengjiang 发表于 2018-12-18 11:58
一下程序源自明经通道
;;;选择对象的最小包围框
这个只能单选没办法框选所有图框批量加外框还不够完善哦 批量打印不是可以选择相同名称的块打印吗?何必要生成一个多余的外框 lg328084985 发表于 2018-12-18 15:38
批量打印不是可以选择相同名称的块打印吗?何必要生成一个多余的外框
我每种大小的图框分别是一个块 每张图里面这样的块太多了