明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5015|回复: 16

求助G版,问过N个人了,都没有解决办法,希望G版出手帮忙提供思路

  [复制链接]
发表于 2012-6-2 01:03:33 | 显示全部楼层 |阅读模式
本帖最后由 jxjaxa 于 2012-6-2 01:04 编辑

假设图中有4个点,其中有两个点是起点 和 终点 ,而且起点 和终点是固定的,请问G版如何将图中所有路径求出。
























本帖子中包含更多资源

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

x
发表于 2022-9-29 18:23:13 | 显示全部楼层
帮顶,谢谢大佬完美解决
 楼主| 发表于 2012-6-2 10:00:26 | 显示全部楼层
大家帮忙顶一下行么
发表于 2012-6-2 10:12:49 | 显示全部楼层
  1. (defun aaa (ps p1 p2 pe mode)
  2.   (cond        ((= mode 1) (xyp-Entmake-lwPolyline (list ps pe) nil))
  3.         ((= mode 2) (xyp-Entmake-lwPolyline (list ps p1 pe) nil))
  4.         ((= mode 3) (xyp-Entmake-lwPolyline (list ps p2 pe) nil))
  5.         ((= mode 4) (xyp-Entmake-lwPolyline (list ps p1 p2 pe) nil))
  6.         ((= mode 5) (xyp-Entmake-lwPolyline (list ps p2 p1 pe) nil))
  7.   )
  8. )
 楼主| 发表于 2012-6-2 10:23:10 | 显示全部楼层
xyp1964 发表于 2012-6-2 10:12

谢谢院长 ,N个点 ,此方法不适应,需院长 大 人 继续出招,谢过

点评

对中间点进行排列组合运算即可!  发表于 2012-6-2 16:16
 楼主| 发表于 2012-6-2 16:29:16 | 显示全部楼层
jxjaxa 发表于 2012-6-2 10:23
谢谢院长 ,N个点 ,此方法不适应,需院长 大 人 继续出招,谢过

谢谢G版,您终于出现了,您再细说一下行么
发表于 2012-6-2 23:51:06 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2012-6-3 09:45:18 | 显示全部楼层
院长顶您,顶出源码

点评

院长源码,一般顶不出来  发表于 2012-7-6 08:18
 楼主| 发表于 2012-6-3 09:46:28 | 显示全部楼层
xyp1964 发表于 2012-6-2 23:51

院长给我学习一下行么
发表于 2012-7-4 15:52:12 | 显示全部楼层
看看这个思路:

1.确定起点,终点
2.遍历所有的点,计算与起点最近的(点2)
3.过滤掉(点2),.....循环计算至终点完成循环.
4.这条线路应该是最优化的,  再循环可得所有的线路

这个很容易的,以下例子原理一样,可以作为参考...

;  快速连线
(defun kslx3 (/ j k sm dx dxty kslsh x-1 y-1 j-2 k-2 sm-2 dx-2 dxty-2 kslsh x-2 y-2 dx-lr-2 j-rl k-rl sm-rl dx-rl j-rl-text zcd-sss zds-xxx)
       (command "setvar" "PDMODE" 2)            ;  设置点样式= "+" 高度= 1
       (command "setvar" "PDSIZE" 1)
       (SETVAR "OSMODE" 0)
       (command "zoom" "e")
  (setq j2 (ssget "x" '((-4 . "<and") (8 . "ZDH") (0 . "POINT") (62 . 7) (-4 . "and>"))))
    (if j2
      (progn
      (setq k2 0 sm2 (sslength j2))
   (while (< k2 sm2)
       (setq dx2 (ssname j2 k2))
       (setq dxty2 (entget dx2))
                    (setq tc3 (assoc 62 dxty2))
                    (setq tc4 (cons 62 1))
                    (entmod (subst tc4 tc3 dxty2))
      (setq k2 (+ k2 1))    )
      (setq j2 nil)   ))
;;;;;;;;;;;;;;;;;;;;;dell 已有的line
        (setq j-rl (ssget "x" '((-4 . "<and") (8 . "RL") (0 . "line") (-4 . "and>"))))
  (if j-rl
    (progn
      (setq k-rl 0 sm-rl (sslength j-rl))
   (while (< k-rl sm-rl)
       (setq dx-rl (ssname j-rl k-rl))
       (command "erase" dx-rl "")
        (setq k-rl (+ k-rl 1))     )     ))
;;;;;;;;;;;;;;;;;;;;;dell 已有的line
      (setq j-rl-text (ssget "x" '((-4 . "<and") (8 . "ZDH") (0 . "POINT") (-4 . "and>"))))
  (if j-rl-text
     (progn
       (setq zcd-sss 0 zds-xxx 0)
       (command "-layer" "m" "RL" "c" "6" "" "")
      (setq j (ssget "x" '((-4 . "<and") (8 . "ZDH") (0 . "POINT") (-4 . "and>"))))
      (setq k 0 sm (sslength j))
   (while (< k sm)
       (setq dx (ssname j k))
       (setq dxty (entget dx '("*")))
       (setq lr3 (cdr (cadadr (assoc -3 dxty))))
     (if (and (/= (substr lr3 1 1) "B") (/= (substr lr3 1 1) "G")(/= (substr lr3 1 1) "g")
           (or (= (substr lr3 1 1) "r") (=  (substr lr3 1 1) "R"))     )
       (PROGN
       (setq kslsh (atoi (substr lr3 2 100)))   
       (setq x-1 (nth 1 (assoc 10 dxty)) y-1 (nth 2 (assoc 10 dxty)) z-1 (nth 3 (assoc 10 dxty)))
      (setq j-2 (ssget "x" '((-4 . "<and") (8 . "ZDH") (0 . "POINT") (-4 . "and>"))))
      (setq k-2 0 sm-2 (sslength j-2))
   (while (< k-2 sm-2)
       (setq dx-2 (ssname j-2 k-2))
       (setq dxty-2 (entget dx-2'("*")))
       (setq dx-lr-2 (atoi (substr (cdr (cadadr (assoc -3 dxty-2))) 2 100)))
    (if (= dx-lr-2 (+ kslsh 1))
      (progn
        (SETQ x-2  (nth 1 (assoc 10 dxty-2)) y-2 (nth 2 (assoc 10 dxty-2)) z-2 (nth 3 (assoc 10 dxty-2)))
        (command "line" (list x-1 y-1 z-1) (list x-2 y-2 z-2) "")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
         (setq pp1 (list x-1 y-1 z-1) pp2 (list x-2 y-2 z-2))
         (setq sss (distance pp1 pp2))
        (setq zcd-sss (+ zcd-sss sss))
        (setq zds-xxx (+ zds-xxx 1))
         (princ (strcat "\n  编码=" (rtos kslsh 2 0) "   起点桩号编码= " (rtos kslsh 2 0) "   止桩号编码= " (rtos dx-lr-2 2 0) "   长度= " (rtos sss)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        (setq k-2 sm-2)  ))
       (setq k-2 (+ k-2 1)))      ))
     (setq k (+ k 1)))
  (command "-layer" "m" "0" "")
  (princ (strcat "\n管线点总数= " (rtos (sslength j-rl-text) 2 0) " 个"))
  (princ (strcat "\n连线总段数= " (rtos zds-xxx 2 0) " 段"))
  (princ (strcat "\n    总长度= " (rtos zcd-sss 2 2) " 米"))      )
  (princ "\n   没有找到 ZDH图层的TEXT")        )
  (setq j-rl nil)
  (setq j nil)
;;;;;;;;;;;;;;
    (if (= zds-xxx (- (sslength j-rl-text) 1))
      (progn
        (speek "OK")
      (alert "\n RTK成果处理已通过 ")))
;;;;;;;;;;;;;;
  (setq j-rl-text nil)
  (princ)
)
发表于 2012-7-4 15:57:03 | 显示全部楼层
这个难度要大一点,因为要按流水号

本帖子中包含更多资源

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

x

点评

这个图纸中的程序,可以提供一下源码吗?多谢了!  发表于 2012-7-6 19:58
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 07:26 , Processed in 0.211745 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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