合并3D多段线
本帖最后由 sz721 于 2015-11-24 13:58 编辑合并三维多段线。
牛..先马,用上的时候好找,谢谢 本帖最后由 jltx123456 于 2015-11-24 11:33 编辑
原作者gile的程序, 请转载时保留作者版权信息!;; Join3dPoly (gile)
;; Joint les objets sélectionnés en une polyligne 3d s'ils sont jointifs
;; La polyligne est créée avec les propriétés courantes (calque, couleur, ...)http://gilecad.azurewebsites.net/LISP/Join3dPoly.lsp
http://cadxp.com/topic/21189-joindre-3d-polylignes-selon-calques/ (vl-load-com)
;;46.2 [功能] pline,lwpline点坐标表By 无痕
;;示例(vxs (car (entsel))),返回三维点坐标
(defun vxs (e / i v lst)
(setq i -1)
(while
(setq v (vlax-curve-getpointatparam e (setq i (1+ i))))
(setq lst (cons v lst))
)
(reverse lst)
)
;三维点表绘制3D多段线
(defun mk3DPOLYLINE(ptlst)
(entmake (list '(0 . "POLYLINE") '(100 . "AcDbEntity") '(100 . "AcDb3dPolyline") '(66 . 1) '(70 . 8)))
(foreach pt ptlst (entmake (list '(0 . "vertex") (cons 10 pt) '(70 . 32))))
(entmake '((0 . "seqend")))
)
;==========================
;连接两条三维多段线 by 77077
(defun c:XX(/ ent1 ent2 list1 list2 lst)
(princ "\n 连接两条3D多段线")
(if (and (setq ent1(CAR(entsel "\n 选择第一条3D多段线")))
(setq ent2(CAR(entsel "\n 选择第二条3D多段线")))
(setq list1 (vxs ent1))
(setq list2 (vxs ent2))
)
(progn
(cond
((equal(car list1) (car list2));起点 起点
(setq lst (append (reverse list1) (cdr list2)))
)
((equal(car list1) (car(reverse list2))) ;起点 终点
(setq lst (append list2 (cdr list1)))
)
((equal(car (reverse list1)) (car list2)) ;终点 起点
(setq lst (append list1 (cdr list1)))
)
((equal(car (reverse list1)) (car (reverse list2)));终点 终点
(setq lst (append list2 (cdr(reverse list1))))
)
(t (alert"两条3D多段线没有交点"))
)
(if lst
(progn
(mk3DPOLYLINE LST)
(entdel ent1)
(entdel ent2)
(princ "\n 连接成功")
)
)
)
(princ "\n 坑爹嘞!")
)
(PRINC)
) 77077 发表于 2015-11-25 09:24 static/image/common/back.gif
大神好久不见啊, 最近闭关修练?有什么大作? 分享下啦
页:
[1]