计算最短路径的源代码一直有问题
代码如下: 运行后提示: 错误: 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)
) 错误提示很直白啊!
没有函数定义:SEHBLPX
页:
[1]