|
|
发表于 2011-11-29 13:36:09
|
显示全部楼层
来自: 中国辽宁
- (defun c:bdf (/ e ent tc newt mc ang st zb I, L8 R+ D% ^" R, V) O5 V; V8 V
- zbx zby zg zb1x zb1y zb2x zb2y zb1 zb2
# `7 Y; v- m+ t& D" g6 e4 R: S8 k - oldosmode
( r5 D- O$ \" g. E; n* o - )
0 h" k7 Z1 R2 K( l- |( i/ @ - (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置
7 Z* [4 ~2 u; c3 b6 h0 N K - (setvar "osmode" 0) ;关闭对象捕捉
& e! V) P" _" G5 L$ N4 t& k, w* v - (setvar "cmdecho" 0)
0 U! e3 w0 E% M V, l - (setq e (entsel "\n选择要对分的板筋: "))
! J: s' V( T0 p# ? c$ Q - (setq ent (entget (car e)))
6 i5 ]. }" d3 r2 D/ Y4 |/ R9 c - (setq newt (atoi (cdr (assoc 1 ent))))
[6 O$ j* p0 o2 ^ - (if (/= 0 newt) ;过滤非数值文字
2 h$ K1 C% Y! q, J9 Z( P - (progn
( v5 x5 b- e7 G6 w# ^ - (setq tc (cdr (assoc 8 ent))) ;提取图层信息
) {% g S, ^! _$ o6 k - (command "._Clayer" tc) ;保持图层一致! F) D! U7 A! e1 q% B
- (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用
( P3 {1 x3 X8 [5 U - (setq ang (cdr (assoc 50 ent))) ;提取文字角度
' J Y$ {- x) J+ T1 q3 ]& | - (setq st (cdr (assoc 7 ent))) ;提取文字样式" R, n, g- Q4 f; ~7 R. Z
- (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标
0 W- u5 F$ F% N- a0 |% u - (setq zbx (car zb)) ;文字x坐标' K7 e8 O* e0 y' G, U+ U6 @
- (setq zby (cadr zb)) ;文字Y坐标
# X. f$ t2 i; | - (setq zg (cdr (assoc 40 ent))) ;提取字高0 a+ H3 {5 q& O1 j/ K$ l& H
- (setq zb1x (+ zbx (* 0.25 newt (cos ang))))
1 w8 o0 t. Y, ~+ p - ;计算分开后两个数值的文字起点
7 V$ v _4 L+ T4 C7 F5 j2 R& t2 X+ @ - (setq zb1y (+ zby (* 0.25 newt (sin ang))))
/ ^9 _: Z3 T. T, M( } - (setq zb2x (- zbx (* 0.25 newt (cos ang))))
/ j5 X- ?& r% C, K/ o& ` - (setq zb2y (- zby (* 0.25 newt (sin ang))))
2 W( J1 O* q F5 J* S - (setq zb1 (list zb1x zb1y)) ;确定坐标点6 }8 d( F3 |" `$ T* r9 k) H
- (setq zb2 (list zb2x zb2y))
8 B6 i( U& n7 W* E. m - (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0): m( r* L3 g! L% W, q$ R
- ;查看该文字样式中文字高度是否为03 O" _' x. ]5 _. D: B- q0 t4 ~
- (progn ;文字样式中文字高度为0时使用原对象的文字高度
9 s) L) L# q$ v. W- H1 z, m9 I - (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2))
/ P1 _" w7 |2 v, o; e$ {5 j - ;输入两个对分的数值 y: n6 S$ T$ \" r) j9 b
- (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))
% c+ D8 M$ ?3 r& }9 g- j+ n' |7 X - )
) o& m( C( n4 {$ [; ?/ p7 w& o - (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度! l4 N8 m2 O6 E
- (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))$ f# k0 {7 ? H6 l) N! w
- ;输入两个对分的数值
2 U6 h9 X2 q" y - (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2))* q* E+ E) A. p5 r/ k1 {
- )
" A3 B8 }( V/ S' X) C' |; P - )
+ L' @% @5 F' S( p - (entdel mc) ;删除原对象$ a: y1 ^% A* i! Z
- )
3 E. ?( d t: G) |) } L - (princ "\n所选对象不能处理")# y2 y/ A' {+ W4 J" l9 q, ^
- )
6 v9 l4 ^' z; C% b2 n- @1 b* }# O - (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置7 C# X; Y; q( w; q3 o+ n: u
- (setvar "cmdecho" 1)
4 S2 y: l; g6 ? - (princ)% O6 |0 u; l' c; |6 N! K# S
- )
复制代码 |
|