|
发表于 2011-11-29 13:36:09
|
显示全部楼层
来自: 中国辽宁
- (defun c:bdf (/ e ent tc newt mc ang st zb
/ O9 \! N6 F) U5 C4 o/ b% f - zbx zby zg zb1x zb1y zb2x zb2y zb1 zb2
/ D3 r5 Z( b3 y- b - oldosmode
, V- z3 \3 E+ i: b; n" x6 j9 j - )1 x( w8 {, x# F
- (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置" I: ~$ d7 G/ d X1 n
- (setvar "osmode" 0) ;关闭对象捕捉3 \4 u& a/ F, W
- (setvar "cmdecho" 0)8 D9 w( K# T5 a! j0 I
- (setq e (entsel "\n选择要对分的板筋: "))
9 q8 X# ]3 {# c' \, J - (setq ent (entget (car e)))
, C( S; |8 j% l9 Y2 {. U4 Y - (setq newt (atoi (cdr (assoc 1 ent)))) {9 ]9 Z! d6 O" R, a
- (if (/= 0 newt) ;过滤非数值文字; L, [6 C' Y1 E% [& H) A. d
- (progn+ ~& ]7 p6 ?0 W& P+ n
- (setq tc (cdr (assoc 8 ent))) ;提取图层信息6 J% h) }6 f3 g! E/ y# `) d
- (command "._Clayer" tc) ;保持图层一致
- @; J& y1 _0 P9 }& |0 J/ s - (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用: i5 p: n0 F8 x- e2 ?
- (setq ang (cdr (assoc 50 ent))) ;提取文字角度) |# U& b- T6 Y5 V+ G' V0 E
- (setq st (cdr (assoc 7 ent))) ;提取文字样式
! p z: w' V0 z5 c# C F2 ^ - (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标2 ]8 G0 J. D- n% T
- (setq zbx (car zb)) ;文字x坐标
/ h7 z7 W: j1 q( _$ ]' |2 { - (setq zby (cadr zb)) ;文字Y坐标' J! r/ _1 i7 Z' m$ U( @
- (setq zg (cdr (assoc 40 ent))) ;提取字高
: C* S- z0 S, [# i - (setq zb1x (+ zbx (* 0.25 newt (cos ang))))
, `5 y" `& J% H V l+ q( T4 } - ;计算分开后两个数值的文字起点! j% t3 T3 _, E( t6 a
- (setq zb1y (+ zby (* 0.25 newt (sin ang))))6 U5 {5 W1 q8 u* l! g& c. ?
- (setq zb2x (- zbx (* 0.25 newt (cos ang))))
% h8 |3 m, W: k9 y, ^ - (setq zb2y (- zby (* 0.25 newt (sin ang))))( N+ Y+ i7 h* \& E9 M! G
- (setq zb1 (list zb1x zb1y)) ;确定坐标点
9 B4 o* J7 g/ ^ - (setq zb2 (list zb2x zb2y))3 R4 b6 c& R9 W W3 Y
- (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0)
. @" z2 s" `% J7 ]/ v - ;查看该文字样式中文字高度是否为09 O1 p4 y" g N
- (progn ;文字样式中文字高度为0时使用原对象的文字高度/ S" L) ~2 E% u0 l
- (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2))2 \: I4 s1 H7 }0 A# H$ I( _
- ;输入两个对分的数值% d/ t6 M7 ~( x8 M0 p ~! L* A
- (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))
7 Q! y# T, ?6 ~0 D1 \ - )
9 j: @' @ \& ?$ Z0 z9 I - (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度
6 E9 S8 [+ D* s' B2 s: C - (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))7 i0 C) r/ v6 g: x f+ G4 g
- ;输入两个对分的数值
- s! P$ W% x" X$ W) O - (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2)). \; F+ ^6 N" B, i9 B
- )
0 _7 w% U, c* v9 G ~: \+ a8 c - ), S7 ^6 A. h3 K, [ h3 T
- (entdel mc) ;删除原对象; w* [5 o1 o) u
- )
. p* q/ r( |* I1 ^7 c$ ^+ w - (princ "\n所选对象不能处理")- M; l: M6 M8 h" b4 q% a# i
- )4 |0 _. b2 }* L# | g
- (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置
0 M. x/ Y4 u% N& `: e5 r6 G+ v - (setvar "cmdecho" 1)' _+ A4 p }5 F& H, r7 D' {
- (princ)
5 o. ~; H' i( i" c' t - )
复制代码 |
|