|
发表于 2011-11-29 13:36:09
|
显示全部楼层
来自: 中国辽宁
- (defun c:bdf (/ e ent tc newt mc ang st zb0 Q' }* N' z) g Z' w* v
- zbx zby zg zb1x zb1y zb2x zb2y zb1 zb2
- C& O: G2 \& X" F - oldosmode
; N0 ~+ \, R: `( m2 q4 n$ x( ~# V - )
6 p( Y7 ^% a7 v( h - (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置
: M! q6 i1 r9 Q- V: o( Q - (setvar "osmode" 0) ;关闭对象捕捉) W, q7 c6 L3 ^
- (setvar "cmdecho" 0)
`) \) H- s5 r4 S1 ] - (setq e (entsel "\n选择要对分的板筋: "))7 `% r& e. O5 y/ L/ t
- (setq ent (entget (car e)))6 D0 n, @4 f/ J* r$ V! ~, b; o
- (setq newt (atoi (cdr (assoc 1 ent))))5 f( C- o! }3 c c0 t
- (if (/= 0 newt) ;过滤非数值文字' ^3 P# R/ B! ] A
- (progn5 b1 q$ I r, ~. C0 L: y) @' F+ B
- (setq tc (cdr (assoc 8 ent))) ;提取图层信息5 U2 \5 P0 I( w! a- o
- (command "._Clayer" tc) ;保持图层一致
; ]2 a& U$ Q- Y9 o( O - (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用
% m0 T+ |' e! S7 v2 r! n - (setq ang (cdr (assoc 50 ent))) ;提取文字角度
2 M' c% o$ s$ v" b) m - (setq st (cdr (assoc 7 ent))) ;提取文字样式
}" k) h' [4 c - (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标% K) g" ~5 F( H2 [8 Y
- (setq zbx (car zb)) ;文字x坐标" ?. y' Z0 Q+ G* _
- (setq zby (cadr zb)) ;文字Y坐标
& Z i. r. i$ s' p# R - (setq zg (cdr (assoc 40 ent))) ;提取字高
9 j" [3 U, _0 V6 [$ z, Z - (setq zb1x (+ zbx (* 0.25 newt (cos ang))))
: H1 n+ y0 k: | - ;计算分开后两个数值的文字起点
5 q! T8 B8 t" B" c& W6 d$ j- p - (setq zb1y (+ zby (* 0.25 newt (sin ang))))
( h- s1 m: I z5 V. ~" p5 C. C y - (setq zb2x (- zbx (* 0.25 newt (cos ang))))
$ N) a) J- v6 P$ ~ - (setq zb2y (- zby (* 0.25 newt (sin ang))))! u+ `4 c+ {4 q8 C- _
- (setq zb1 (list zb1x zb1y)) ;确定坐标点1 ], s" d- R! n6 k( c
- (setq zb2 (list zb2x zb2y))
0 w4 @% P3 p: o2 x) \# [6 \2 _8 C - (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0)7 o/ n8 O- Q; [+ ~( X9 S2 M
- ;查看该文字样式中文字高度是否为0
8 F/ c$ j& |. s s* x- v) p - (progn ;文字样式中文字高度为0时使用原对象的文字高度
/ h7 K" x1 h2 \+ b. B - (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2))
4 y2 U8 k h' ~5 r3 W Q' D - ;输入两个对分的数值' F7 \5 b& f/ y4 f" g* _6 x9 \
- (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))
e7 _* n+ }. u6 H9 ]' Z- m) |6 X0 e - )
% ~. @' N6 [8 i1 `" ~ - (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度" G) O. A9 N6 W7 z& F+ ?2 g# R
- (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))7 y' k; z; d* o' f
- ;输入两个对分的数值
8 w- }9 B7 ^9 G3 f: E; l" O - (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2))/ G! s7 F! A! W/ z
- )2 o6 `; x. y3 B7 ~
- )
/ |, P; @; a1 g t* B - (entdel mc) ;删除原对象
3 _' d D" C( ~' j" H( M; e9 E - ), Q' r# r0 g% m# L6 e
- (princ "\n所选对象不能处理")( g$ ~ ~ P% u* t
- )+ Z. s" g" n; q9 f# B
- (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置
& e# m- J/ |. f7 w5 G - (setvar "cmdecho" 1). W+ s- ]+ U1 J
- (princ)
$ X0 ^/ z( P! c, Z0 q - )
复制代码 |
|