|
|
发表于 2011-11-29 13:36:09
|
显示全部楼层
来自: 中国辽宁
- (defun c:bdf (/ e ent tc newt mc ang st zb( | _( d3 d- P+ Y* i+ w0 q$ A" i
- zbx zby zg zb1x zb1y zb2x zb2y zb1 zb25 G# Z0 q; n3 p0 k* U' n
- oldosmode0 o) ?) q. n8 A6 G* t) x
- )
; A; ~; w; j. `1 y1 ?) I. ] - (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置6 P+ \1 K% z3 M$ H6 W; t
- (setvar "osmode" 0) ;关闭对象捕捉7 V0 ~" f |. O! ^. ^2 M$ ~8 e
- (setvar "cmdecho" 0)3 V3 j/ W5 L" ]. k/ S
- (setq e (entsel "\n选择要对分的板筋: "))
( M3 u( d" _, O& o( q - (setq ent (entget (car e)))" t; G( ~+ I# [( l- g
- (setq newt (atoi (cdr (assoc 1 ent)))); Q5 b* X I; f
- (if (/= 0 newt) ;过滤非数值文字7 \) B! R- Z& ]" K6 p
- (progn( a( Q9 \, u( V% f, h
- (setq tc (cdr (assoc 8 ent))) ;提取图层信息
$ o: j8 \7 k3 |6 G - (command "._Clayer" tc) ;保持图层一致! |+ y# o1 L# P2 d! l: ~: q8 M
- (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用2 M& t" `, j; @( F
- (setq ang (cdr (assoc 50 ent))) ;提取文字角度
" L2 \) n( f4 Z5 @- B& i - (setq st (cdr (assoc 7 ent))) ;提取文字样式
' I$ V6 E- r( ~7 b! V9 Z9 {" | - (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标* k% B# H: U( A1 G. c
- (setq zbx (car zb)) ;文字x坐标
- w2 k7 H2 C( s( T7 w - (setq zby (cadr zb)) ;文字Y坐标% F) v$ s# ~9 y9 }0 b
- (setq zg (cdr (assoc 40 ent))) ;提取字高 k c, l, x. ?" \
- (setq zb1x (+ zbx (* 0.25 newt (cos ang))))- N/ L! j, o- \4 ^% F
- ;计算分开后两个数值的文字起点
' Z1 {" y" A! t2 `: V - (setq zb1y (+ zby (* 0.25 newt (sin ang))))
9 F5 i) ]- B6 W - (setq zb2x (- zbx (* 0.25 newt (cos ang))))
. C) P2 M5 a; k N$ j; G d7 @ - (setq zb2y (- zby (* 0.25 newt (sin ang))))
5 Q! N4 c1 [6 f* w' U( Q. P; z - (setq zb1 (list zb1x zb1y)) ;确定坐标点
$ H6 D$ @) s3 j6 M+ N X - (setq zb2 (list zb2x zb2y))
$ G; w2 r9 `; |. C - (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0)5 C. z* u; e4 j; c) @" j' I
- ;查看该文字样式中文字高度是否为0
% Y/ t! h+ S, r& F0 q - (progn ;文字样式中文字高度为0时使用原对象的文字高度
; N K. Q. G) H8 F7 o! S3 q - (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2))
& q! D* M+ K0 ^6 S! G2 P - ;输入两个对分的数值7 g2 I) \6 J: V! N; `) C# \) O
- (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))# d1 J) d( K4 E5 _ g ?
- )
* D, M; K# ]: R# R8 P* Q+ c- P8 w3 b- y - (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度
# d1 Y( O6 f1 Y9 t+ E' T* @; Y+ Q$ v - (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))
: o6 S6 }# O3 D4 z - ;输入两个对分的数值7 Y- p! z; ?$ `% v( K
- (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2))% c# r* e1 S) E }5 t
- )# z- r+ B- ^( j" {3 k1 h7 u
- )
8 k1 G- t. K' Y; q* ?0 ]9 D( k - (entdel mc) ;删除原对象2 N' w3 {( A: X& b4 j0 r/ p9 ^
- )
2 c! o- u! l# t2 y- ] - (princ "\n所选对象不能处理")7 C& g! K0 k5 R1 e& h+ ^
- )
9 ^# T: N& @ w X) i- } - (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置& ?3 y. e. |1 T, W% j6 w
- (setvar "cmdecho" 1)
3 m2 _& Y1 b5 i - (princ)
" ]8 T+ q5 F$ E, x0 ]! v - )
复制代码 |
|