|
|
发表于 2011-11-29 13:36:09
|
显示全部楼层
来自: 中国辽宁
- (defun c:bdf (/ e ent tc newt mc ang st zb& G4 K+ X, p+ u4 i
- zbx zby zg zb1x zb1y zb2x zb2y zb1 zb2 f) \; L* M0 |, s S$ K
- oldosmode8 }7 Z) n! I+ `
- ); R x. T! u, ~, {* Q
- (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置
( B# e# [& I" J, }& P$ k! a# d: \ - (setvar "osmode" 0) ;关闭对象捕捉/ E: u$ g; A7 L5 ~
- (setvar "cmdecho" 0)- M. `' d2 a" H/ p: q; v
- (setq e (entsel "\n选择要对分的板筋: "))
t# I/ d0 F0 J - (setq ent (entget (car e)))
" Z+ K' U/ i: S ?% X. q$ t - (setq newt (atoi (cdr (assoc 1 ent))))
) @, @6 S5 R% H5 e6 F0 X - (if (/= 0 newt) ;过滤非数值文字: b( E K. f0 C i
- (progn
9 C8 p( ~6 j8 ` - (setq tc (cdr (assoc 8 ent))) ;提取图层信息
- Z/ I! m D4 p# X8 @" W - (command "._Clayer" tc) ;保持图层一致
& o5 C6 ?) i6 F5 @ - (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用
5 E( P5 ?4 H& U4 i4 Y% w s( e - (setq ang (cdr (assoc 50 ent))) ;提取文字角度
1 }: V- g6 w9 I- v - (setq st (cdr (assoc 7 ent))) ;提取文字样式9 O, f& Y( s' J8 M
- (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标
8 H% d. ], z: v, v- j* y( m - (setq zbx (car zb)) ;文字x坐标6 W; K/ n) f' m8 a# e) ?
- (setq zby (cadr zb)) ;文字Y坐标$ D9 E) @2 \2 m0 O7 g; R4 T Q1 T
- (setq zg (cdr (assoc 40 ent))) ;提取字高
' n n' M5 M8 u) r0 C - (setq zb1x (+ zbx (* 0.25 newt (cos ang))))5 D/ X9 G! [ p. J0 r
- ;计算分开后两个数值的文字起点
% w9 P% l) @1 X C/ G - (setq zb1y (+ zby (* 0.25 newt (sin ang))))* G M' m- i+ I; e
- (setq zb2x (- zbx (* 0.25 newt (cos ang))))1 x; z: L) @! S) N, E M
- (setq zb2y (- zby (* 0.25 newt (sin ang))))# |4 k" W) ?! C/ [; ]
- (setq zb1 (list zb1x zb1y)) ;确定坐标点) J! D6 c( E) Y
- (setq zb2 (list zb2x zb2y))/ ^4 |3 q* k5 s1 Q* U% n- _( l
- (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0)2 W! e& ~8 N( n% U! M4 o; d
- ;查看该文字样式中文字高度是否为0
5 j0 Z& e; j' S" D* e - (progn ;文字样式中文字高度为0时使用原对象的文字高度; k/ U z! z) f" X; `1 T
- (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2))
# ` N @5 }4 R/ G: q - ;输入两个对分的数值* T7 F; b2 t G, L2 B
- (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))5 \3 V; @; k' x1 }
- ). U& |) d! y% a4 p- c
- (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度
: T5 z$ ^( v& i! S; N. A' i - (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))' V1 p" d+ ~' P8 r* y* r
- ;输入两个对分的数值
5 o. m0 e2 i" _- x* R, ? - (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2))$ ]: y$ I# U1 O+ x8 J4 X
- )
: U/ b# v( s1 [2 k- v# b - )
5 a( j6 L& x2 R3 J$ G6 }: F- ~- U& ] - (entdel mc) ;删除原对象) h- G! L* \: t9 b3 N& ?, P
- )% X* v3 O) Z, F' w+ y+ P
- (princ "\n所选对象不能处理")
0 ~$ }8 I! Y. \& v. z - )
- s! x' Z" c0 ~6 }( l9 w8 U - (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置
9 W! m0 L& N3 a1 F - (setvar "cmdecho" 1)4 J" N7 R! x' D4 O- w8 k3 |
- (princ), `0 A) ^+ y; C+ g5 l/ G6 \6 n/ R% T
- )
复制代码 |
|