QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 3609|回复: 3
收起左侧

[讨论] Lisp 编程完成英制转换为公制

[复制链接]
发表于 2008-8-10 19:11:08 | 显示全部楼层 |阅读模式 来自: 中国江苏苏州

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
有没有编程高手帮我编个LISP程序。我做在标注模板图的时候,用英制标注,而加工需要用公制,要是每个都手工改很费时间的。比方说自动标注出的直径为%%C0.125(英寸),我只能手工改成%%c3.175(0.125x25.4)。能不能编个LISP程序自动改成这样?先谢谢啦!
发表于 2008-8-10 19:30:16 | 显示全部楼层 来自: 中国上海
用不到什么程序的,只要在标注样式里设置一下,在标注时就有公英制双尺寸显示了" P, p6 Q4 f% X* g6 T% B3 o+ e* C
你这个“C0.125(英寸),”也有错误,一般英制是用分数表示的# H- Y* Z! A# M7 Z: T; k
7 x( [% L% a5 R) }! B
[ 本帖最后由 newdhj 于 2008-8-10 19:32 编辑 ]
0810-6.JPG
 楼主| 发表于 2008-8-11 13:07:18 | 显示全部楼层 来自: 中国江苏苏州

Lisp 编程完成英制转换为公制

谢谢newdhj 的答复。
3 I, _. L' g! r" T; y  d. j肯恩是我没有所清楚,我是在标注模板坐标时出现这个问题。模板的XY坐标标出来后,跟模板就没有关联性了。换句话说,标出来的就是一对文字,不是尺寸了。所以没有办法从设置里面更改。(这个软件是个外挂)。+ |) f1 g/ P' ^$ @- E# O6 R7 `1 f* l

* [3 l: V5 H$ V9 _6 x  A[ 本帖最后由 mouse-net 于 2008-8-11 13:19 编辑 ]
111.JPG

新建 文本文档.txt

86 Bytes, 下载次数: 9

发表于 2010-10-14 16:49:49 | 显示全部楼层 来自: 中国广东深圳
我有一个发给大家学习学习(defun c:inm()& l& E  p# g0 X9 q
(setq kkdat(findfile(strcat way"\\dat\\TAGMARK.kdat" )))- Z4 w% ^$ C$ `/ [( S5 D
(Setq ss@SS(ssget(list(cons -3 (list(list "my_tag"))))))
3 W1 B, c6 k4 \+ v+ c(setq ss@len(sslength ss@SS))6 ?8 n4 V* X4 ]- @
(setq @k 0)# _5 N, ~: [4 ^, W3 R
(while(< @k ss@len)
4 d) [4 W% C6 d(xl:GetXData (setq ssn(ssname ss@SS @k)) '("my_tag"))
' y6 }$ y- ?! I4 D! Y  (setq  my_tag(car(cdr(cdr(car data_i)))))
% T* \4 V7 B. A2 Y (if (/= "org"(cdr my_tag ))(progn
& P) h: I4 V8 ^. i6 E. ]  (setq my_tag(cdr my_tag))
1 N: D$ a8 t: g6 J  (setq temptag(substr my_tag (+ 2(vl-string-search  " " my_tag))))
. {7 Q7 Q0 F- m/ u6 K) {4 B/ m6 ]  (setq tagmark(substr temptag 1 (vl-string-search  " " temptag))); J/ \- X3 ?5 w" O
  (setq elss(entget ssn))% O6 P) w- {& T/ r
(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn* A& {% a1 q/ ?+ ]
(setq circen(cdr(assoc 10 elss)));;圆心
- U% Y+ |$ X" }(setq Rcir(cdr(assoc 40 elss)));;半径
2 p) q  {% w: |(setq cirlayer(cdr(assoc 8 elss)));;图层' ~4 d/ ^0 B3 @7 Q! u# I0 l+ l
                                    5 F4 A" X- X3 f4 Z+ x# _6 D
  ));;(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn
8 F% P" _( d) K$ C# _+ f/ Q( g: C
  7 ~5 \! ]$ ~* H! K  k6 U
  (findtag tagmark)
! r% k& }2 S9 N+ W. N0 n  
& n8 R; O3 |6 i5 u  ));;(if my_tag(progn: `: h4 g2 q9 L8 e( D; t
  (setq @k(+ @k 1))
% O5 g4 C1 p# i( A8 z4 Z& ?  );;(while(< @k ss@len)' Y8 r6 q+ ]7 a0 @
0 [$ \0 V" J/ l! g
  (princ)
0 g/ F* E9 H- P' p  );end; y$ R3 ]4 l8 L7 A" v$ p7 Q

7 m* _. D4 x3 F( P2 B8 q: e3 T: h- \* i* t1 E0 O  h
1 G: q+ D! t( U2 B

" ~2 |0 A. ~/ S
9 [/ Z7 d* G1 V7 N* f
- {: ?& N2 y5 x4 {  ~1 o. u* i; G* d
5 x) F4 ?7 s0 p% P: Q- L9 r4 Y
;;功能  
0 m0 S  V. o3 l4 Y0 ^;;获取附着在AutoCAD对象上的扩展图元数据  
$ I4 _3 p& y$ H1 U0 I4 ^;;语法  
9 ?9 [; X# o) S0 n3 d1 a# g$ g;;(ax:GetXData Obj AppID)  0 |& S$ k  O2 a) g. d1 D5 ^9 v0 N1 R* `" q
;;参数  5 n/ U- n" X7 w1 {, c  R6 C
;;obj:图元名" Z- n9 G& I% t+ e' D/ |" X
;;appid:AutoLISP函数REGAPP注册的应用名,如为("*")则返回全部XDATA,如为("AAA" "ACAD")则返回两个程序的数据9 t2 r2 h; s5 L! R4 ^
;;返回值  
1 p- N# U# U9 i0 t9 D;;返回附着到对象上的扩展图元数据列表  
0 J+ i  N8 v/ A2 Y, B;;如:  (("south" (1000 . "204201") (1040 . 1.0))0 B: j5 c5 V9 t0 D( T, e+ V2 N
;;       ("AAAA" (1041 . 562.307)  (1000 . "aaaaa"))
! P8 h4 [3 O% t7 V;;       ("BBBB" (1000 . "bbbbbbb"))
: U' r( h, i$ P1 p, w;;       ("CCCC" (1041 . 752.569))7 E. l; o- J; h& }* w+ D
;;      )
! a2 z  U8 m* h7 s5 T7 f;;样例  . O  k& Y8 I1 l4 X( o
;;(xl:GetXData myVlaObj '("*")) 或 (xl:GetXData myVlaObj '("AAA" "ACAD" "my_tag"))
5 Q, ^# i; f) q  S/ x# r(defun xl:GetXData
. Z# Q, u& N, k/ r* x* k       (Obj AppID / data n i  k i_k data_k temp1 temp2)
% [  b4 F/ C7 V' p  (setq data_i nil)
5 _/ \1 O7 f- H  (setq data (cdr (assoc -3 (entget obj appid)))# P! k, ~% @1 K( V7 J% @
n    (length data)  b, W- l5 y8 e$ G
i    0
9 S8 }$ P- e( N5 l  I  )! w; p# |5 Q4 M% G
  (repeat n
* {4 }" ~5 C# I: B0 g5 U' J% m" @6 M    (setq temp1  (nth i data)) S* a' j# F8 Z$ g8 U. j% U
   data_k (list (car temp1)): T; x4 M- P. S; P7 c% }' Z9 f
   temp1  (cdr temp1)
6 u1 I" v0 C; N/ E   k  (length temp1)2 R/ U) P) P( z
   i_k  06 S) F4 @/ R7 t' I9 m: V4 i
    )
' @9 ?6 l, J+ {    (repeat k- _/ |$ T3 |  W% M, M& {% S$ u  I
      (setq temp2 (nth i_k temp1)
. a& o# K% S' q& k/ M4 ?     i_k   (1+ i_k)1 J- d' F# w! T: O
      )
) a9 j, n9 B9 C! Z' l5 ?3 L4 g      (if (and (not (equal temp2 '(1002 . "{")))' s/ F) c* E3 R0 m
        (not (equal temp2 '(1002 . "}")))* s+ d( w+ W4 h7 P1 X! D1 h5 u
   )
4 g( C/ e9 p9 R* t (setq data_k (append data_k (list temp2)))7 o1 [4 r3 l7 o" w
      )2 I# {7 U" t' r/ m" }$ ~1 |5 O1 v
    )
7 D# L/ L" |1 s9 ~7 l" c+ ]    (setq data_i (append data_i (list data_k))) z) v# g: O2 t2 }/ G
   i  (1+ i)
* [1 R. x6 w4 V# K. M7 o    )
# |6 D) X# I0 r0 ]2 d/ g  )
9 N' t; w8 L, q) g3 y  data_i
" j5 X% Z$ q' ~% R! U)4 R8 |  ]9 ]8 x& A/ X6 \% d5 j# ~! ?

1 ]7 r9 O. y/ _8 l0 H: y
1 I4 X3 m: T. M" C& C: b! W
+ w* l  }8 S1 W7 k3 o
0 [3 m. C* _! p(defun findtag (tagmark)
+ [+ [4 O# ~0 G2 d- J1 O) ?8 N  (setq kdat(open kkdat "r"))* J! Y" I* ~$ o
(while(setq kdatread (read-line kdat))
, v+ O* W8 D. d0 M2 |1 ~, C4 {# m+ s   (if(/=" "(substr kdatread 1 1))
% S: q$ T' F- g  s( z) I, r8 m    (if(= kdatread tagmark)(progn
# }$ V& y7 l6 K. m  X' P(setq kai nil)                             7 N$ b- E3 G5 p  E8 |1 |
(while (and (/= kai 1)(setq kdatread (read-line kdat))) ;运行下面的4 e' q- w$ q; [: V
   (if(/=" "(substr  kdatread 1 1))(setq kai 1))$ z% ]( P9 F0 i* B/ Z9 S  M$ b2 `
  (setq kdatread(substr kdatread 2 ))# ^6 a7 L1 A$ `/ d
  (Setq pwk(vl-string-search " " kdatread))- M! B$ ^) v& w" T
  (setq comma (strcase (substr  kdatread 1 pwk)));变大写
* H4 s1 O) b( e$ ]) v* V# M( s  (if (= comma "TEST")(progn
* `# l5 P* T- O+ M( w/ @; n(setq kdatread(substr kdatread (+ pwk 2))). k+ H9 z7 D1 [3 s' d
(Setq pwk(vl-string-search " " kdatread))
  o6 E% V/ h+ n; l7 ^  (setq textin (strcase (substr  kdatread 1 pwk)));文字插入点
* H; e0 v9 f, @( K. K* Z9 [(if (= textin "CEN")(setq textin  circen));如果为CEN为圆心
! r+ d) T8 G( b, {! D" i  (setq kdatread(substr kdatread (+ pwk 2)))
& V5 V5 s1 \, ?, L# K" c' C(Setq pwk(vl-string-search " " kdatread))
3 e8 T4 _" M9 o6 q% c1 w% |: @3 W6 z  (setq textt (strcase (substr  kdatread 1 pwk)));文字9 s* K3 K1 Y: V- j' P, D9 @1 P) t
(setvar "clayer" cirlayer)
* @' V! d% f3 ^% ?! G: m2 ?$ k(vla-Addtext mspace textt(vlax-3d-point textin)2.5);写文字: ~1 R  n/ W9 ^! N& ?  I* G
        ));(if (= comma "TEST")(progn1 n6 O6 ~. b/ `9 Y

) f2 ]) F, T8 J  (if (= comma "LINE")(progn; U1 V" d: T2 b$ Q( D( X5 K9 B
        (setq kdatread(substr kdatread (+ pwk 2))). D' ], G1 k; j) n0 d9 ~3 R# Y
(Setq pwk(vl-string-search " " kdatread))5 o  ^0 X, t/ n- H' `
  (setq lineang (strcase (substr  kdatread 1 pwk)));起点
+ ]& u/ K4 l9 R  O (setq linep1 (polar circen (angtof lineang)  Rcir));起点
- K! S$ a+ w8 l/ J/ [        ) v" a/ {2 o' Z/ r+ P3 }5 e
  (setq kdatread(substr kdatread (+ pwk 2)))
0 `- }1 m2 ^+ g0 ]+ o& w(Setq pwk(vl-string-search " " kdatread))
+ s/ \# g' q" O; @  (setq lineang2 (strcase (substr  kdatread 1 pwk)));端点
/ u1 @( t* @# E$ q(setq linep2 (polar circen (angtof lineang2)  Rcir));端点0 \" _, r5 j( l% U7 r
(setvar "clayer" cirlayer)- A7 w9 q/ X: F
(vla-Addline mspace (vlax-3d-point linep1)(vlax-3d-point linep2));画线               
+ m& Z$ c: ]5 ^) K        ));(if (= comma "LINE")(progn
0 a0 E3 V, V* C$ M8 M4 i5 h" h$ e3 X; }; l" C) V4 o# S
  (if (= comma "HATCH")(progn
0 H3 ^: }! V; h, N) }+ }% p3 M  g* o0 u9 k; N% J
                         . G" m) s9 i& h* s
        ));(if (= comma "HATCH")(progn
# E. k( U9 z4 C( R$ J- w! E
. L% q3 k; H* i" c    (if (= comma "CIRCLE")(progn
  B$ I( ~7 O5 F) q$ A# _  ?2 u
- j# z# }3 C; Y) M5 o! q                         
" r5 |! _0 {7 i- e/ l        ));(if (= comma "CIRCLE")(progn
5 a" F1 }8 L2 D2 u7 c1 S/ t& v  
$ p+ h1 J( e' G) l  
2 i6 P: d5 Y" G' ]; O5 k  );;;(while (=" "(substr (setq kdatread (read-line kdat)) 1 1))
! p# H! f% T, {7 e. a                             
& F0 {& `5 C; [2 @' j7 w' l                             
2 C: u8 j% J) w' h. f1 H      ));;(if(= kdatread tagmark)(progn
+ U. l- E9 P; Q- P8 p4 Q     );;(if(/=" "(substr kdatread 1 1))
  v; A! ]2 z) R# A   
/ k6 J2 g( S* u+ k3 C" O) ^    );;;(while(setq kdatread (read-line kdat))* ?6 ^  W3 w& I# Z: O
  
7 l% W: B' {" S  (close kdat)7 N! U* s! z9 p) [) y. h
  );end
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表