|
发表于 2011-11-29 13:36:09
|
显示全部楼层
来自: 中国辽宁
- (defun c:bdf (/ e ent tc newt mc ang st zb6 `& s3 {) O$ }: N$ D/ }
- zbx zby zg zb1x zb1y zb2x zb2y zb1 zb27 \8 M1 D+ m9 v5 A# m! N
- oldosmode5 n, A$ p% N6 R- B7 W9 }6 B) o. x' H
- )
' k" H- {( A( [" Q2 {8 w5 Z5 q - (setq oldosmode (getvar "osmode")) ;记录用户当前的对象捕捉设置
% n6 ]# V2 M4 Z( j! A - (setvar "osmode" 0) ;关闭对象捕捉& y/ o& d7 I2 h1 H3 K% x/ z- I
- (setvar "cmdecho" 0)
: g. ^( o8 l2 k, M& r - (setq e (entsel "\n选择要对分的板筋: "))9 ~0 {! |' r$ |2 M) e* F1 I
- (setq ent (entget (car e))): a4 @. f( \9 W, l+ x% v' g
- (setq newt (atoi (cdr (assoc 1 ent))))
8 c6 C+ u% Z9 y% j/ r) e2 x8 c - (if (/= 0 newt) ;过滤非数值文字
0 W. D* ]5 L6 P) k6 l. Y9 R0 C - (progn$ L9 O; @+ b3 m
- (setq tc (cdr (assoc 8 ent))) ;提取图层信息
- Q0 {$ r7 o7 u2 o! ~" t - (command "._Clayer" tc) ;保持图层一致! g* A) \+ x% I& U' V3 v9 f
- (setq mc (cdr (assoc -1 ent))) ;提取名称,删除原对象使用, @, l! a O8 q# O" M( @
- (setq ang (cdr (assoc 50 ent))) ;提取文字角度
9 ~" C& t8 i+ R9 b9 P! b s - (setq st (cdr (assoc 7 ent))) ;提取文字样式' u6 _- c7 k5 b2 s& V1 c) J! O9 I
- (setq zb (cdr (assoc 10 ent))) ;提取文字起点坐标
3 j2 R$ x, e( R6 o z7 P5 e - (setq zbx (car zb)) ;文字x坐标
6 Y7 k+ v6 s, ^' F7 Q4 n( Q3 G3 J' S - (setq zby (cadr zb)) ;文字Y坐标
5 j! i) f, D0 K9 }1 d - (setq zg (cdr (assoc 40 ent))) ;提取字高# Z+ s! `' f& a1 {# w: N
- (setq zb1x (+ zbx (* 0.25 newt (cos ang))))+ T4 j1 x0 N# v$ T, _; [
- ;计算分开后两个数值的文字起点
2 ?9 B6 `$ g( ~) [% ]& ?* Q - (setq zb1y (+ zby (* 0.25 newt (sin ang))))2 J; P* E; M* z
- (setq zb2x (- zbx (* 0.25 newt (cos ang))))4 H6 x2 |: H& h' u& K+ i
- (setq zb2y (- zby (* 0.25 newt (sin ang))))
5 P7 E6 e/ `' O* H7 W$ ~6 n - (setq zb1 (list zb1x zb1y)) ;确定坐标点7 o8 g9 V6 \8 @; [* s1 r
- (setq zb2 (list zb2x zb2y))
* f4 _: y; Y9 A8 I$ k - (if (= (cdr (assoc 40 (entget (tblobjname "style" st)))) 0)$ i, V6 @/ R8 f( T. L; q& j
- ;查看该文字样式中文字高度是否为0# R* n0 E5 s. D9 Z) K
- (progn ;文字样式中文字高度为0时使用原对象的文字高度
1 q- |% R' A0 g$ A - (command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2)); d/ ]: ?+ R' k" j
- ;输入两个对分的数值
7 e `( Z m% |6 D; `+ d* d$ S - (command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))5 N) F* `' F# `" D9 I/ P* b7 v
- )4 e* N9 X, o" |2 E7 Z. ]
- (progn ;文字样式中文字高度不为0时不在命令行中指定文字高度- M, Y+ f0 C3 ~; v r% C( N( ?" h
- (command "text" "s" st zb1 (* 180 (/ ang pi)) (/ newt 2))$ p9 n$ o0 `2 [7 C/ v# i
- ;输入两个对分的数值
/ z" t4 `+ J ]% A. E% \. i - (command "text" "s" st zb2 (* 180 (/ ang pi)) (/ newt 2))
' e, U u/ B: R) F; p$ J2 L" ?" t - )
; g# Y/ ]6 M# U+ [. u; [5 w5 W - )
, \* L; ^. m8 C5 n) j3 H - (entdel mc) ;删除原对象2 \6 E! L# D4 T/ K. m/ H
- )
: l2 A- A; @7 T: T9 a0 x - (princ "\n所选对象不能处理") N- b. E! c0 ~3 @; `
- )
8 |$ o/ {& V! P - (setvar "osmode" oldosmode) ;恢复用户对象捕捉设置
6 U% V4 r0 @, Q: _+ F - (setvar "cmdecho" 1)- J+ s! J. d9 p/ z# k$ P0 E8 g
- (princ)6 S- K4 O& B3 F. r
- )
复制代码 |
|