QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
6天前
查看: 3685|回复: 3
收起左侧

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

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

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

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

x
有没有编程高手帮我编个LISP程序。我做在标注模板图的时候,用英制标注,而加工需要用公制,要是每个都手工改很费时间的。比方说自动标注出的直径为%%C0.125(英寸),我只能手工改成%%c3.175(0.125x25.4)。能不能编个LISP程序自动改成这样?先谢谢啦!
发表于 2008-8-10 19:30:16 | 显示全部楼层 来自: 中国上海
用不到什么程序的,只要在标注样式里设置一下,在标注时就有公英制双尺寸显示了$ R( y4 V) V+ y' q& [% _2 _9 o) P
你这个“C0.125(英寸),”也有错误,一般英制是用分数表示的, n8 g. _7 m( I. \

9 C- O# J% S7 q[ 本帖最后由 newdhj 于 2008-8-10 19:32 编辑 ]
0810-6.JPG
 楼主| 发表于 2008-8-11 13:07:18 | 显示全部楼层 来自: 中国江苏苏州

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

谢谢newdhj 的答复。1 p, D8 W4 z( P! @+ Q
肯恩是我没有所清楚,我是在标注模板坐标时出现这个问题。模板的XY坐标标出来后,跟模板就没有关联性了。换句话说,标出来的就是一对文字,不是尺寸了。所以没有办法从设置里面更改。(这个软件是个外挂)。( N+ a3 y8 J% C& Z

0 R' m/ S% P8 z, W% A- n; a' _! M[ 本帖最后由 mouse-net 于 2008-8-11 13:19 编辑 ]
111.JPG

新建 文本文档.txt

86 Bytes, 下载次数: 9

发表于 2010-10-14 16:49:49 | 显示全部楼层 来自: 中国广东深圳
我有一个发给大家学习学习(defun c:inm()
  i1 z9 @1 _' d3 K  Q- G2 [$ }: m(setq kkdat(findfile(strcat way"\\dat\\TAGMARK.kdat" )))  L6 Q* s& i8 T- W
(Setq ss@SS(ssget(list(cons -3 (list(list "my_tag"))))))
3 ~+ _# J8 h5 @7 l, M9 _(setq ss@len(sslength ss@SS))
- E) o' o) W/ ~0 \, W- s& Z(setq @k 0)8 E: @- x6 c, J( {) @
(while(< @k ss@len)
1 S, P- y" b6 f/ P3 W7 S: j$ O  x! m(xl:GetXData (setq ssn(ssname ss@SS @k)) '("my_tag"))
( g( P& H- u  T3 |  (setq  my_tag(car(cdr(cdr(car data_i)))))
8 E3 }# L+ F4 o! p (if (/= "org"(cdr my_tag ))(progn  q  H2 L4 h! }# A/ }5 h  ?  A' d* ?
  (setq my_tag(cdr my_tag))
* ^2 z$ o8 I5 E# e7 J# D  (setq temptag(substr my_tag (+ 2(vl-string-search  " " my_tag))))
' t5 S5 e- m' U6 O. t, Z7 x% y3 S; x  (setq tagmark(substr temptag 1 (vl-string-search  " " temptag)))
7 i* B- V  v% e1 }1 T  (setq elss(entget ssn))* B" k8 R: W9 A( \# Z
(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn
% N6 |" f  B$ _4 [( V6 r(setq circen(cdr(assoc 10 elss)));;圆心
+ |1 y6 g8 ~" r" s(setq Rcir(cdr(assoc 40 elss)));;半径
& a7 w( L; a% Y/ X(setq cirlayer(cdr(assoc 8 elss)));;图层
1 g( h5 N4 M0 d                                    % Y2 P9 s  v& P8 J& k$ `6 a
  ));;(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn+ {# t% G2 {6 g# b' H( }2 A

& E6 `  W0 I5 M) J4 y  2 |; g, e% V; o8 d7 W5 d
  (findtag tagmark)
3 _, o0 A. i- u" |- B3 e2 X7 D  + c, I/ s* V4 {% |: i1 p
  ));;(if my_tag(progn
% F! i' `0 U, S2 G6 d' t& B  (setq @k(+ @k 1))
- E) q8 }! n$ b/ {8 {  b  );;(while(< @k ss@len)% z/ A5 a# }  [5 d1 F0 j  q

- }7 X- h6 l6 U. K  (princ)
. s# C; f$ h6 O1 T  );end7 U& X: V+ @! d# F( b2 \
6 y1 f' u* I; h) s9 q: u0 ]

4 ?, K" w0 V0 E7 e
: H% u& m1 f* l2 b  K
2 u! `4 d! @6 ?  q$ g5 a2 B/ p9 F, Y0 n9 n- l9 \  U

1 b, P4 S1 c7 c$ e/ y/ Y, B6 R# f2 t4 x  Z7 I7 s
8 S; ^, B$ t+ z
;;功能  $ K8 Q1 B) P6 x  w( U
;;获取附着在AutoCAD对象上的扩展图元数据  ! u" H7 c( [' _' c. N' u. E
;;语法  ' }/ Q$ k3 ]2 F- b
;;(ax:GetXData Obj AppID)  0 j7 L6 A! J$ m1 U* g5 N
;;参数  5 o3 C" y: v1 x! U
;;obj:图元名
* T9 e5 s! f6 m" k- ~7 f;;appid:AutoLISP函数REGAPP注册的应用名,如为("*")则返回全部XDATA,如为("AAA" "ACAD")则返回两个程序的数据
4 t$ i  [6 Y* u! U% F;;返回值    H! \7 C7 g: l" @
;;返回附着到对象上的扩展图元数据列表  
5 g5 t4 t- ~1 t2 ^;;如:  (("south" (1000 . "204201") (1040 . 1.0))& ^$ s4 S. _+ b4 a- I
;;       ("AAAA" (1041 . 562.307)  (1000 . "aaaaa"))- S' u! C8 T. `
;;       ("BBBB" (1000 . "bbbbbbb")); ^2 t" g( [3 h1 e& s
;;       ("CCCC" (1041 . 752.569))
2 J$ b1 {  @* H;;      )
& _8 g7 @- ?5 r$ d4 n, [$ |;;样例  / L" @4 v7 p2 z
;;(xl:GetXData myVlaObj '("*")) 或 (xl:GetXData myVlaObj '("AAA" "ACAD" "my_tag"))
; e6 {% E% m6 j(defun xl:GetXData
  O$ m4 _6 |+ {$ F       (Obj AppID / data n i  k i_k data_k temp1 temp2)3 Q  J$ y* X& c3 q" C! C
  (setq data_i nil)
: t/ x% X# ^4 e/ V* s+ L  (setq data (cdr (assoc -3 (entget obj appid)))+ w* s; H& P* L7 u
n    (length data)! {1 `1 t! R# ~, T
i    0$ b3 L, `4 @+ n7 ^4 a
  )
% d5 a6 ?5 S7 ?5 D+ R  (repeat n
* t  p' T* ~: j" o  I( z8 [    (setq temp1  (nth i data)
/ C% u+ P: B& [+ }   data_k (list (car temp1))7 g2 y3 _3 @* Q6 Y/ T
   temp1  (cdr temp1)
, [4 [! e  W. n; _6 r0 `   k  (length temp1)
3 |+ r, |- x* y/ n: l) ]   i_k  09 `4 O5 ]- ^. ~' N5 d- \' v
    )5 Q: }1 p! z' {6 ?! I2 g
    (repeat k
. |0 \' M  i) d& R4 ]0 n      (setq temp2 (nth i_k temp1)& H, r) B/ v; M! h+ N" n2 f
     i_k   (1+ i_k)4 m+ O' Z7 W: j4 L5 E5 o
      )
3 @  T  k( f' Z      (if (and (not (equal temp2 '(1002 . "{")))
6 r$ r2 ~, l. h( g, w- [        (not (equal temp2 '(1002 . "}")))
) A# {1 C2 e5 E$ @8 ?1 o/ _. b   )0 `8 U) C3 S6 A3 t' {" L
(setq data_k (append data_k (list temp2)))
* x1 s5 r7 ?$ a. q. C      )$ y& S  S- p$ o' ]* ]; T
    )' H; [! F4 t2 A! |3 ]
    (setq data_i (append data_i (list data_k))
9 a  ^4 E, P% W, c% `   i  (1+ i)
: i2 F! x2 ^, G% d3 a    )
' h) }% m: d0 E0 t+ U9 t$ {  )
- E; ]$ b' v* u, o5 {' x  data_i7 _) `7 V- u$ S* w
)4 \( h( w8 ?3 P( K( `0 S/ |6 a
: k, [" w+ r, k8 w
8 T- w# m9 L2 r& C' z! h

. \0 P6 T3 M1 f8 q" p' S; k2 W/ K+ C0 W  i
(defun findtag (tagmark)3 _& X  I1 c  L. L
  (setq kdat(open kkdat "r"))# {, u( m; M: J7 [# ]
(while(setq kdatread (read-line kdat))
( S( q0 S0 V0 F( Z5 S, I0 S1 Y   (if(/=" "(substr kdatread 1 1))+ B3 o: v7 F& r9 ^
    (if(= kdatread tagmark)(progn
, K- R1 n9 o$ w4 V9 l(setq kai nil)                             
; t6 B( P. Z; I6 ~0 M(while (and (/= kai 1)(setq kdatread (read-line kdat))) ;运行下面的0 k- ~: ?# Z/ P, M
   (if(/=" "(substr  kdatread 1 1))(setq kai 1))7 E1 a+ P- q  A  i/ D
  (setq kdatread(substr kdatread 2 ))
: ^$ Z3 z$ V9 A7 w/ Z' n6 h  (Setq pwk(vl-string-search " " kdatread))+ K+ C  Y6 p/ g  v; r+ Z
  (setq comma (strcase (substr  kdatread 1 pwk)));变大写
6 K+ P) o% ~9 c9 S! ^% h  (if (= comma "TEST")(progn1 p5 }: s4 j, X; s* [  ~: }
(setq kdatread(substr kdatread (+ pwk 2)))
$ @* S/ |# b( {* J(Setq pwk(vl-string-search " " kdatread))' M  A# A. K' L; C1 X0 P. x
  (setq textin (strcase (substr  kdatread 1 pwk)));文字插入点
, N% S, T4 ~' P( Y(if (= textin "CEN")(setq textin  circen));如果为CEN为圆心
4 _2 z' a3 w+ [  (setq kdatread(substr kdatread (+ pwk 2)))' _0 h4 @: O: G! z7 Y# Z, q
(Setq pwk(vl-string-search " " kdatread))
6 x* j5 ?( u% @, v2 u; R+ S  (setq textt (strcase (substr  kdatread 1 pwk)));文字8 h: R! n3 t) y' ]* I5 i
(setvar "clayer" cirlayer)( X! o- k( G6 g; H2 C
(vla-Addtext mspace textt(vlax-3d-point textin)2.5);写文字2 [$ v+ w, Q7 N5 U
        ));(if (= comma "TEST")(progn
$ H% h% ]2 l) F( }, }+ y3 x# U+ S3 {4 ]. c& d$ [8 v
  (if (= comma "LINE")(progn
/ o, P  y5 w" P        (setq kdatread(substr kdatread (+ pwk 2)))
  T6 ^$ o" B8 j* q6 m; F" r3 o(Setq pwk(vl-string-search " " kdatread))2 |) S3 r! o6 `& A0 Y
  (setq lineang (strcase (substr  kdatread 1 pwk)));起点. Y9 J4 b4 g4 p( [9 R9 D" j
(setq linep1 (polar circen (angtof lineang)  Rcir));起点) G3 u/ V& O" W7 x. w2 l- i' }% u
        3 N/ G# s" U! g/ X' A) |9 q
  (setq kdatread(substr kdatread (+ pwk 2)))
% z9 @! T* ?8 z6 u1 u% z1 |(Setq pwk(vl-string-search " " kdatread))
1 C: I7 z* o) f. m7 _. ^  q; L# e  (setq lineang2 (strcase (substr  kdatread 1 pwk)));端点* j) Q( }# W: ~/ Q" E% L$ W
(setq linep2 (polar circen (angtof lineang2)  Rcir));端点& H5 I9 T) L$ M' S
(setvar "clayer" cirlayer)# [, e2 t% X. v% {
(vla-Addline mspace (vlax-3d-point linep1)(vlax-3d-point linep2));画线                + W, ]8 ~9 y+ Z) R! U) j, b
        ));(if (= comma "LINE")(progn
, X# l/ s: \6 u$ A' m
* i* @6 V0 ]0 E" N  c  (if (= comma "HATCH")(progn
, M! D2 t; {2 b" \& {! m! ~/ d5 |. a  v, N  ^. _
                         " S* w' K2 w8 Q/ o
        ));(if (= comma "HATCH")(progn
. b# B  z. `# D9 A) i5 O/ F  F9 Z1 N' S0 g2 y! A2 Y
    (if (= comma "CIRCLE")(progn
8 X$ I6 E6 o. _5 I  }
) D' b* I& F) Z/ o; |4 p$ E. C5 ^                         0 h0 C6 d8 L% k+ G* S. N4 C  u
        ));(if (= comma "CIRCLE")(progn' @- }. E1 ]# ?. y- _0 U
  
, m# @  w* a7 g6 X  
( S0 j% E" ]" ~9 p  [$ ~4 v! P3 S  );;;(while (=" "(substr (setq kdatread (read-line kdat)) 1 1)). y) X# v7 `/ Q4 S
                             
( Z6 I; M- N! e% h$ y                             
8 i# e- J4 w- [$ O1 D; D9 q  g      ));;(if(= kdatread tagmark)(progn/ u. |% f8 Q% x$ D# c+ E+ d& ^3 [2 A! ]
     );;(if(/=" "(substr kdatread 1 1))
) x6 |# g6 ?% F! M1 x  Y6 U    2 f0 n8 s. I$ w2 S1 }: u2 F
    );;;(while(setq kdatread (read-line kdat))
) _( C/ r! ]* u, k. K; M, @" h  
1 m1 R% ~6 b3 N& b. o6 p  (close kdat)
9 Q5 ]$ X: b1 s6 J; Q" h  );end
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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