[求助]快速做块
做图时,常常需要做些临时块,块名不重要,插入点也不重要,只要选择对像,就自动成块,块名可以按照一定规律自动生成,插入点,可以在块内部,或任意一点都行。lsp程序如何实现上面的功能呢? 其实只要利用CAD本身的剪切及粘贴为块就可以了 CAD本身的剪切及粘贴中,在CAD里反应是相当的慢,可不可以把做块的程序或过程简化一下呢? 试试这个 呵呵,程序试用了,说是无名块,其实有名,只是没有一定的规律,恩,不过程序完全合乎要求,谢谢 ;| (make*blk ss pt) = 用选集造无名块------------------ok!!------lxx.2004.2参数: ss = 要加入无名块的实体选集.
pt = 块定义点.
返回: 成功返回新定义的块表. 失败返回 nil.
测试: (make*blk (ssget) (setq pt (getpoint)))
|;
(defun make*blk (ss pt / i ent blk)
;;造快表开始标志实体.
(entmake (list'(0 . "BLOCK");实体名.
'(2 . "*U");无名块名称.
'(70 . 1);无名块标志.
(cons 10 pt);插入点.可用(getpoint)另外定义.
)
)
(setq i -1)
(repeat (sslength ss)
(setq ent (ssname ss (setq i (1+ i))))
(entmake (entget ent))
(entdel ent)
)
;;造块表结束标志实体.
(setq blk (entmake '((0 . "ENDBLK"))));;返回以上块定义.
;(vl-cmdf ".erase" ss "")
(if blk;如果造块成功.插入一个实例.
(entmake (list (cons 0 "INSERT");生成块实体(和块定义是不同的).
(cons 2 blk) ;组码2引用块定义.
(cons 10 pt) ;块插入点,按定义点.
)
)
)
(princ "\n已经做成无名块:")(princ blk)
) 正需要!!! <p>什么都别装,浪费空间.</p><p>直接用 <font color="#1ae642">SHIFT+CTRL+C</font> 后 <font color="#33cc8f" style="BACKGROUND-COLOR: #eeeeee;">SHIFT+CTRL+V</font>就行了(这是CAD自有的)</p> <p>我下了!以后有用,谢谢!</p> 一句话就够了
(defun c:bb()(vl-cmdf "copybase" (setq pt(getpoint"\n指定基点")) (ssget) "" "pasteblock" pt))
页:
[1]
2