|
|
发表于 2011-11-29 13:36:09
|
显示全部楼层
来自: 中国辽宁
- (defun c:bdf (/ e ent tc newt mc ang st zb9 E; I9 Q" s# T
- zbx zby zg zb1x zb1y zb2x zb2y zb1 zb2
# S2 o2 t% p* N7 f- K - oldosmode
/ @! b, E9 ~8 ?$ b4 K$ L- ? - )5 _7 B2 u* W4 F8 g! K4 o) K- C
- (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置" B$ q% v$ g5 J
- (setvar "osmode" 0) ;关闭对象捕捉
$ \! Q- H+ {% s( u - (setvar "cmdecho" 0), f% j8 {6 U! d0 q- L2 z& U
- (setq e (entsel "\n选择要对分的板筋: "))
7 A J, `# S: ~! ?& L1 V - (setq ent (entget (car e))). ?2 M3 C! Q" C
- (setq newt (atoi (cdr (assoc 1 ent))))
5 d/ \; ]2 j. n& [' }+ w - (if (/= 0 newt) ;过滤非数值文字
0 s2 z) b" \* C! o+ E - (progn
8 w: r J* U& `8 w2 D - (setq tc (cdr (assoc 8 ent))) ;提取图层信息) p8 E R' g; ]% I8 k
- (command "._Clayer" tc) ;保持图层一致
9 ?- ]; n; U0 R, E% l - (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用
$ [8 l& j- c* n1 ~ W5 e - (setq ang (cdr (assoc 50 ent))) ;提取文字角度
# V9 n& [' V$ O - (setq st (cdr (assoc 7 ent))) ;提取文字样式
: _' L1 W% K5 [& }. \! L - (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标2 |$ K- O! [7 g. M- b7 K* l- ]7 K
- (setq zbx (car zb)) ;文字x坐标- d* X+ V# @% @& Z/ ?
- (setq zby (cadr zb)) ;文字Y坐标8 C! h1 @, @$ i; z
- (setq zg (cdr (assoc 40 ent))) ;提取字高
6 A2 d4 z& q6 i9 Q9 }8 _3 M* I - (setq zb1x (+ zbx (* 0.25 newt (cos ang))))
- ~1 a( z$ s7 `* C - ;计算分开后两个数值的文字起点
$ r/ J8 G/ q" g - (setq zb1y (+ zby (* 0.25 newt (sin ang))))8 ]9 C1 X/ B* [% _1 H# Y' m1 O
- (setq zb2x (- zbx (* 0.25 newt (cos ang))))
8 ~7 I6 e7 p' p' A5 f/ t2 _ - (setq zb2y (- zby (* 0.25 newt (sin ang))))7 f( M; c( a s1 u
- (setq zb1 (list zb1x zb1y)) ;确定坐标点5 B6 l' K6 `" E* S( G! h, b# k; i# N
- (setq zb2 (list zb2x zb2y))- ^: W& |# i5 @6 Y$ [& r4 Q
- (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0)
0 _0 k0 \- {+ u' m0 d- ^ - ;查看该文字样式中文字高度是否为0
/ F0 Y: }1 H# D9 @ - (progn ;文字样式中文字高度为0时使用原对象的文字高度- ? M9 ?3 _" ]* L8 m+ z- C: G
- (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2)) |/ S7 s* k6 v
- ;输入两个对分的数值
E1 Z: P6 \0 A ^/ ~4 [! Y - (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))
. d% A1 r8 r2 f M6 j& _ - )5 W$ y+ S& @2 h, N; c# w
- (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度
' G3 l. t f. @" u$ Z5 v - (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))2 T- `9 h2 ^0 @- |- _9 i; n; D
- ;输入两个对分的数值 X4 B+ t, Q/ z1 b: |8 d
- (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2))
' ?; l5 a, }& d8 j( K# T. B3 q - )
/ ^; B2 i) i1 H6 B N+ {; t5 c; ^ - )
9 t$ i+ K: ~" _ - (entdel mc) ;删除原对象
7 t* ^4 e; H' D/ w - )0 ]0 c* Q$ y# M) S7 P
- (princ "\n所选对象不能处理")
" O1 y& }1 O# M) }! s* M" X! d% q - )
+ [# E! @ L0 y% D+ R u. |6 a3 X# h - (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置, u; |, Y! o1 b" Z
- (setvar "cmdecho" 1)
, L1 a' P. X" @+ o! o - (princ)1 u) n3 \2 v, ]" r6 j; ]: A/ X& h+ |
- )
复制代码 |
|