77077 发表于 2014-7-23 14:37:04

绘制道路视距三角区,测试笔记~~~

;头大啊~实在编不出来了,继续不下去了,求高手帮忙~~~
;目前这个测试成功,但是只能针对两条线相交的十字路口,;视距三角区测试,目前仅适用于俩线相交的十字路口
;还需要加入1.三条或四条线相交的十字路口.
;          2.三条或四条线相交的T字Y字路口.
(defun c:tt()
(setq vvlst '((100 160)(80 100)(60 70)(50 60)(40 40)(30 30)(20 20)));设计车速与停车视距表
(setq pt (getpoint "\n选择道路交点:")
      ss (ssget "C" pt pt '((0 . "*POLYLINE,LINE") (8 . "DL_道路中线")))
      )
   (setq obj0 (vlax-ename->vla-object (ssname ss 0))
         vv (atoi (vlax-ldata-get obj0 "设计车速"))
         dis (cadr(assoc vv vvlst))
         )
   (setq dd (vlax-curve-getDistAtPoint obj0 pt)
         pt1 (vlax-curve-getPointAtDist obj0 (+ dd dis))
         pt2 (vlax-curve-getPointAtDist obj0 (-dd dis))
         )
(setq obj1 (vlax-ename->vla-object (ssname ss 1))
         vv (atoi (vlax-ldata-get obj1 "设计车速"))
         dis (cadr(assoc vv vvlst))
         )
   (setq dd (vlax-curve-getDistAtPoint obj1 pt)
         pt3 (vlax-curve-getPointAtDist obj1 (+ dd dis))
         pt4 (vlax-curve-getPointAtDist obj1 (- dd dis))
         )
(setq ptlst(list pt1 pt3 pt2 pt4 pt1))
(make-lwpolyline ptlst)
)

77077 发表于 2014-7-23 14:39:17


欢迎大家测试,求高手帮忙改进~

77077 发表于 2014-7-23 14:43:19

哦,对了,程序开始时,忘记设定交点OSMODE 32了~

spp_wall 发表于 2014-7-23 14:49:20

同行啊   支持下!!!!
页: [1]
查看完整版本: 绘制道路视距三角区,测试笔记~~~