阿尼迪亚,
我第一次看到道路路线是样条曲线
一路上,没有水平曲线和/或直线段。
以下子例程将返回所需的所有数据
以列表形式填写表格。
填充,我留给你作为练习。
- (defun offsetlist (/ en ent offl offr intv dtot dlst clst alst llst rlst olst)
- (setq en (car (entsel))
- ent (entget en)
- offl 5.00
- offr 5.00
- intv 10.0
- dtot (vlax-curve-getDistAtPoint en (vlax-curve-getendpoint en))
- dlst (append
- (in_range 0 dtot intv)
- (list dtot)
- )
- clst (mapcar '(lambda (a) (vlax-curve-getPointAtDist en a)) dlst)
- alst (mapcar '(lambda (a) (angleatpoint en a)) clst)
- llst (mapcar '(lambda (a b) (polar a (+ b (/ pi 2)) offl)) clst alst)
- rlst (mapcar '(lambda (a b) (polar a (- b (/ pi 2)) offr)) clst alst)
- olst (mapcar '(lambda (a b c d) (list (rtosta a 2 3) b c d)) dlst llst clst rlst)
- )
- )
-
-
- ;; ;
- ;; Return angle along curve, at specified point (on curve) ;
- ;; e - valid curve (ENAME or VLA-OBJECT) ;
- ;; p - point on curve ;
- ;; Alan J. Thompson, 11.04.10 ;
- ;; ;
- (defun AngleAtPoint (e p)
- (angle '(0. 0. 0.) (vlax-curve-getFirstDeriv e (vlax-curve-getParamAtPoint e p)))
- )
-
- ;; ;
- ;; in_range by ElpanovEvgeniy (recursive) ;
- ;; ;
- ;; Similar to the Python Function ;
- ;; ;
- (defun in_range (s e i)
- (if (or (and (> i 0) (< s e)) (and (< i 0) (> s e)))
- (cons s (in_range (+ i s) e i))
- )
- )
- ;; ;
- ;; rtosta by ymg September 2013 ;
- ;; ;
- ;; Arguments: sta, Real number to format as a Station ;
- ;; unit, 1 for Imperials, ;
- ;; 2 for Metrics. ;
- ;; prec, Integer for number of decimals ;
- ;; DIMZIN must be set to 0 or 1 outside this routine. ;
- ;; ;
- ;; Examples: (rtosta 0 1 0) -> "0+00" (rtosta 1328.325 1 2) -> "13+28.33" ;
- ;; (rtosta 0 2 0) -> "0+000" (rtosta 1328.325 2 2) -> "1+328.33" ;
- ;; ;
- ;; If sta is negative, format is as follow: ;
- ;; (rtosta -1328.325 1 2) -> "13-28.33" ;
- ;; (rtosta -1328.325 2 2) -> "1-328.33" ;
- ;; ;
- (defun rtosta (sta unit prec / str a b dz)
- (setq str (rtos (abs sta) 2 prec))
- (while (< (strlen str) (if (= prec 0) (+ unit 2) (+ prec (+ unit 3))))
- (setq str (strcat "0" str))
- )
- (setq a (if (= prec 0) (- (strlen str) unit) (- (strlen str) prec (+ unit 1)))
- b (substr str 1 (- a 1))
- a (substr str a)
- )
- (strcat b (if (minusp sta) "-" "+") a)
- )
ymg公司 |