|
|
发表于 2011-11-29 13:36:09
|
显示全部楼层
来自: 中国辽宁
- (defun c:bdf (/ e ent tc newt mc ang st zb
1 P. }, W; T& o$ u6 K" ] - zbx zby zg zb1x zb1y zb2x zb2y zb1 zb2
: t+ S. F: \. E F - oldosmode: M4 b& L+ [( B3 Z8 h
- )5 Q7 V0 S, K1 @6 p$ n
- (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置, _( y( X( x9 A' O' _7 ]- ?# n$ ]
- (setvar "osmode" 0) ;关闭对象捕捉* d l) b L" |- k2 Z" C
- (setvar "cmdecho" 0)
M4 T2 `* \9 ~- v* j$ k, a - (setq e (entsel "\n选择要对分的板筋: ")): ~4 N7 {) Q2 B* z: l+ T; k) U
- (setq ent (entget (car e)))
y) ]( T6 ?+ U4 }$ A( T - (setq newt (atoi (cdr (assoc 1 ent))))
$ m' z, `; e$ C1 m3 s" v3 F0 x; l4 T - (if (/= 0 newt) ;过滤非数值文字
- Y4 z3 I9 V. n4 y# U" Y - (progn
9 j/ k# H- I, u \% T4 p) P - (setq tc (cdr (assoc 8 ent))) ;提取图层信息5 }. Y' \, O) b4 Q- T6 S1 m
- (command "._Clayer" tc) ;保持图层一致
! `4 c( _9 }0 O& ?% N - (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用
" h" P4 P7 |0 Q& } - (setq ang (cdr (assoc 50 ent))) ;提取文字角度; E9 a7 G$ _3 c
- (setq st (cdr (assoc 7 ent))) ;提取文字样式7 q, k# e' _: Z9 q L1 w
- (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标- {' ]# s( I& P0 q/ Z4 E! A
- (setq zbx (car zb)) ;文字x坐标. L# q, V0 y% e/ J+ g% z
- (setq zby (cadr zb)) ;文字Y坐标
5 @/ y- `9 A W - (setq zg (cdr (assoc 40 ent))) ;提取字高: V) }8 d( }& q( u. B3 u
- (setq zb1x (+ zbx (* 0.25 newt (cos ang))))8 X4 e* a7 @: ~
- ;计算分开后两个数值的文字起点
% _# C+ w, D/ }0 B! g, i/ z6 Q& ` - (setq zb1y (+ zby (* 0.25 newt (sin ang)))); k9 Z1 v* q/ p Y, H
- (setq zb2x (- zbx (* 0.25 newt (cos ang)))). X* T7 R0 d* T! p3 U( _. y
- (setq zb2y (- zby (* 0.25 newt (sin ang)))) w. h+ q5 M' t H+ i
- (setq zb1 (list zb1x zb1y)) ;确定坐标点; _ |2 \1 z1 n! U, |' w, z8 J4 K
- (setq zb2 (list zb2x zb2y))
# a6 T( s. b) B1 r) x. F1 { - (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0)
+ l" H7 ?) S/ v# C. v' V - ;查看该文字样式中文字高度是否为0/ J3 X+ P6 x7 ^3 H" r
- (progn ;文字样式中文字高度为0时使用原对象的文字高度) h/ d" Y- p! ]: W K9 B
- (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2))
; z+ e) ?4 `$ w. W7 b! j0 v4 ]6 _ - ;输入两个对分的数值
! U' n/ a$ f) Q7 i( S( R - (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))
7 P4 D- S' Z# q: @: B7 R& i - )
* v+ D# C5 S# Y. s; Q6 g s2 p - (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度4 u9 i5 e& C' r+ b
- (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))0 ?& F1 C: s% M% V" h' H
- ;输入两个对分的数值
, l0 K* c' z) o$ s - (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2))3 q- T: v; y D3 }+ V
- )
: n. V" l7 R; p, g/ H+ m5 V - )
) B% B1 c- p6 \ - (entdel mc) ;删除原对象1 C7 W( F0 o$ M
- )
. y: l6 @' H4 K0 \, ? - (princ "\n所选对象不能处理")) [! N! Q" I) |4 L \; p* Q/ R
- )
% w6 ?6 m9 f! ~/ ? - (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置2 Q2 {( T! @/ Z5 [, k" C
- (setvar "cmdecho" 1)
' \' { V& i) @) ^9 m - (princ)
9 M7 Z! |! w$ L% {6 v, A6 G - )
复制代码 |
|