明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1600|回复: 1

[源码] 计算最短路径的源代码一直有问题

[复制链接]
发表于 2014-5-17 13:25:28 | 显示全部楼层 |阅读模式
代码如下: 运行后提示: 错误: no function definition: SEHBLPX
(defun c:drj()
  (setvar "CMDECHO" 0)
  (setq SEHfbl1 nil SEHfbl2 nil SEHfbl3 nil SEHfbl4 nil) ;;设置存储块点点表
  (setq lstDZbl1 nil lstDZbl2 nil lstDZbl3 nil lstDZbl4 nil);;设置对照点表
  (setq SEHfh (SEHBLPX));;初始化块点点表
  (setq QiShiDian (car (entsel "\n选择起始点:")))
  (setq SelQSDlst (entget QiShiDian))
  (setq SelQSDxyh (cdr (assoc 10 SelQSDlst)))
  (setq SelQSDh (fix (last SelQSDxyh)));;起始点点号
  (princ "\n您选择的起始点为:")
  (princ SelQSDh)
  (setq ZhongDian (car (entsel "\n选择目的点:")))
  (setq SelZDlst (entget ZhongDian))
  (setq SelZDxyh (cdr (assoc 10 SelZDlst)))
  (setq SelZDh (fix (last SelZDxyh)));;起始点点号
  (princ "\n您选择的目的点为:")
  (princ SelZDh)
  (command ".zoom" "e")
  (alert "程序即将运行,可能需要一点时间,请耐心等候!")
  (setq lstDKbl nil);;预置待扩点表
  (setq lstJieGuo nil)
  (setq finddist 0)
  (setq lstTmp nil)
  (setq lstKYbltmp nil);;预置扩延临时表
  (setq Firstflag 0)
  (setq lstTmp (LJDBall SelQSDh));;对起始点扩展
  (if (vl-consp lstTmp) (progn;;如果lstTmp不为空表
  (setq maini 0)
  (repeat (length lstTmp)
  (setq mainys (nth maini lstTmp))
  (setq mainysb (list SelQSDh mainys))
  (if (<= mainys SEHfh) (setq lstDZbl1 (cons mainysb lstDZbl1)))
  (if (and (> mainys SEHfh) (<= mainys (* 2 SEHfh))) (setq lstDZbl2 (cons mainysb lstDZbl2)))
  (if (and (> mainys (* 2 SEHfh)) (<= mainys (* 3 SEHfh))) (setq lstDZbl3 (cons mainysb lstDZbl3)))
  (if (> mainys (* 3 SEHfh)) (setq lstDZbl4 (cons mainysb lstDZbl4)))
  (setq lstDKbl (cons mainysb lstDKbl))
  (setq maini (+ maini 1))
  )
  (setq lstDKbl (reverse lstDKbl));;生成待扩点表
  (if (vl-consp lstDZbl1) (progn;;如果lstDZbl1(对照点表1)不为空
  (setq lstDZbl1 (vl-sort lstDZbl1 (function (lambda (e1 e2) (< (cadr e1) (cadr e2))))));;对表进行排序点号从小到大
  ))
  (if (vl-consp lstDZbl2) (setq lstDZbl2 (vl-sort lstDZbl2 (function (lambda (e1 e2) (< (cadr e1) (cadr e2)))))))
  (if (vl-consp lstDZbl3) (setq lstDZbl3 (vl-sort lstDZbl3 (function (lambda (e1 e2) (< (cadr e1) (cadr e2)))))))
  (if (vl-consp lstDZbl4) (setq lstDZbl4 (vl-sort lstDZbl4 (function (lambda (e1 e2) (< (cadr e1) (cadr e2)))))))
  (setq lstDKbl (QCDFUN lstDKbl));;获得纯正的扩展点表
  (while (vl-consp lstDKbl);;循环到lstDKbl为空表为止
  (KYFUN lstDKbl SelQSDh);;对lstDKbl进行一次扩延
  (setq lstDKbl (QCDFUN lstKYbltmp))
  (setq lstDKbl (JJPL SelQSDh SelZDh lstDKbl));;按方向夹角从小到大排序
  (setq lstKYbltmp nil)
  )
  ))
  (if (vl-consp lstJieGuo) (progn;;如果结果表不为空
  (princ "\n起点到目的点最短路径是:")
  (princ "\n")
  (princ lstJieGuo)
  (princ "\n距离为:")
  (princ finddist)
  ))
  (if (not (vl-consp lstJieGuo)) (progn;;如果结果表为空
  (princ "\n从起点没有路径能到达目的点!!!")
  ))
  (princ)
  )
发表于 2014-5-17 14:28:25 | 显示全部楼层
错误提示很直白啊!
没有函数定义:SEHBLPX
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 18:11 , Processed in 0.187068 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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