乐于分享
好东西不私藏

【(部分)源码】多段线偏移后封闭

【(部分)源码】多段线偏移后封闭
VLISP编写程序实现功能:依据选取的多段线,指定封闭“厚度”后绘制一封闭曲线。
;;;;XUYANYAN;;;;2026/6/26;;;;多线“厚度”封闭(vl-load-com);;;图选多段线生成点列(defun getplvtx( / ent obj coords i vlxlst)  (setq ent(car(entsel "\n选取多段线: ")))  (if ent    (progn      (setq obj (vlax-ename->vla-object ent)i 0 vlxlst nil)      (if (wcmatch (vla-get-objectname obj) "*Polyline")	  (setq	coords (vlax-safearray->list			 (vlax-variant-value			   (vla-get-coordinates obj)))))    (repeat(/(length coords)2)      (setq vlxlst(append vlxlst(list(list(nth i coords)(nth(1+ i)coords))))i(+ 2 i)))))  vlxlst);;;测试函数命令"THCK"(defun c:thck(/ pllst chk drawplst)  (setq drawplst       (lambda(lst lay color closed);;;点列图层颜色是否封闭	 (entmake	   (append(list'(0 . "LWPOLYLINE")'(100 . "AcDbEntity")		       (cons 8 lay)(cons 62 color)'(100 . "AcDbPolyline")		       (cons 90(length lst))(cons 70 closed))		  (mapcar'(lambda (pt)(cons 10 pt))lst)))))  (setq pllst(getplvtx)chk(getreal"\n输入偏移厚度<0.3>:"))  (if(null chk)(setq chk 0.3))  (drawplst(append pllst(thickcd pllst chk))"封闭厚度"1 1)(princ))
视频演示
已关注
关注
重播 分享
注:代码中缺少 thickcd 函数,函数用于计算多线的偏移坐标,函数调用方式(thickcd vlst t) 其中 vlst 为多线坐标列表, t 为偏移厚度。
以上图为例:
读者可根据需要自行完善 thickcd 函数完成该程序的调试。