QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
全站
goto3d 说: 在线网校新上线表哥同事(Mastercam2022)+虞为民版大(inventor2022)的最新课程,来围观吧!
2021-06-26
查看: 3476|回复: 3
收起左侧

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

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

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

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

x
有没有编程高手帮我编个LISP程序。我做在标注模板图的时候,用英制标注,而加工需要用公制,要是每个都手工改很费时间的。比方说自动标注出的直径为%%C0.125(英寸),我只能手工改成%%c3.175(0.125x25.4)。能不能编个LISP程序自动改成这样?先谢谢啦!
发表于 2008-8-10 19:30:16 | 显示全部楼层
用不到什么程序的,只要在标注样式里设置一下,在标注时就有公英制双尺寸显示了
, L6 w$ W* }1 C& \, x, p你这个“C0.125(英寸),”也有错误,一般英制是用分数表示的+ _' |, g) Y/ v6 {3 H
; F# y0 O1 q) c0 w1 P
[ 本帖最后由 newdhj 于 2008-8-10 19:32 编辑 ]
0810-6.JPG
 楼主| 发表于 2008-8-11 13:07:18 | 显示全部楼层

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

谢谢newdhj 的答复。- J3 f+ `2 ^' L5 X( i
肯恩是我没有所清楚,我是在标注模板坐标时出现这个问题。模板的XY坐标标出来后,跟模板就没有关联性了。换句话说,标出来的就是一对文字,不是尺寸了。所以没有办法从设置里面更改。(这个软件是个外挂)。1 d- l  q7 d* X1 Y

0 F5 I- r8 L+ W[ 本帖最后由 mouse-net 于 2008-8-11 13:19 编辑 ]
111.JPG

新建 文本文档.txt

86 Bytes, 下载次数: 9

发表于 2010-10-14 16:49:49 | 显示全部楼层
我有一个发给大家学习学习(defun c:inm()5 s3 X7 }( [: d( C+ _' R
(setq kkdat(findfile(strcat way"\\dat\\TAGMARK.kdat" )))
  W8 l$ i2 ~; E7 a! u(Setq ss@SS(ssget(list(cons -3 (list(list "my_tag"))))))
7 b: p) n0 ~0 }6 e(setq ss@len(sslength ss@SS))
. _6 P- b& b: ?9 C- ~' ^: O(setq @k 0)( A4 J/ z! k1 M. |) j4 G9 d
(while(< @k ss@len)/ C# V# Q4 F! W( W- |1 Z# z9 I
(xl:GetXData (setq ssn(ssname ss@SS @k)) '("my_tag"))( C  A; R! ?8 O8 n' k
  (setq  my_tag(car(cdr(cdr(car data_i)))))& d* I, I1 z. a& @
(if (/= "org"(cdr my_tag ))(progn
8 {5 ^; {; n1 G/ r- w6 [. V  (setq my_tag(cdr my_tag))
0 g, d9 U' k- q# I$ X* r. R  (setq temptag(substr my_tag (+ 2(vl-string-search  " " my_tag))))- u* @- T/ R: J! |) e
  (setq tagmark(substr temptag 1 (vl-string-search  " " temptag)))
8 E- a7 y0 n* E; O  (setq elss(entget ssn))
2 g1 y8 X! A" O& i( a  A7 |4 N(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn  u7 u- q4 k; i" r
(setq circen(cdr(assoc 10 elss)));;圆心9 P; i& |8 V9 j2 O! n* g3 x
(setq Rcir(cdr(assoc 40 elss)));;半径5 Y1 V. h, X+ T4 a
(setq cirlayer(cdr(assoc 8 elss)));;图层9 n, m, |5 W! B: q( e
                                    / h9 P- k: S' x# g" f
  ));;(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn
' v% y, K( G+ H* B) D) G
. k; D7 u# U# t, g' j1 o' Q8 l  
% ?: Y* U1 n0 B2 t# x  D2 X  (findtag tagmark). b& f! U' U- H/ Z4 X# S
  
6 V' W. N) b* D- O$ q1 G3 x0 A4 t  ));;(if my_tag(progn2 g& I+ i" {2 A$ S* d
  (setq @k(+ @k 1))
' s' `) |4 f7 X3 w. _& [& H2 O  );;(while(< @k ss@len)/ X  W; B2 }- F  @

! v4 Z9 [3 |# U( m0 z  (princ)
# B" Q  B3 Q$ ]: h/ N  );end
: S4 o4 c/ Z8 k( z) ]/ Y$ i1 T8 P# w( r

9 c; m+ e, w* F7 Q. |
/ y" }, ]6 p/ Y: y; b1 |
5 t+ h0 W4 S0 X" W+ U, S
2 h8 c/ f% g. Q5 u$ N& X6 w3 [; f) t9 y3 U0 K. e4 c4 |# N6 _

' W: h1 `0 v6 m/ V4 x  \7 j2 F# P2 d; x  w6 _+ f# ~5 r0 P
;;功能  
7 i. l- h. |+ Q: e) {% I;;获取附着在AutoCAD对象上的扩展图元数据  
7 c, k2 w" A' [1 Z2 ~# C( K* a;;语法  ) e2 M2 V" l$ R% \, I$ ^9 X
;;(ax:GetXData Obj AppID)  2 x9 ]9 }9 @( d* ?4 ^
;;参数  : q! Y3 @: V2 q* t
;;obj:图元名
, c2 c, ?( B" L( R;;appid:AutoLISP函数REGAPP注册的应用名,如为("*")则返回全部XDATA,如为("AAA" "ACAD")则返回两个程序的数据( G+ a  Q% `/ J# k
;;返回值  ) ~, V! W! `/ V; w
;;返回附着到对象上的扩展图元数据列表  ' G$ O5 M+ Q- a' }  h
;;如:  (("south" (1000 . "204201") (1040 . 1.0))7 z' t) {, R: w2 c4 B) S/ A2 k
;;       ("AAAA" (1041 . 562.307)  (1000 . "aaaaa"))  X4 g2 t7 A$ x% o
;;       ("BBBB" (1000 . "bbbbbbb"))) w  t6 F5 E1 S& ~$ Q* ]
;;       ("CCCC" (1041 . 752.569))
9 c) [2 ^5 o% V2 x9 [;;      )
3 e, s+ `8 `( Z+ @) O;;样例  
6 f/ l0 t: A, [0 w& V: _1 B5 w;;(xl:GetXData myVlaObj '("*")) 或 (xl:GetXData myVlaObj '("AAA" "ACAD" "my_tag"))4 [  X" \' Z0 {9 I& a9 v
(defun xl:GetXData
" f7 m3 Y- e4 g" ^. Q/ D7 g1 _       (Obj AppID / data n i  k i_k data_k temp1 temp2)$ L2 p) u7 m8 a& F8 Q$ D
  (setq data_i nil)
$ E2 M  X$ I: r2 W  (setq data (cdr (assoc -3 (entget obj appid)))
/ `* w5 W7 _8 X  G n    (length data)
- e' L5 m0 M$ R i    0" m2 I0 C) E% \- |
  )0 N! T3 e2 P! L
  (repeat n
8 F& ~; L$ L* @) n( |8 ?" v7 x    (setq temp1  (nth i data)) A8 h+ y5 E; Z4 W
   data_k (list (car temp1))
! S+ ?  H6 e* a* \* h& S9 w   temp1  (cdr temp1)0 j: z7 V3 f! L( K) {# E! z
   k  (length temp1)
1 d$ M+ m" E8 I% k/ D$ W, w   i_k  09 N0 ^  F2 Y: }: l
    )
7 A6 B" H8 {3 Y. \    (repeat k2 s  |4 }. M4 M7 W4 N3 s: Y8 b
      (setq temp2 (nth i_k temp1)2 d; ]" a: A: x! c# ]2 ^3 {
     i_k   (1+ i_k)) {# e5 T/ Y: }) ]+ H' J6 M  D+ [
      )& j. B; Q& P+ a/ `! k0 n
      (if (and (not (equal temp2 '(1002 . "{")))9 j$ O+ c: l( M% u3 H& A) ]& u
        (not (equal temp2 '(1002 . "}")))! K" E/ \2 T) _: g
   )/ f; _8 M4 d: I/ H/ V
(setq data_k (append data_k (list temp2)))4 [' x/ n5 {. v4 M; j# @' D
      )
: w& j  _' E7 N, j  u9 i& N. ?' j' |    )$ P" J8 M+ v' t1 a8 W3 ^/ u
    (setq data_i (append data_i (list data_k))
" j% A$ @) O0 W/ }( E$ L1 Y% a   i  (1+ i): P$ U- C! n* S* V3 L+ w
    )! U1 }+ F/ C9 Z" }
  )" K5 {. `/ }0 N/ O0 d
  data_i. @$ o& @6 l* c" f( A1 e6 ?( w/ j
)
% p+ b8 e* k1 C/ _. B% s' r5 E$ \" \5 @% {* y- U' p* G; O
$ |7 m+ z8 z( k( Q. p& z4 _

5 ^4 Y" k/ h( j' _0 A0 ~1 R& G3 d" K- |* ^
(defun findtag (tagmark)
- v0 m: B$ P% o$ ?) P  H+ b, t  (setq kdat(open kkdat "r"))/ `* ^7 A( N' a$ E4 X1 U9 ?+ Z+ h
(while(setq kdatread (read-line kdat))7 d- U4 v1 n' P( F
   (if(/=" "(substr kdatread 1 1))
2 O" t- c6 j2 U8 v" q    (if(= kdatread tagmark)(progn! }* a- D" Q1 p1 C+ |
(setq kai nil)                             
0 c+ Y3 Q8 x: b+ m$ ?9 O(while (and (/= kai 1)(setq kdatread (read-line kdat))) ;运行下面的' M/ Z  C. T" P. [: x
   (if(/=" "(substr  kdatread 1 1))(setq kai 1))
) T8 o% W0 A8 D/ K2 c3 k7 v  (setq kdatread(substr kdatread 2 ))0 i! H3 V9 Q8 s) B. f1 I* t, p
  (Setq pwk(vl-string-search " " kdatread))& a; x# M! }8 [! c- \5 s" u
  (setq comma (strcase (substr  kdatread 1 pwk)));变大写
& U. M$ H# P9 }5 k7 }# Q- E& L  (if (= comma "TEST")(progn- L: b2 o8 t1 [( `# v
(setq kdatread(substr kdatread (+ pwk 2)))
$ Y$ H7 |0 ?0 i. Y5 q9 L(Setq pwk(vl-string-search " " kdatread))$ H: S5 O( G: o+ y( p" ~
  (setq textin (strcase (substr  kdatread 1 pwk)));文字插入点2 A) W6 t, [/ |& {* b% K' Q
(if (= textin "CEN")(setq textin  circen));如果为CEN为圆心
( n7 \; D& k8 i1 o6 |  (setq kdatread(substr kdatread (+ pwk 2)))  E2 D+ _# X3 P
(Setq pwk(vl-string-search " " kdatread))
+ w9 n/ n: }/ V" [3 H8 n  (setq textt (strcase (substr  kdatread 1 pwk)));文字
, P! R! ~5 X) K. e (setvar "clayer" cirlayer); M" c8 e6 W( B: ?+ X% y
(vla-Addtext mspace textt(vlax-3d-point textin)2.5);写文字
. O, E( H/ H1 f        ));(if (= comma "TEST")(progn1 e# O/ O% G  T2 ]* X: a- a7 K. w
' S' i8 c0 R# o. h1 e7 f  l/ N) I' Q
  (if (= comma "LINE")(progn
2 t8 f7 |8 T7 G/ w: X- H        (setq kdatread(substr kdatread (+ pwk 2)))' m' ?$ B1 r, O5 \/ x: M
(Setq pwk(vl-string-search " " kdatread))0 t  O* F# E0 b; B5 s0 s) r
  (setq lineang (strcase (substr  kdatread 1 pwk)));起点+ |- N- L, j& X
(setq linep1 (polar circen (angtof lineang)  Rcir));起点  X, v8 |3 A2 |' U( C. _
        8 ~: E- ^+ M$ ?/ C$ N4 h7 }- u
  (setq kdatread(substr kdatread (+ pwk 2)))
  ^& |. T8 r# g( l(Setq pwk(vl-string-search " " kdatread))
" @  G6 B" c. t( d  (setq lineang2 (strcase (substr  kdatread 1 pwk)));端点& q+ k  C/ w# f) X
(setq linep2 (polar circen (angtof lineang2)  Rcir));端点( J4 c" a0 h/ P5 ^5 y( S
(setvar "clayer" cirlayer)
* V: U4 o! |( a- E: V* W(vla-Addline mspace (vlax-3d-point linep1)(vlax-3d-point linep2));画线               
" U5 v& |7 B# d1 V# f7 f        ));(if (= comma "LINE")(progn
- T. x! i; n; W- S, y1 ~2 t( W) u8 H) n
  (if (= comma "HATCH")(progn" ?, b0 i9 @6 t0 W) Y* }6 C/ c) W

' _- f0 r8 }1 c9 K+ O: M* ]7 n                         " u# }  `" T2 B$ m0 @# `7 V
        ));(if (= comma "HATCH")(progn
8 U9 G6 k) E' V, j0 z$ Z$ {" R& Y9 q
    (if (= comma "CIRCLE")(progn
! m: L" h! e! S- j; ~2 s) `0 g0 m8 s, \
                         
  ^# z& ^2 e. h) U. G6 e        ));(if (= comma "CIRCLE")(progn
  a6 c7 u2 M* @$ O  
! v6 a  k3 G- r+ I* [# W  
) S' L4 Z9 h+ E  );;;(while (=" "(substr (setq kdatread (read-line kdat)) 1 1))7 p' e# N  t4 f  S" l$ R; U
                             ' L1 P% E, f& c4 Z* o3 ?
                             & d4 p" N/ p8 k' v, C
      ));;(if(= kdatread tagmark)(progn
1 d6 E0 m1 L( x% k: N8 m     );;(if(/=" "(substr kdatread 1 1))
- R* `7 f' S6 J. d  Z; X: R    " i! K6 w$ N; H
    );;;(while(setq kdatread (read-line kdat))
+ d% j4 k; H# W5 x+ Y  3 K5 m- c# n/ P+ j/ r
  (close kdat)5 D1 @! A" y$ b: h
  );end
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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