|
|

楼主 |
发表于 2010-1-17 15:19:47
|
显示全部楼层
来自: 中国上海
本帖最后由 zjf00 于 2010-1-17 15:22 编辑 1 P6 ]2 S1 \: Y' G: l/ A
# ?' y8 o/ u. P5 H' s
等了好久也没有等到有价值的回复。4 W# T3 U* H1 C
其实这对于会一些lisp的人来说真的是一件很容易的事6 p2 d/ V4 _. E: z6 E* C9 z
我没有学过lisp,不过依靠N久以前学过的一点点C语言的编程基础,再参照其他高手写的类似的lisp代码,总算凑齐了一段代码,解决了这个问题,现在发出来和有需要的同志共享一下:
9 y; Q7 `4 o j& q* E. s(defun c:dimdd (/ measure real result ss text) ( i' T" {2 ^6 d( i! B& r0 v9 U# |
(vl-load-com) ) Y1 D* x4 z v* t: e
(vla-endundomark - F% u. m( X# ^1 e8 n
(vla-get-activedocument
; A: D7 t# r/ X) V. \" s3 R (vlax-get-acad-object) - m e, `; L' `; k) l. n! e" x
)
5 i1 d N8 {# \ ?) 0 q5 X2 v; x# l: x! s; x* u: O
(vla-startundomark
. V8 k* |4 c- B (vla-get-activedocument O: G# P$ S! J4 l
(vlax-get-acad-object) , e+ H! [; O0 A( Z/ K6 }+ N* n
)
3 Q5 K- @; Z; H) 8 Z) v3 d; S* t
(setq ss (ssget '((0 . "DIMENSION"))))
2 C6 ?& n' j& F: [/ p& z
$ k' |8 `" n7 p: ^. O (foreach obj
% {( {1 |9 A& Y8 @, u6 z& k) D (mapcar
. _$ C- ~, m- r+ L 'vlax-ename->vla-object
8 h- t; B: ~, @2 y (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
# ^/ I; [( [/ v$ P' Y )
+ I# e; n5 i1 a, U' `9 S (if (and (setq text (vla-get-textoverride obj)) ; v6 A7 | G) {: k
(setq measure (vla-get-measurement obj)) # U- J! I% W9 a7 X
(/= text "") 0 g- u" \1 B5 d- c0 e2 P
(numberp (read text))
0 o# y) M3 _9 { )
+ m3 X2 X% t; R" @% [, {(setq real (read text)) % I% K1 C- d/ g- K
(setq real measure) 0 k- {% }- _, d
)
6 { i1 A, o- D* b. X: S/ k% X3 v (and real
1 ?& c: F+ @7 ~ (setq result (vl-princ-to-string (+ real 0.0)))
+ i# }) f" N b, Z (vla-put-textoverride obj result)
7 T6 Q$ P7 U) \. q* i0 H/ I ) ) |+ R: u( w, \! V
)
; Y$ H2 l! w* T9 F( q, ]& u$ H0 n! J7 Z3 O7 J6 D7 q2 M
(vla-endundomark
( q$ N% ?7 e, N6 m% L8 [4 E; i (vla-get-activedocument
) q& [; v' M( g6 @' h8 L (vlax-get-acad-object) ' k+ ]# u: y1 n1 f0 J) @
)
+ Y/ f1 {3 A! o, d1 B)
) `7 d4 b; o+ v( U(princ) 9 w# s. o5 H( U* Z6 s
) 4 S; Z" x- I; Q" H W/ ~) |7 v# [
(princ "\n本程序作者: zjf00 ") |
|