QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
7天前
查看: 3686|回复: 3
收起左侧

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

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

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

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

x
有没有编程高手帮我编个LISP程序。我做在标注模板图的时候,用英制标注,而加工需要用公制,要是每个都手工改很费时间的。比方说自动标注出的直径为%%C0.125(英寸),我只能手工改成%%c3.175(0.125x25.4)。能不能编个LISP程序自动改成这样?先谢谢啦!
发表于 2008-8-10 19:30:16 | 显示全部楼层 来自: 中国上海
用不到什么程序的,只要在标注样式里设置一下,在标注时就有公英制双尺寸显示了
! N2 B. z7 y" W你这个“C0.125(英寸),”也有错误,一般英制是用分数表示的% q8 v, b  ~5 s5 \
5 v0 z. S1 V% A8 s* H  E# x
[ 本帖最后由 newdhj 于 2008-8-10 19:32 编辑 ]
0810-6.JPG
 楼主| 发表于 2008-8-11 13:07:18 | 显示全部楼层 来自: 中国江苏苏州

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

谢谢newdhj 的答复。
9 U1 I( Z6 Q0 J' }& A肯恩是我没有所清楚,我是在标注模板坐标时出现这个问题。模板的XY坐标标出来后,跟模板就没有关联性了。换句话说,标出来的就是一对文字,不是尺寸了。所以没有办法从设置里面更改。(这个软件是个外挂)。
: X' c- r' J+ ?1 F3 P
, \3 e9 ^8 \' R5 r5 c. H[ 本帖最后由 mouse-net 于 2008-8-11 13:19 编辑 ]
111.JPG

新建 文本文档.txt

86 Bytes, 下载次数: 9

发表于 2010-10-14 16:49:49 | 显示全部楼层 来自: 中国广东深圳
我有一个发给大家学习学习(defun c:inm(): `& b3 q) \2 \+ [( }5 a* N
(setq kkdat(findfile(strcat way"\\dat\\TAGMARK.kdat" )))) e* |" L6 v5 s9 X
(Setq ss@SS(ssget(list(cons -3 (list(list "my_tag"))))))
0 G9 V% {& w. u% n( r(setq ss@len(sslength ss@SS))0 v  n5 @+ i8 D2 v
(setq @k 0)7 x1 f7 Q# I+ Q3 k
(while(< @k ss@len)8 n) c+ g& G" W( X7 i/ f2 _
(xl:GetXData (setq ssn(ssname ss@SS @k)) '("my_tag"))
; }$ ^4 ]8 K% o- I  (setq  my_tag(car(cdr(cdr(car data_i)))))
4 M7 t' _5 u( C: k (if (/= "org"(cdr my_tag ))(progn
5 C8 a6 {3 P+ z* W  (setq my_tag(cdr my_tag))
) ]- p6 O* K; {* w7 t) T  (setq temptag(substr my_tag (+ 2(vl-string-search  " " my_tag))))
8 D( @8 i# V* `0 c# q- w& M  (setq tagmark(substr temptag 1 (vl-string-search  " " temptag)))
! ^( {) q! {0 `; h3 o2 E% K  (setq elss(entget ssn))
) l# G4 g! E( y2 q# _(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn
! Y2 A/ q5 o6 x" x4 [5 g5 v(setq circen(cdr(assoc 10 elss)));;圆心6 F% b  d) n, O2 d
(setq Rcir(cdr(assoc 40 elss)));;半径" J0 E0 v/ t" @; R2 d
(setq cirlayer(cdr(assoc 8 elss)));;图层4 Y( m) p! b0 D1 |- ?$ ~
                                    
! J" s( E7 K2 P4 y5 |  ));;(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn, F+ D& b0 U. L0 P' f0 z: D. e

* W" ^- W3 W) I" O' Q  ( M% F' x' x; w& L! H  v. ^
  (findtag tagmark)3 u* E# N/ E7 ]2 g* }0 U& {1 ~' x
  
% D1 q6 G- R0 x, v, \* c  ));;(if my_tag(progn$ [: C/ {& Z8 \) u2 Y
  (setq @k(+ @k 1)); v2 X" H" e* Y, V6 Y
  );;(while(< @k ss@len)
/ D$ x: Q! P3 l, P1 p
3 {4 \2 `$ B2 d1 x; a2 v& H  (princ)* g2 \* R, Q5 |0 s$ I5 I0 ?6 X5 D" M
  );end/ ~$ a/ J8 p3 R# d7 Z, {

1 B( E9 I/ s4 @
' c7 G( x# X8 J, x1 O% A# j4 N8 C" c3 M; s7 L. L

& z  ^- u( R& O5 ~: O3 n7 Y  b5 u0 v; |' B) G

# z, I) g7 w) [! r8 A; x1 T6 c. u$ c6 X& r. U4 b# n2 J
! R( a, {7 D! Q! @3 T+ z
;;功能  * O; w$ d" p; l5 r+ E. \7 `
;;获取附着在AutoCAD对象上的扩展图元数据  
% H) v2 K* ]; B+ _;;语法  ! f! J/ d* i2 @$ [0 l9 y7 \
;;(ax:GetXData Obj AppID)  # F2 H# x% A! }( r% ~% j
;;参数  % V8 I1 @7 L3 W* c
;;obj:图元名6 |$ f2 ~5 V  y! y5 y/ t) ^5 @9 G
;;appid:AutoLISP函数REGAPP注册的应用名,如为("*")则返回全部XDATA,如为("AAA" "ACAD")则返回两个程序的数据* j  @! M& T2 G8 {6 q; f
;;返回值  
7 q/ Q% [9 K( p; X% c. D9 W;;返回附着到对象上的扩展图元数据列表  
' V; @3 ~: c# ^2 F1 Y- q8 [;;如:  (("south" (1000 . "204201") (1040 . 1.0))
, t( I1 B# U% Y6 c' G6 w2 y;;       ("AAAA" (1041 . 562.307)  (1000 . "aaaaa"))9 ?6 S- Q* l9 C
;;       ("BBBB" (1000 . "bbbbbbb"))
! S) K' F3 [9 d! T;;       ("CCCC" (1041 . 752.569))
& Q& x) `2 L- ~, B5 C;;      )6 `1 i- [+ `! a, V( Z' l. _$ v* M
;;样例  
" B9 o' b" W+ L' O' G- ~2 Y0 H;;(xl:GetXData myVlaObj '("*")) 或 (xl:GetXData myVlaObj '("AAA" "ACAD" "my_tag"))
8 k+ h" r4 X( {( X8 y0 m(defun xl:GetXData
9 Z9 A6 ^% e  i  B6 S" v       (Obj AppID / data n i  k i_k data_k temp1 temp2)
( _) \) _; x1 w  (setq data_i nil)! ^: A; t4 B. H/ h
  (setq data (cdr (assoc -3 (entget obj appid)))& e; D1 C. ]8 U: Z8 J- }
n    (length data)9 g  n% v3 G% N. {
i    0/ ^& o; v% `. C
  )
0 I+ W1 _$ I5 Q8 I, x6 O  (repeat n
2 h8 Z6 ]  b; \7 Q! P: Y" W    (setq temp1  (nth i data)
8 F( J6 _$ e% g   data_k (list (car temp1))
+ Y% M" _' m; A   temp1  (cdr temp1)
2 h0 G0 \' a; @& n+ a/ K4 G4 i   k  (length temp1)
3 ]7 u9 |9 c% V% s   i_k  0
6 `# ^* l# z2 a$ `. A    )
. W2 \+ a/ f5 ~8 r    (repeat k8 l- J: r/ F, R. u
      (setq temp2 (nth i_k temp1)
. i2 m) C1 K) V; B0 T) E  F     i_k   (1+ i_k)
8 A# i. {* I% H: T/ ~% ]* b3 ~      )
4 X, ?( |' `; x6 i1 P( @      (if (and (not (equal temp2 '(1002 . "{")))" r" T8 ~0 e: K3 N" b& K  w2 x" ^& r/ h
        (not (equal temp2 '(1002 . "}")))
4 h: ~7 Z0 G2 w) H. Y& o   )1 p+ T; Z( D7 ]+ z2 [
(setq data_k (append data_k (list temp2)))
! B0 v- o+ q( U- e      )( |2 r5 T5 D  [9 N
    )  @) f8 g8 {( \- h9 G* \7 b, h
    (setq data_i (append data_i (list data_k))5 C1 ?( q1 [7 X6 P3 V1 H/ \
   i  (1+ i)
1 h& z& o% P: `    )/ I, h% W$ C2 S5 x" E/ r: R
  ). H! F1 f/ D2 k5 K& x
  data_i
6 v0 E0 d# y7 L* a)5 W" q4 \) u7 H/ Q) m/ @

" F" e/ F- y/ @* V  u/ S% p0 ~! M8 G% ~

/ r. V& ]) T' s4 \3 d) U5 s
9 Z+ j. I) d9 ]7 B* T3 E(defun findtag (tagmark)
2 o( N' P8 o3 C2 T  (setq kdat(open kkdat "r"))+ C, X" v# P" ?& E  f
(while(setq kdatread (read-line kdat))" G; b. z3 W, l) K. H7 U
   (if(/=" "(substr kdatread 1 1))6 i4 c$ O7 d8 U+ h2 P, h
    (if(= kdatread tagmark)(progn/ b+ I; v. V: C$ [
(setq kai nil)                             " j7 i9 v) r1 |, Z: i3 X
(while (and (/= kai 1)(setq kdatread (read-line kdat))) ;运行下面的$ g& d& V% f- h" w  r+ ~
   (if(/=" "(substr  kdatread 1 1))(setq kai 1))& a3 o% s7 d9 C+ l& s5 K
  (setq kdatread(substr kdatread 2 ))7 G  [& F; n* R- k. @& G+ G1 o
  (Setq pwk(vl-string-search " " kdatread))( S$ q2 D1 ~7 Q5 B" V* K
  (setq comma (strcase (substr  kdatread 1 pwk)));变大写/ j5 X; r# e0 b
  (if (= comma "TEST")(progn3 `* L- Y* Y2 l
(setq kdatread(substr kdatread (+ pwk 2)))3 a" r6 G8 Z; A3 T. F$ v
(Setq pwk(vl-string-search " " kdatread))
( W4 d) R8 c3 ?9 ~1 @" m3 `. C  (setq textin (strcase (substr  kdatread 1 pwk)));文字插入点
6 F. s3 ~$ \# D4 a( S) }- f(if (= textin "CEN")(setq textin  circen));如果为CEN为圆心8 b3 l0 I- T9 Z. ]% h7 w) Q
  (setq kdatread(substr kdatread (+ pwk 2)))
  [5 X# Q, ^3 _1 m$ h. G(Setq pwk(vl-string-search " " kdatread))
* v! c7 k" T# h9 T; U( x0 e/ `  (setq textt (strcase (substr  kdatread 1 pwk)));文字5 L7 e' Z/ p( O+ O5 x
(setvar "clayer" cirlayer)- a8 T8 K0 `; ?6 c% t) ?
(vla-Addtext mspace textt(vlax-3d-point textin)2.5);写文字
$ K0 y+ J. j; G        ));(if (= comma "TEST")(progn% E6 m7 L( H) E: S. n9 M, f
( m) U$ r" b( C+ W. E6 N% K( }3 |; y
  (if (= comma "LINE")(progn' @; Q& l8 b+ R7 l
        (setq kdatread(substr kdatread (+ pwk 2)))
. F8 E5 ^5 y; H4 D# t(Setq pwk(vl-string-search " " kdatread))5 e3 n5 y$ O" Z4 }  M. H% ~
  (setq lineang (strcase (substr  kdatread 1 pwk)));起点- G# f0 k# D8 j7 J0 [
(setq linep1 (polar circen (angtof lineang)  Rcir));起点( \0 A, g* D0 ?! G) _9 [) Y
        9 D! M% |2 k: {) Y" V
  (setq kdatread(substr kdatread (+ pwk 2)))! ^  c# z, d  _1 j; T$ X
(Setq pwk(vl-string-search " " kdatread))9 P9 x5 x7 e6 l5 L9 c( c
  (setq lineang2 (strcase (substr  kdatread 1 pwk)));端点' y  g. n+ p% E2 A
(setq linep2 (polar circen (angtof lineang2)  Rcir));端点
% C6 [; n1 r  C; w (setvar "clayer" cirlayer)
9 r' z# `( E) \% l4 P# t(vla-Addline mspace (vlax-3d-point linep1)(vlax-3d-point linep2));画线               
4 H+ Q; k. [0 z3 \  \- Y" [, V        ));(if (= comma "LINE")(progn
% v# ~! i1 l% Z% H5 L7 {6 ^
9 e5 i8 k% R! Q; w  (if (= comma "HATCH")(progn
  M1 K! C& _  x) F! G0 G# e% p' `0 z4 L$ Z0 q) E0 Z
                         
( `9 T# B( M+ d: g, A* F& }        ));(if (= comma "HATCH")(progn
* U7 b" q3 ?; L" u) r
* K$ |) r' K- B0 V* J# U    (if (= comma "CIRCLE")(progn
# z) V! d2 Q+ P5 K9 c% j5 w0 x$ Q" _* J# R% `: M' I& }
                         ( ]" Y8 F1 u4 B! s4 V6 G% |% I
        ));(if (= comma "CIRCLE")(progn
9 |* Z6 P& j  ~' |( Y0 L9 i  
1 M  P0 y% [. E' U- c  
. W# b- e/ {5 G  );;;(while (=" "(substr (setq kdatread (read-line kdat)) 1 1))
; ^' G* O1 q7 I                             
$ x3 v; c$ I/ |2 [" k                             
$ D/ S: u6 T) a* _! Q) K+ M0 U      ));;(if(= kdatread tagmark)(progn$ O6 }9 v4 R0 ?/ A
     );;(if(/=" "(substr kdatread 1 1))
3 b2 E9 |6 X$ T- a$ I   
, P! c3 w+ }. m3 G    );;;(while(setq kdatread (read-line kdat)). x  k$ o6 U* A9 |0 T, u* ?
  0 d' K5 [* s& j) L: Y5 A3 e" ?
  (close kdat)( k4 f. M* \( ^) r1 p' p$ d) O5 Z" r
  );end
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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