;头大啊~实在编不出来了,继续不下去了,求高手帮忙~~~
;目前这个测试成功,但是只能针对两条线相交的十字路口, - ;视距三角区测试,目前仅适用于俩线相交的十字路口
- ;还需要加入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)
- )
|