|
发表于 2011-11-29 13:36:09
|
显示全部楼层
- (defun c:bdf (/ e ent tc newt mc ang st zb8 D8 F' g! d8 ]! U+ z
- zbx zby zg zb1x zb1y zb2x zb2y zb1 zb2" C7 V3 K) M: ?( D9 ^4 q7 w! o
- oldosmode+ C5 Y. p [: G
- ). }( h5 Q. F+ M. b8 V0 A7 K6 K% S
- (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置5 I# z9 [* D/ p
- (setvar "osmode" 0) ;关闭对象捕捉
/ B8 f2 ~/ {: g9 P1 h( y - (setvar "cmdecho" 0)
+ {3 H+ c: o* n( M0 u+ Q! n - (setq e (entsel "\n选择要对分的板筋: "))
0 M! ~& _: f7 r& Y" U+ n - (setq ent (entget (car e)))
3 B3 C% {8 O( m! c& M T - (setq newt (atoi (cdr (assoc 1 ent))))9 M8 S ]$ a$ q: _; q
- (if (/= 0 newt) ;过滤非数值文字
4 _# E' T: p' n0 |+ l: \ - (progn/ L. U# Z/ }& |2 E& {3 n, f0 Y* B |1 v
- (setq tc (cdr (assoc 8 ent))) ;提取图层信息4 k& t2 u) e; v+ V9 A( c
- (command "._Clayer" tc) ;保持图层一致8 ]' G1 U7 ^7 n
- (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用
; {7 J: N. c+ L% G# w7 D - (setq ang (cdr (assoc 50 ent))) ;提取文字角度# Q6 W) ^1 d" G- h6 c3 T
- (setq st (cdr (assoc 7 ent))) ;提取文字样式3 S1 L% Y- D* H# Q4 R) {
- (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标
* L4 T9 {$ c" y" k5 f, `8 ` - (setq zbx (car zb)) ;文字x坐标
/ U* E |) q+ G+ X$ i - (setq zby (cadr zb)) ;文字Y坐标
( k: V& u) z( w5 } - (setq zg (cdr (assoc 40 ent))) ;提取字高
; G/ ]* _8 h/ T( ], h" F/ r - (setq zb1x (+ zbx (* 0.25 newt (cos ang)))); ]* d3 b, y* Z0 N7 h
- ;计算分开后两个数值的文字起点
2 y. F1 ^. f, Z - (setq zb1y (+ zby (* 0.25 newt (sin ang))))
' ?$ p U; W' Q% A - (setq zb2x (- zbx (* 0.25 newt (cos ang))))
, a3 Q8 a0 k4 w7 m6 H6 O A4 Y - (setq zb2y (- zby (* 0.25 newt (sin ang))))
" l1 \/ @% A# h% Y) k& Z6 O# p - (setq zb1 (list zb1x zb1y)) ;确定坐标点" Q* a1 j! \4 n8 d- Q/ b5 B0 E
- (setq zb2 (list zb2x zb2y))3 ]/ o- C# g' Y
- (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0), U2 T, C. x( u5 K
- ;查看该文字样式中文字高度是否为05 X: Q3 u: _; ~! D7 R
- (progn ;文字样式中文字高度为0时使用原对象的文字高度
, `( _6 M% H& l( r# a0 ~ - (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2))
$ }+ y. H* l! Q: S - ;输入两个对分的数值
; q) l" R8 f) y# J - (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))
% k0 Z) O3 }) ?6 J - )
, H* [- K( T: y' V0 { - (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度4 r) J& ?/ V3 m0 _% m3 c5 p0 U5 j: S
- (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))
! O+ O; I8 `8 f - ;输入两个对分的数值& T8 f7 i0 n5 x7 U7 l$ _, a) D
- (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2))
& @' U+ Q3 R0 I2 ]) _1 [% H - )2 n9 g% ]. r/ n' |, f) j
- )
1 ^8 ~ b% w" G% Z$ B. O# P# q - (entdel mc) ;删除原对象 U. I* W/ ] @2 }
- )
* C) g! j, v; c - (princ "\n所选对象不能处理")4 g: L# R9 U) u' E" D& Z/ S' q
- )
# U! n" z1 M) p Z - (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置
1 [3 B4 }% I" s9 ]5 p2 S - (setvar "cmdecho" 1)
9 a4 l, d: v5 K+ D u8 D9 ~ - (princ)
2 J; ?) q( l, W, |% F. [* ^6 w - )
复制代码 |
|