最初由 ago9999 发布
[B]弧线代码是用圆心,起点角度,终点角度,法线表示的,可我太笨,不知道怎么用这几个数字求其端点坐标.原因是我不知道怎么定义0角度方向. [/B]
在晓东工具箱下 \XDSoft\Lisp\plan.lsp 中的一段

- ;;道路曲线要素标注(通用程)
- (defun c:eee (/ ee j1 j2 j tt r l e p0 p1 z1 z2)
- ; (setvar "cmdecho" 0)
- (setq ee (entsel "\nSelect arc: "))
- (while ee
- (setq ee (entget (car ee)))
- (setq j1 (cdr (assoc 50 ee))
- j2 (cdr (assoc 51 ee))
- r (cdr (assoc 40 ee))
- )
- (if (> j2 j1)
- (setq j (- j2 j1))
- (setq j (+ (dtr 360) (- j2 j1)))
- )
- (setq tt (* r (/ (sin (/ j 2)) (cos (/ j 2)))))
- (setq l (abs (* r j)))
- (setq e (* r (- (/ 1 (cos (/ j 2))) 1)))
- (setq p0 (getpoint "\n The point: "))
- (setvar "blipmode" 0)
- (setq j (angtos j 1 5))
- (setq z (substr j 1 1))
- (setq n (strlen j))
- (setq th 2)
- (while (< th n)
- (progn
- (setq z1 (substr j th 1))
- (if (= z1 "d")
- (setq z1 "%%d")
- )
- (setq z (strcat z z1))
- )
- (setq th (1+ th))
- )
- (command "text"
- p0
- (* 3 bl)
- ""
- (strcat "R=" (rtos (/ r 1000) 2 2))
- )
- (command "text"
- (setq p1 (polar p0 (dtr 270) (* 5 bl)))
- (* 3 bl)
- ""
- (strcat "a=" z)
- )
- (command "text"
- (setq p1 (polar p1 (dtr 270) (* 5 bl)))
- (* 3 bl)
- ""
- (strcat "L=" (rtos (/ l 1000) 2 3))
- )
- (command "text"
- (setq p1 (polar p1 (dtr 270) (* 5 bl)))
- (* 3 bl)
- ""
- (strcat "T=" (rtos (/ tt 1000) 2 3))
- )
- (command "text"
- (setq p1 (polar p1 (dtr 270) (* 5 bl)))
- (* 3 bl)
- ""
- (strcat "E=" (rtos (/ e 1000) 2 3))
- )
- (setq p0 (polar p0 pi bl))
- (setvar "plinewid" 0)
- (command "pline"
- p0
- (setq p0 (polar p0 (dtr 90) (* 4 bl)))
- (setq p0 (polar p0 0 (* 28 bl)))
- (setq p0 (polar p0 (dtr 270) (* 25 bl)))
- (setq p0 (polar p0 pi (* 28 bl)))
- "c"
- )
- (setq ee (entsel "\nSelect arc: "))
- )
- (setvar "blipmode" 1)
- (redraw)
- (princ)
- )
|