- A+
在CAD二次开发的时候会用到创建对象,虽然command命令直接调用系统的命令可以画出自己的对象,但是command命令用起来感觉有点复杂,而且画后会留下一个小点,特不爽。我们可以根据entmake函数创建任意对象。只有把数据表做成需要实体的数据,直接就可以用entmake函数生成,速度快。
下面是根据已知坐标生成多段线,如果是圆弧,42的组码请自行计算凸度,带入相应的坐标点即可
我这里只需要直线多段线,无需有圆弧,所有直接42的码为0
;坐标点画多段线
(defun vl-hjbkpe->pline(xxyyzz / x1_y_z axx nn pel)
(setq nn(length xxyyzz))
;每个坐标点加入42凸度组码0
(repeat nn
(setq axx(list(cons 10(car xxyyzz)) '(42 . 0)))
(setq xxyyzz(cdr xxyyzz))
(setq x1_y_z(append axx x1_y_z))
)
;多段线头部必须数据
(setq pel (list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(62 . 153)
'(6 . "ByBlock");
'(100 . "AcDbPolyline")
(cons 90 nn)
'(70 . 0)))
(setq pel(append pel x1_y_z));头部数据和坐标数据合并
(entmake pel);创建对象
(setq pel(ENTLAST));图源,
pel
)
复制
;xxyyzz是一个坐标表如:((1 0 0)(0 0 0)(10 10 5 ))
使用:
(vl-hjbkpe->pline xxyyzz)
复制