|
发表于 2011-11-29 13:36:09
|
显示全部楼层
来自: 中国辽宁
- (defun c:bdf (/ e ent tc newt mc ang st zb
6 z9 ~1 I8 P5 |3 o2 Z+ S2 e- P - zbx zby zg zb1x zb1y zb2x zb2y zb1 zb23 I$ p# |, Y6 s/ h( F& e& H
- oldosmode6 ]. u/ m( Q {# s8 y2 }
- )
# @% P; w0 C* e8 Z1 ]3 c* ^ - (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置
7 R6 [4 A$ s3 @, u0 m. A - (setvar "osmode" 0) ;关闭对象捕捉
8 H% X: _' `# z) [$ f - (setvar "cmdecho" 0)
' Q) `! _/ t& p- T. [ - (setq e (entsel "\n选择要对分的板筋: "))
5 v/ R* k: l N) s6 @ - (setq ent (entget (car e)))
; A( m% y$ E) j. r: D - (setq newt (atoi (cdr (assoc 1 ent))))
5 t6 O3 m$ G: D+ \1 C4 l - (if (/= 0 newt) ;过滤非数值文字
: b0 z4 v- f' b- G8 ~; W6 a - (progn) L) e8 K' D' i8 ]
- (setq tc (cdr (assoc 8 ent))) ;提取图层信息% b9 H @; ^- q, i6 Z
- (command "._Clayer" tc) ;保持图层一致
3 L1 P B- J* ` - (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用& E& [0 e. e9 t
- (setq ang (cdr (assoc 50 ent))) ;提取文字角度 y. c& G J9 M- i( o; z1 X
- (setq st (cdr (assoc 7 ent))) ;提取文字样式
8 E7 u* J, C, W - (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标
6 n: T* M, B( R - (setq zbx (car zb)) ;文字x坐标
" s5 u' L+ O( \) i- ?- | - (setq zby (cadr zb)) ;文字Y坐标$ c8 P8 R/ C! s, r
- (setq zg (cdr (assoc 40 ent))) ;提取字高. {2 }6 N# m8 [
- (setq zb1x (+ zbx (* 0.25 newt (cos ang))))
6 Z9 |; H. _% z ~ } - ;计算分开后两个数值的文字起点
) X* b( i* v8 { E. y' Y3 p - (setq zb1y (+ zby (* 0.25 newt (sin ang))))5 G7 }* F0 ~5 e1 q- Z
- (setq zb2x (- zbx (* 0.25 newt (cos ang)))), g" [1 J* Z. F
- (setq zb2y (- zby (* 0.25 newt (sin ang))))
" e6 @) a H& A# x$ A" @ - (setq zb1 (list zb1x zb1y)) ;确定坐标点) `* ]5 W3 I, } S3 @- C3 ^
- (setq zb2 (list zb2x zb2y))- B0 V; B ]9 w; m8 x0 l9 Y8 Q5 b
- (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0)# Y0 o7 i T) m, F, V
- ;查看该文字样式中文字高度是否为03 F2 r# b- N9 E7 K5 x" [
- (progn ;文字样式中文字高度为0时使用原对象的文字高度
2 P3 ?) L9 G+ `" ?4 |2 x5 N% i - (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2))
1 @- i4 d: b# ^; ~8 D- k3 h - ;输入两个对分的数值
8 U& ?4 \! ]2 \4 F2 g$ c( `1 v7 o& R - (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2)); N6 L( S& }3 d$ @0 d3 ]
- )
, Y6 v1 c7 c, c7 G; D - (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度
- q" Z: c% i+ a X - (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))0 w! D i5 j. G6 n
- ;输入两个对分的数值0 l' ~5 a: I7 V8 a/ _- K+ Z
- (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2))
5 d/ X* X0 X1 {+ I4 m9 @ - ) C. y- e' X E4 o) H# X
- )
3 t' z' R1 [$ D$ p/ q - (entdel mc) ;删除原对象; P& D5 O! n8 k F% P5 D \
- )5 y' x! P$ y( D' k9 t
- (princ "\n所选对象不能处理")
) \4 m/ J5 C2 \! M( s" I2 M+ w1 {" ]5 M - )( C, l r5 Y3 X* P) z9 U
- (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置
/ q# e% I g: U/ l3 z. N1 b& ~6 W0 z - (setvar "cmdecho" 1)+ Q: l* w$ t. p- S
- (princ)4 B- Q( |' N' U8 l) Q
- )
复制代码 |
|