 - (defun c:wyb ( / ang en ent hh lll os pb p1 p2 p3 p4 p5 p6 p7 p8 p9 r ss ttt w1 w)
- (defun midp (pp1 pp2) (mapcar '(lambda (a b) (/ (+ a b) 2)) pp1 pp2))
- (princ "\n功能:依次选取多个圆弧对象,最后在CAD内创建一个表格,将每个圆弧的属性参数放入表中。")
- (setvar "cmdecho" 0)
- (setq os (getvar "osmode"))
- (setvar "osmode" 0)
- (setq ss (list))
- (while (setq s1 (entsel "\n请选择圆弧对象: "))
- (setq ss (cons (car s1) ss))
- )
- (setq pb (getpoint "\n表格起点: "))
- (setq w1 30.0 w 17.0 hh 7.0)
- (setq p1 (polar pb 0 w1))
- (setq p2 (polar p1 0 w))
- (setq p3 (polar p2 0 w))
- (setq p4 (polar p3 0 w))
- (setq p9 (polar pb (* pi 1.5) hh))
- (setq p5 (polar p1 (* pi 1.5) hh))
- (setq p6 (polar p2 (* pi 1.5) hh))
- (setq p7 (polar p3 (* pi 1.5) hh))
- (setq p8 (polar p4 (* pi 1.5) hh))
- ;画表头
- (command "pline" pb p4 p8 p9 "c")
- (command "line" p1 p5 "" "line" p2 p6 "" "line" p3 p7 "")
- (command "text" "m" (midp pb p5) (/ hh 2) 0 "偏角")
- (command "text" "m" (midp p1 p6) (/ hh 2) 0 "R(米)")
- (command "text" "m" (midp p2 p7) (/ hh 2) 0 "T(米)")
- (command "text" "m" (midp p3 p8) (/ hh 2) 0 "L(米)")
- (setq ss (reverse ss))
- (foreach en ss
- (if (and (setq ent (entget en)) ;获取图元的定义数据
- (member '(0 . "ARC") ent) ;;判断选取的实体是不是圆弧
- ) (progn
- ;;==================
- ;;获取圆弧属性参数: 转角、半径、切线长、弧长等
- (setq r (cdr(assoc 40 ent)) ;;半径
- st (cdr(assoc 50 ent))
- ed (cdr(assoc 51 ent)))
- (setq ang (- ed st))
- (if (< ang 0) (setq ang (+ pi pi ang)))
- (setq ttt (* (/ (sin (* 0.5 ang)) (cos (* 0.5 ang))) r)) ;;切线长
- (setq lll (* r ang)) ;;长度
- (setq pb p9 p1 p5 p2 p6 p3 p7 p4 p8)
- (setq p9 (polar pb (* pi 1.5) hh))
- (setq p5 (polar p1 (* pi 1.5) hh))
- (setq p6 (polar p2 (* pi 1.5) hh))
- (setq p7 (polar p3 (* pi 1.5) hh))
- (setq p8 (polar p4 (* pi 1.5) hh))
- (command "pline" pb p4 p8 p9 "c")
- (command "line" p1 p5 "" "line" p2 p6 "" "line" p3 p7 "")
- (command "text" "m" (midp pb p5) (/ hh 2) 0 (angtos ang 1 5))
- (command "text" "m" (midp p1 p6) (/ hh 2) 0 (rtos r 2 3))
- (command "text" "m" (midp p2 p7) (/ hh 2) 0 (rtos ttt 2 3))
- (command "text" "m" (midp p3 p8) (/ hh 2) 0 (rtos lll 2 3))
- ))
- )
- (setvar "osmode" os)
- )
|