本帖最后由 cabinsummer 于 2012-4-30 09:55 编辑
如果嫌画线段太多,可以考虑采用Polyline的方式
定义通用函数
- (defun AddPolyline (Tag) (entmake (list '(0 . "polyline")'(66 . 1)(cons 70 Tag))));;;多义线。Tag为1则为闭合多义线。
- (defun AddVertex (Point) (entmake (list '(0 . "vertex")(cons 10 Point))));;;多义线中的顶点,直线段
- (defun AddVertexa (Point rad) (entmake (list '(0 . "vertex")(cons 10 Point)(cons 42 rad))));;;多义线中的顶点,有圆弧段。若rad为0则为直线段,此时与前一函数作用相同
调用方法要先定义顶点表
- (setq vertexlist '(P1 P2 P3 P4));;;P*是实现计算出的点表
- (DefBlock);;;无名块
- (AddPolyline 0);;;添加多义线
- (foreach x linelist (AddVertex (eval x)));;;添加多义线顶点
- (entmake '((0 . "SEQEND")));;;多义线结束标志
- (setq blockname (entmake '((0 . "ENDBLK"))));;;块结束
- (RefBlock blockname pt0);;;插入块到pt0点
由于vertexlist可以任意定制,所以上面的程序具有很大的灵活性。
|