QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有没有编程高手帮我编个LISP程序。我做在标注模板图的时候,用英制标注,而加工需要用公制,要是每个都手工改很费时间的。比方说自动标注出的直径为%%C0.125(英寸),我只能手工改成%%c3.175(0.125x25.4)。能不能编个LISP程序自动改成这样?先谢谢啦!
发表于 2008-8-10 19:30:16 | 显示全部楼层 来自: 中国上海
用不到什么程序的,只要在标注样式里设置一下,在标注时就有公英制双尺寸显示了+ Y7 k; h  ?/ i, u, r8 q  J
你这个“C0.125(英寸),”也有错误,一般英制是用分数表示的
; u9 l0 l* F4 b1 ^1 g
, v3 @5 D% ~. @& a[ 本帖最后由 newdhj 于 2008-8-10 19:32 编辑 ]
0810-6.JPG
 楼主| 发表于 2008-8-11 13:07:18 | 显示全部楼层 来自: 中国江苏苏州

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

谢谢newdhj 的答复。
" Z" e* r3 `& Q6 W/ u肯恩是我没有所清楚,我是在标注模板坐标时出现这个问题。模板的XY坐标标出来后,跟模板就没有关联性了。换句话说,标出来的就是一对文字,不是尺寸了。所以没有办法从设置里面更改。(这个软件是个外挂)。; r6 e: S# C. h: w( A; A
$ e) O. m) S9 ?
[ 本帖最后由 mouse-net 于 2008-8-11 13:19 编辑 ]
111.JPG

新建 文本文档.txt

86 Bytes, 下载次数: 9

发表于 2010-10-14 16:49:49 | 显示全部楼层 来自: 中国广东深圳
我有一个发给大家学习学习(defun c:inm(), `6 s# [% M3 G6 U% o
(setq kkdat(findfile(strcat way"\\dat\\TAGMARK.kdat" )))+ `0 M7 ?) y7 X* Q$ ]/ Z
(Setq ss@SS(ssget(list(cons -3 (list(list "my_tag"))))))  R, ]3 J) ?( o& k
(setq ss@len(sslength ss@SS))
  T5 K# I  g' R: |/ u(setq @k 0)' L* P7 `- P$ _1 ~2 b- t
(while(< @k ss@len)3 n8 S) F0 u  m* x+ _
(xl:GetXData (setq ssn(ssname ss@SS @k)) '("my_tag"))$ v6 q* R) K4 d6 k  q, T% M
  (setq  my_tag(car(cdr(cdr(car data_i)))))
" y( L& b7 S% V( s1 I (if (/= "org"(cdr my_tag ))(progn3 A/ C5 n  X1 k% }' d
  (setq my_tag(cdr my_tag))$ C8 r3 ?8 p. S4 T
  (setq temptag(substr my_tag (+ 2(vl-string-search  " " my_tag))))
3 S6 A4 \: s/ U( I) [  (setq tagmark(substr temptag 1 (vl-string-search  " " temptag)))
( T4 Z, b2 o. M( L7 q4 c  (setq elss(entget ssn))- U4 Q3 M" c$ Z
(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn' l2 B; O( b& a# i/ y9 f
(setq circen(cdr(assoc 10 elss)));;圆心
8 H6 I, p$ K1 [(setq Rcir(cdr(assoc 40 elss)));;半径9 t! _# m7 o( x2 ^+ n+ ?8 o
(setq cirlayer(cdr(assoc 8 elss)));;图层) X: y, J9 e) j6 E% V/ q
                                    8 p* O1 R+ y5 Y' S7 N
  ));;(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn) l. D! [4 L! B; y1 v1 S
5 F$ N0 B- W' O+ _4 F
  
! w/ P, P& r2 w1 k9 C" t  (findtag tagmark), i- Q+ p$ K( s- v# w3 X% J- t
  
2 x( L5 |) u$ G+ a  ));;(if my_tag(progn/ d- A6 w8 i- m6 L/ P# e7 Z$ t
  (setq @k(+ @k 1))( k' e0 Z" Z  x% h
  );;(while(< @k ss@len). e0 v" ~* o5 S

; A# H! ?- I4 o  (princ)! ?2 y' Y) B8 l& l
  );end" F3 _4 C7 ?* J5 k

3 k( b( h. S9 `( |" b3 t  l( O

; Z0 J4 m& @1 a, r
2 z) q8 F6 W- X6 a+ ]: ^9 }  z! K  L1 ^% |# O
, [9 x2 q/ S& r& [

; |9 j/ l9 f* |$ |' K8 o' e4 L; ]* S) Y
- O9 V, _" e  t  {6 X- O2 z;;功能  % |, A% x3 g7 k$ Z# y
;;获取附着在AutoCAD对象上的扩展图元数据  $ ?. o8 V# E+ L* i% g9 }4 ~* U
;;语法  * {7 y: b3 E# V2 k$ x$ a
;;(ax:GetXData Obj AppID)  1 a9 G6 P4 c6 A: U- ~6 ?
;;参数  
( W+ K# Q1 H- I' _$ M2 Z. S% n;;obj:图元名, e8 {# e9 R; X8 a7 I
;;appid:AutoLISP函数REGAPP注册的应用名,如为("*")则返回全部XDATA,如为("AAA" "ACAD")则返回两个程序的数据5 V' N  K( {; u- l1 }
;;返回值  7 [# K! T5 c# t0 W
;;返回附着到对象上的扩展图元数据列表  
9 L' U( C- ?: a;;如:  (("south" (1000 . "204201") (1040 . 1.0))
6 m. r6 X' D5 d7 Y, X;;       ("AAAA" (1041 . 562.307)  (1000 . "aaaaa"))5 b8 h" {; y& g! N
;;       ("BBBB" (1000 . "bbbbbbb"))0 U; G) E5 X% F: w* Y
;;       ("CCCC" (1041 . 752.569))
: J. W1 ]: J+ r& Q2 t;;      )% X* w/ T' y0 g$ |
;;样例  
- Q; @7 l! _8 D# T;;(xl:GetXData myVlaObj '("*")) 或 (xl:GetXData myVlaObj '("AAA" "ACAD" "my_tag"))
+ n, J0 E2 Q( R0 ^# ?$ N(defun xl:GetXData1 ^. s$ \7 ~% c. f% U9 j9 C
       (Obj AppID / data n i  k i_k data_k temp1 temp2)
1 S, s* E7 \2 I- e1 |  (setq data_i nil). {6 S/ c; W1 W+ q  l
  (setq data (cdr (assoc -3 (entget obj appid)))4 l  o9 \* p1 i; {# X
n    (length data)$ l" b8 y$ N, Y/ L
i    0
' P" _8 k* k8 u$ {2 J% U( Q3 {  )
0 H$ v/ r. y/ H6 @( r5 ?' A, k7 `# N  (repeat n/ o. P! J4 C1 P* E5 i7 S
    (setq temp1  (nth i data)" Z' b. R; x0 G2 _! @
   data_k (list (car temp1))/ _! y/ U. G' \9 a/ f# {* r( ]$ i
   temp1  (cdr temp1)+ p# e$ F& j( v) h
   k  (length temp1)* k1 R% n) P" c' j8 H! x& Y* h7 q6 L
   i_k  0( {7 P! o+ D) ~% E
    )
' Q7 \8 ~! K/ g' U7 Y    (repeat k5 t3 s+ A: r$ I
      (setq temp2 (nth i_k temp1)
+ c) z9 G! z. o0 D% X7 H     i_k   (1+ i_k): d! c; P! r" W- x
      )6 n/ Z- G3 v5 a  g' f- m: q
      (if (and (not (equal temp2 '(1002 . "{")))8 X- K- i& |( e7 W+ U
        (not (equal temp2 '(1002 . "}"))), M6 w) L* @. g( i! Y, W" l8 O
   ): L* ?" h! p* d; D
(setq data_k (append data_k (list temp2)))! ]* _6 n/ V  s
      )* r! O# f( H* A4 s
    )
" r# G+ l2 W0 s# x) e    (setq data_i (append data_i (list data_k))
* U9 b* m3 y2 g  o6 _2 n: u9 J  E   i  (1+ i)
! h$ y: y2 _5 v" D' S    )$ H* N5 R6 X8 h- [! U5 W4 p5 ]
  )+ n* L" b+ T+ M. k7 Q
  data_i: x7 H- ~) g/ d4 r6 l( M
)
- B, D7 H4 g8 Y8 Y& P4 C$ y% B6 D
% @  z6 [' ~% u7 a& ?* h8 |- Z7 C0 M( @0 t6 o: ]- u) h1 U2 ^
# Z3 j" i7 l7 L8 |7 ~
# e, {, }( G- [) W& `6 Y
(defun findtag (tagmark)& K3 d& {- h* t0 V1 S
  (setq kdat(open kkdat "r"))
; r2 g, i8 A' b' @! L* p' | (while(setq kdatread (read-line kdat))
! B0 o8 f7 ^, t/ L6 x7 I* w   (if(/=" "(substr kdatread 1 1))  h3 d: S3 m; k
    (if(= kdatread tagmark)(progn
3 ^! z( J, |; d# h! j(setq kai nil)                             * q% O+ h# z3 {: c# f. c/ |* J) \% _
(while (and (/= kai 1)(setq kdatread (read-line kdat))) ;运行下面的
9 Z- X! J9 d. b0 P) f$ Z   (if(/=" "(substr  kdatread 1 1))(setq kai 1))
' D3 g) P4 u! d, R2 j5 U1 }  (setq kdatread(substr kdatread 2 ))
) P1 r( N! X. {* O& n& I" J  (Setq pwk(vl-string-search " " kdatread))
- O- q2 Q6 c$ G$ S+ j  (setq comma (strcase (substr  kdatread 1 pwk)));变大写$ Q$ x, A5 l* P8 L2 `+ g
  (if (= comma "TEST")(progn* d& v- @6 i" ?, M' D
(setq kdatread(substr kdatread (+ pwk 2)))
6 R, }7 m+ f/ u: O+ x6 w(Setq pwk(vl-string-search " " kdatread)). `0 A, V! G3 S( I2 ~$ L. R
  (setq textin (strcase (substr  kdatread 1 pwk)));文字插入点2 X& B; X$ h) |$ I- @' ?
(if (= textin "CEN")(setq textin  circen));如果为CEN为圆心& A$ C: E0 O! r. ~3 k3 V0 E% H
  (setq kdatread(substr kdatread (+ pwk 2)))
7 x) Y0 o: l$ Q7 |(Setq pwk(vl-string-search " " kdatread)): g- I# x0 n) Y! ^0 |0 `
  (setq textt (strcase (substr  kdatread 1 pwk)));文字' G+ F/ }- K3 U3 o+ L- Y9 E
(setvar "clayer" cirlayer)
9 c; N0 Q6 _/ @5 J  K, `(vla-Addtext mspace textt(vlax-3d-point textin)2.5);写文字( v1 O5 o' \! B/ V% _& ]( A
        ));(if (= comma "TEST")(progn
, Q" }7 V7 t& `' q9 ^1 [; g
( q: r1 H7 E  m  (if (= comma "LINE")(progn
/ i/ y6 b, E& ]3 H: U1 p        (setq kdatread(substr kdatread (+ pwk 2)))
6 q. q, G% A! _: ^2 }2 X5 r9 E( d(Setq pwk(vl-string-search " " kdatread))2 T9 z' z, }7 t9 B: m
  (setq lineang (strcase (substr  kdatread 1 pwk)));起点
5 m9 r  n8 h4 D" ]' [ (setq linep1 (polar circen (angtof lineang)  Rcir));起点
0 T: n: f6 T' A# X3 K       
$ N9 z6 _+ n. B4 J, G* Y+ h  (setq kdatread(substr kdatread (+ pwk 2)))8 c- j: I% \4 O& o0 q
(Setq pwk(vl-string-search " " kdatread))
/ c- a/ D2 I+ Q) s4 G; {  (setq lineang2 (strcase (substr  kdatread 1 pwk)));端点
/ u8 i8 j1 y  D6 X4 {, Y8 e8 ?  y% \(setq linep2 (polar circen (angtof lineang2)  Rcir));端点
; w6 D! P  {  b7 [) G4 o- ]  \- ] (setvar "clayer" cirlayer)' }; S. q, D* q6 f
(vla-Addline mspace (vlax-3d-point linep1)(vlax-3d-point linep2));画线               
7 |( F* t7 T5 P" y. y. y( b        ));(if (= comma "LINE")(progn" x. d/ b- t! k
5 c+ R$ y$ W+ c5 a3 N! u+ v* ^
  (if (= comma "HATCH")(progn
, @5 \5 ^7 u1 p+ {! s* l% `! @
. E$ n9 z' l; {" W                         9 o7 S7 _8 ?4 G" j9 ^* c
        ));(if (= comma "HATCH")(progn  I; {# w' S" P( @9 i: p
( E( n9 K( Y5 m
    (if (= comma "CIRCLE")(progn
; e' u" b+ C2 s& f4 @
# S  S, |. i, ~                         
" E- S1 W6 {* C) t1 i        ));(if (= comma "CIRCLE")(progn
" c, E6 t5 _, f; s9 x( s; I, r  
0 G. c( v) Z1 F9 v, S  
( Z$ k) s% a- C6 X  );;;(while (=" "(substr (setq kdatread (read-line kdat)) 1 1))+ ?6 Z  N0 p4 B& [7 Z
                             
/ S9 ~6 {2 q: H" V, F3 I                             4 N) @& y* E' Q* X
      ));;(if(= kdatread tagmark)(progn0 G% }; A% o! B2 C; |2 _) S# v
     );;(if(/=" "(substr kdatread 1 1)): V% I6 k, u1 @. Q/ L1 o
    * g; @+ |- O3 w% B: B
    );;;(while(setq kdatread (read-line kdat))# h& v( }5 v, P" |4 k! Y
  6 f# g. u4 M0 I0 d4 e, Z
  (close kdat)
+ P- E# \4 i7 Z  );end
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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