sz721 发表于 2015-11-24 10:03:12

合并3D多段线

本帖最后由 sz721 于 2015-11-24 13:58 编辑

合并三维多段线。

Linhay 发表于 2015-11-24 10:07:01

牛..先马,用上的时候好找,谢谢

jltx123456 发表于 2015-11-24 11:30:38

本帖最后由 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/

77077 发表于 2015-11-25 09:24:06

(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)
)

gzbccy 发表于 2015-11-25 09:43:39

77077 发表于 2015-11-25 09:24 static/image/common/back.gif


大神好久不见啊, 最近闭关修练?有什么大作? 分享下啦
页: [1]
查看完整版本: 合并3D多段线