明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: yjr111

G版和HIGHFLYBIRD及高人请进!如何能求出所有的路径呢?

    [复制链接]
发表于 2012-2-18 20:35 | 显示全部楼层
帮你顶一下,问题太沉了!
请教风之影吧,他肯定会!

点评

请教了,没声音呢,几个大大都闷着头哈  发表于 2012-2-18 20:40
回复

使用道具 举报

发表于 2012-2-18 20:45 | 显示全部楼层
gbhsu 发表于 2012-2-18 20:35
帮你顶一下,问题太沉了!
请教风之影吧,他肯定会!

可能是你现在也是黑老大了,没人敢教你哦

点评

大哥,什么叫黑老大啊,我都是规规矩矩在论坛上学习啊  发表于 2012-2-18 20:47
回复

使用道具 举报

发表于 2012-2-18 22:05 来自手机 | 显示全部楼层
大师们是不是都忙啊………顶起来………
回复

使用道具 举报

发表于 2012-2-19 15:59 | 显示全部楼层
以前看到过一个求枝状路径相关的程序,发给你看看
回复

使用道具 举报

发表于 2012-2-19 16:00 | 显示全部楼层
(defun search:pathSearch
       (startPoint path tobesearch / line entity otherPoint found)
  (setq found nil)
  (foreach line        tobesearch
    (if        line
      (progn
        (setq entity (entget line))
        (if
          (search:point-eq startPoint (assoc 10 entity))
           (progn
             (setq otherPoint (assoc 11 entity))
             (setq path (append path (list otherPoint)))
             (search:pathSearch
               otherPoint
               path
               (subst nil line tobesearch)
             )
             (setq found t)
           )
        )
        (if
          (search:point-eq startPoint (assoc 11 entity))
           (progn
             (setq otherPoint (assoc 10 entity))
             (setq path (append path (list otherPoint)))
             (search:pathSearch
               otherPoint
               path
               (subst nil line tobesearch)
             )
             (setq found t)
           )
        )
      )
    )
    )
    (if        (not found)
      (search:printPath path)
    )
)




(defun search:point-eq (apoint bpoint / val)
    (if (and
        (= (cadr apoint) (cadr bpoint))
        (= (caddr apoint) (caddr bpoint))
        (= (cadddr apoint) (cadddr bpoint))
      )
    (setq val T)
    (setq val NIL)
  )
)

(defun search:printPath (path / prev point leng)
  (setq prev nil leng 0.0)
  (princ "\n 路径是")
  (foreach point path
    (princ "\t")
    (princ (cdr point))
    (if prev
      (setq leng (+ leng (distance (cdr prev) (cdr point))))
      )
    (setq prev point))
  (princ "\n 总长度是")
  (princ leng)
  )

(defun c:pathSearch (/ point lines all)
  (setq point (cons 10 (getpoint "\n选择起点")))
  (princ "\n 选择所有路径直线")
  (setq all (ssget))
  (setq len (sslength all))
  (setq cur 0)
  (while (> (- len cur) 0)
    (setq name (ssname all cur))
    (setq cur (+ 1 cur))
    (if        (= (cdr (assoc 0 (entget name))) "LINE")
      (setq lines (append (list name) lines))
    )
  )
  (search:pathSearch point '() lines )
  (princ)
)

点评

这好像是我写的吧。  发表于 2012-2-21 21:36
我的这个是多段线  发表于 2012-2-19 16:05
谢谢,可惜不行  发表于 2012-2-19 16:04
回复

使用道具 举报

 楼主| 发表于 2012-2-20 16:32 | 显示全部楼层
自己再顶一下
回复

使用道具 举报

 楼主| 发表于 2012-2-21 18:04 | 显示全部楼层
顶到G版和highflybird出手!
回复

使用道具 举报

发表于 2012-2-21 22:09 来自手机 | 显示全部楼层
明总请给长期对明经做出贡献的热心朋友解决问题…严哥在这论坛算是很热心的呢…经常帮人解决问题…奉献源码……请明总给解决下
回复

使用道具 举报

发表于 2012-2-22 15:37 | 显示全部楼层
声援下严哥。严哥好人啊。。请版主费心了。。请明总支持下。
回复

使用道具 举报

发表于 2012-2-22 16:58 | 显示全部楼层
先发个演示图和编译的程序,程序仅对Line有效!


调用命令:GetPath

本帖子中包含更多资源

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

x

点评

专业水准!望G版能抽空再搞个多义线版的  发表于 2012-2-22 17:37

评分

参与人数 1明经币 +1 金钱 +50 收起 理由
yjr111 + 1 + 50

查看全部评分

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-19 02:19 , Processed in 0.170265 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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