找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1682|回复: 11

[求助] 如何批量把多段线端点连接?

[复制链接]

已领礼包: 127个

财富等级: 日进斗金

发表于 2018-10-15 15:07:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 spp_wall 于 2018-10-21 20:42 编辑

   道路设计填充闭合 需要把边线闭合 有没什么批量连接的办法 端点的距离不一定 有的5米 有的三米 有的7米!
现在是手动画线然后再连接 有没什么批量的办法?
连接前: 连接前.jpg 连接后: 连接后.jpg

;;选择对角点连线 ,By 明经通道 Gu_xl 2012.09.14
(defun c:kx-DJLX  (/             PTINBOX           P1          P2         MINX        MINY   MAXX
              MAXY   SS            PL           N          EN         EL        PT     VERTEX
              PTS    DumpPoint)
  (defun ptinbox  (p mi_x mi_y ma_x ma_y)
    (and (>= (car p) mi_x)
         (>= (cadr p) mi_y)
         (<= (car p) ma_x)
         (<= (cadr p) ma_y)
         )
    )
  (defun DumpPoint  (ptLst fuzz / pt1 x)
    (cond ((<= (length ptLst) 1) ptLst)
          (t
           (setq pt1 (car ptLst))
           (cons pt1
                 (vl-remove-if
                   '(lambda (x) (equal pt1 x fuzz))
                   (DumpPoint (cdr ptLst) fuzz))
                 )
           ))
    )
  (while (and
           (setq p1 (getpoint "\n第一点: "))
           (setq p2 (getcorner p1 "\n对角点: "))
           )
    (setq minx (min (car p1) (car p2))
          miny (min (cadr p1) (cadr p2))
          maxx (max (car p1) (car p2))
          maxy (max (cadr p1) (cadr p2))
          )
    (setq ss (ssget "c" p1 p2 '((0 . "line,*polyline"))))
    (if        ss
      (progn
        (setq pl nil)
        (repeat        (setq n (sslength ss))
          (setq en (ssname ss (setq n (1- n))))
          (cond
            ((= "LINE" (cdr (assoc 0 (setq el (entget en)))))
             (if (ptinbox (setq pt (cdr (assoc 10 el)))
                          minx
                          miny
                          maxx
                          maxy)
               (setq pl (cons (list (car pt) (cadr pt)) pl))
               (if (ptinbox (setq pt (cdr (assoc 11 el)))
                            minx
                            miny
                            maxx
                            maxy)
                 (setq pl (cons (list (car pt) (cadr pt))pl))
                 )
               )
             )
            ((= "LWPOLYLINE" (cdr (assoc 0 el)))
             (mapcar '(lambda (a)
                        (if (ptinbox (cdr a) minx miny maxx maxy)
                          (setq pl (cons (cdr a) pl))))
                     (vl-remove-if '(lambda (x) (/= 10 (car x))) el)
                     )
             )
            (t
             (setq vertex
                    (vlax-safearray->list
                      (vlax-variant-value
                        (vla-get-Coordinates
                          (vlax-ename->vla-object en)
                          )
                        )
                      )
                   pts nil
                   )
             (while vertex
               (if
                 (ptinbox
                   (setq pt (list (car vertex) (cadr vertex)))
                   minx
                   miny
                   maxx
                   maxy)
                  (setq pl (cons pt pl))
                  )
               (setq vertex (cdddr vertex))

               )
             )
            )
          )

        (setq pl (DumpPoint pl 1e-6)
              pl (vl-sort pl
                          '(lambda (a b)
                             (if (= (cadr a) (cadr b))
                               (< (car a) (car b))
                               (> (cadr a) (cadr b))
                               )
                             )
                          )
              )
        (while (setq p1        (car pl)
                     p2        (cadr pl)
                     )
          (entmake (list '(0 . "line")
                         '(62 . 1)
                         (cons 10 p1)
                         (cons 11 p2)
                         )
                   )
          (setq pl (cddr pl))
          )


        )
      )
    )
(setq cm (getvar "cmdecho"))
        (setvar "cmdecho" 0)
        ; (prompt "\n 多项选择同时连线----钮广春整理--★QQ-626860125★")
        (setvar "peditaccept" 1) ;加入这个系统变量的代码
        (if (setq ngc01 (ssget '((0 . "LINE,ARC,LWPOLYLINE,POLYLINE"))))
                (command "_pedit" "m" ngc01 "" "j" "j" "b" "0" "")
        )
        (setvar "cmdecho" cm)

  (princ)
  )

框选连线

框选连线



人行道连线.rar

174.88 KB, 下载次数: 25, 下载积分: D豆 -1 , 活跃度 1

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 604个

财富等级: 财运亨通

发表于 2018-10-15 16:46:54 | 显示全部楼层
如图4根线,分别是3m,7m.都边起来呢?
我认为规则 是这样,有了3m的,就不联超过3m的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-10-15 17:39:57 | 显示全部楼层
能不能批量,关键是知道哪个线和哪个线是一对道路,你能说明规则吗?你要说不清,那机器就不懂了。

点评

可以设定距离 比如人行道5米宽 多段线相邻端点等于5m的就连接  详情 回复 发表于 2018-10-15 17:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2018-10-15 17:46:46 | 显示全部楼层
newer 发表于 2018-10-15 17:39
能不能批量,关键是知道哪个线和哪个线是一对道路,你能说明规则吗?你要说不清,那机器就不懂了。

可以设定距离 比如人行道5米宽 多段线相邻端点等于5m的就连接

点评

你图中就这几根线行,如果你图中很多实体,什么线都有,什么图层都有,你怎么批量呢?  详情 回复 发表于 2018-10-15 18:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-10-15 18:31:45 | 显示全部楼层
spp_wall 发表于 2018-10-15 17:46
可以设定距离 比如人行道5米宽 多段线相邻端点等于5m的就连接

你图中就这几根线行,如果你图中很多实体,什么线都有,什么图层都有,你怎么批量呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2018-10-15 22:06:53 来自手机 | 显示全部楼层
newer 发表于 2018-10-15 18:31
你图中就这几根线行,如果你图中很多实体,什么线都有,什么图层都有,你怎么批量呢?

图层都是程序出的,我一般都是把需要的图层单独打开然后闭合,如果可以选择特定的图层就更好,一般是两个图层
来自: 微社区
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2018-10-15 22:09:15 来自手机 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2018-10-15 16:46
如图4根线,分别是3m,7m.都边起来呢?
我认为规则 是这样,有了3m的,就不联超过3m的。

是不是能设定个距离区间,或者输入距离只连接复核距离区间的线段
来自: 微社区
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2018-10-16 00:05:53 | 显示全部楼层
楼主这样描述不是很清楚。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6434个

财富等级: 富甲天下

发表于 2018-10-16 07:28:30 | 显示全部楼层
规则不明确
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2018-10-20 09:52:15 来自手机 | 显示全部楼层
顶下,看有没大神出手解决下
来自: 微社区
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2018-10-21 20:30:40 | 显示全部楼层
自己找了几个插件 整合了下 也大大的加快了速度  有需要的可以用用  还没法到批量!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 155个

财富等级: 日进斗金

发表于 2019-9-7 19:04:38 | 显示全部楼层
楼上的可以把整合版的发出来看看啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-12 05:08 , Processed in 0.395780 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表