hastan 发表于 2015-10-4 12:27
做的到就可以
现学了下 G 版的 RxApi
需要G版的 API 库
尚需优化,输出自己增加
- (defun c:tt (/ ss dis ps box ss v pb sss m n p0 pls pts _pi2 trilst)
- (if (and (setq dis (getdist "\nDistance of Axis: "))
- (setq ps (ssget "+.:S" '((0 . "*Polyline"))))
- (setq pl (ssname ps 0))
- (setq pls (xlrx-curve-getstretchpoints pl))
- (setq ss (ssget "x" '((0 . "insert") (2 . "99"))))
- (setq sss (XLRX-TriAngle ss ps nil t))
- )
- (progn
- (setq box (list (apply 'mapcar (cons 'min pls))
- (apply 'mapcar (cons 'max pls))
- )
- v (mapcar 'abs (apply 'mapcar (cons '- box)))
- pb (car box)
- m (fix (/ (car v) dis))
- n (fix (/ (cadr v) dis))
- p0 pb
- trilst (mapcar 'xlrx-curve-getstretchpoints
- (xlrx-pickset->list sss)
- )
- )
- (repeat m
- (setq pts (cons (setq p0 (polar p0 0.0 dis)) pts))
- )
- (setq pts (cons pb (reverse pts))
- _pi2 (/ pi 2)
- )
- (mapcar
- '(lambda (b / stri)
- (if (setq stri
- (vl-member-if
- '(lambda (c)
- (apply 'xlrx-point-getTriIntersElev (cons b c))
- )
- trilst
- )
- )
- (apply 'xlrx-point-getTriIntersElev (cons b (car stri)));_能计算高程的点
- (entmake (list '(0 . "point") (cons 10 b)));_三角网外部的点
- )
- )
- (apply
- 'append
- (mapcar '(lambda (x / p ptl)
- (setq p x)
- (repeat n
- (setq ptl (cons (setq p (polar p _pi2 dis)) ptl))
- )
- (vl-remove-if
- '(lambda (a)
- (not (XLRX-Point-IsInPoly1 a pls))
- )
- (cons x (reverse ptl))
- )
- )
- pts
- )
- )
- )
- )
- )
- (princ)
- )
|