lisp使用函数创建多段线,CAD坐标点多段线连线

  • A+
所属分类:CAD二次开发

在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)复制

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: