|
发表于 2011-11-29 13:36:09
|
显示全部楼层
来自: 中国辽宁
- (defun c:bdf (/ e ent tc newt mc ang st zb
% K1 O: t- x% P/ a" Y5 B - zbx zby zg zb1x zb1y zb2x zb2y zb1 zb2
5 I4 Z2 U2 O' ]" g% w4 n' p) ~+ H4 N - oldosmode
; m. ?, O# s0 u* ^. | - )
2 D) O: c9 s# S9 T - (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置, p8 O Q! @6 _- I
- (setvar "osmode" 0) ;关闭对象捕捉0 W- T+ p! V& G
- (setvar "cmdecho" 0)- m' I3 a1 C3 Q
- (setq e (entsel "\n选择要对分的板筋: "))
5 h, a9 `1 ` L5 ^& d% {0 E0 l - (setq ent (entget (car e)))
r9 _ f2 z1 N; R. Y& v5 ? - (setq newt (atoi (cdr (assoc 1 ent))))( n7 D+ U, O H/ E# L+ B
- (if (/= 0 newt) ;过滤非数值文字 P T2 s- I9 {+ [
- (progn# q4 N+ Z0 A0 x3 ?7 ^/ c2 U, r% f
- (setq tc (cdr (assoc 8 ent))) ;提取图层信息* n0 W u O, T* j. @
- (command "._Clayer" tc) ;保持图层一致
$ a" c I$ l% x8 n% r - (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用
. S* t+ ^$ |7 o8 J+ X( M' R - (setq ang (cdr (assoc 50 ent))) ;提取文字角度/ [: Q J' Y0 A5 E5 {/ o
- (setq st (cdr (assoc 7 ent))) ;提取文字样式, j( k$ X) A; k5 |
- (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标& d' q5 w4 n- h3 I/ J! I3 w% S
- (setq zbx (car zb)) ;文字x坐标
# j% h$ y/ N; @ - (setq zby (cadr zb)) ;文字Y坐标% d+ a( I0 }) Q6 I! Y2 \
- (setq zg (cdr (assoc 40 ent))) ;提取字高2 z5 D8 l: M2 o0 n* e
- (setq zb1x (+ zbx (* 0.25 newt (cos ang))))5 J9 B- {7 E% ~6 ^0 U2 F1 k/ v
- ;计算分开后两个数值的文字起点( t8 [/ [9 I+ j) C: I4 ~0 G6 o
- (setq zb1y (+ zby (* 0.25 newt (sin ang))))2 U, j! n, p8 W3 e" i6 m
- (setq zb2x (- zbx (* 0.25 newt (cos ang))))
& D' Y$ `8 G; I1 B- Q - (setq zb2y (- zby (* 0.25 newt (sin ang))))+ O; S/ s- A$ G( W9 x- E! m: r0 |
- (setq zb1 (list zb1x zb1y)) ;确定坐标点( L# e" ]4 B7 n! X& J9 _
- (setq zb2 (list zb2x zb2y))
8 _% P! R; n, I; f' [+ o - (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0)
_7 g/ e$ B8 E6 F+ B- N - ;查看该文字样式中文字高度是否为06 w! B$ R7 y; f% Z
- (progn ;文字样式中文字高度为0时使用原对象的文字高度
6 s# x2 X6 E9 v - (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2))
! e+ j- H1 x: G% P' c# V - ;输入两个对分的数值+ w. C j* E% w6 {, I
- (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))& U' S6 l- J* }; V3 M
- )( ]6 y3 D4 z) ^
- (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度
1 E& j2 i$ U4 B- E0 Z - (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))
/ ?& R, J" y* A( K - ;输入两个对分的数值( }; T: E2 H s" g1 o/ k M
- (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2))
# c" W/ g1 Z+ O: I& T - )
3 e8 b( C+ U \0 S) b - )
, x2 }1 @7 T7 k& ] - (entdel mc) ;删除原对象$ u# M+ j! K9 i! p2 h! ~; [
- )
; S/ R- _9 H* C - (princ "\n所选对象不能处理")
* c5 I' @1 M8 ^2 ^6 F9 T - )& Q. S7 B5 ]$ {3 q9 f
- (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置
4 c2 }4 d- z, [2 v u6 H - (setvar "cmdecho" 1)
( O6 T+ ]2 m. b% q1 W - (princ)' W2 ~( ~4 \% Z+ g" V
- )
复制代码 |
|