QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 版主微信号:caivin811031;还未入三维微信群的小伙伴,速度加
2022-07-04
全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
查看: 3381|回复: 3
收起左侧

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

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

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

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

x
有没有编程高手帮我编个LISP程序。我做在标注模板图的时候,用英制标注,而加工需要用公制,要是每个都手工改很费时间的。比方说自动标注出的直径为%%C0.125(英寸),我只能手工改成%%c3.175(0.125x25.4)。能不能编个LISP程序自动改成这样?先谢谢啦!
发表于 2008-8-10 19:30:16 | 显示全部楼层
用不到什么程序的,只要在标注样式里设置一下,在标注时就有公英制双尺寸显示了3 S* w% T9 M/ I. k$ b
你这个“C0.125(英寸),”也有错误,一般英制是用分数表示的
3 Q1 z, @  F6 X, A; Z9 H
+ [! Q% O9 p/ S2 {[ 本帖最后由 newdhj 于 2008-8-10 19:32 编辑 ]
0810-6.JPG
 楼主| 发表于 2008-8-11 13:07:18 | 显示全部楼层

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

谢谢newdhj 的答复。
) @  K+ z. r; A  q4 f/ t肯恩是我没有所清楚,我是在标注模板坐标时出现这个问题。模板的XY坐标标出来后,跟模板就没有关联性了。换句话说,标出来的就是一对文字,不是尺寸了。所以没有办法从设置里面更改。(这个软件是个外挂)。! u) x. ?' F% n6 O
7 t) t$ I2 R5 Z& {
[ 本帖最后由 mouse-net 于 2008-8-11 13:19 编辑 ]
111.JPG

新建 文本文档.txt

86 Bytes, 下载次数: 9

发表于 2010-10-14 16:49:49 | 显示全部楼层
我有一个发给大家学习学习(defun c:inm()
+ ^, ?4 p7 E8 m2 G% x$ _9 X2 L(setq kkdat(findfile(strcat way"\\dat\\TAGMARK.kdat" )))
8 E4 ~5 b. w1 E1 ?& F& g+ I3 D: P(Setq ss@SS(ssget(list(cons -3 (list(list "my_tag"))))))+ {2 O; j- r/ ^2 g2 u- ?7 x6 B
(setq ss@len(sslength ss@SS))
8 c# G: P4 j8 L(setq @k 0)) U2 d; }! o( \7 p
(while(< @k ss@len)
% _+ ^: X2 i$ u7 a+ F0 q(xl:GetXData (setq ssn(ssname ss@SS @k)) '("my_tag"))
$ ^3 o' Q2 Y. {% v# A  (setq  my_tag(car(cdr(cdr(car data_i)))))# z2 l/ L- F% l+ O; ~
(if (/= "org"(cdr my_tag ))(progn
% m/ S5 k: z3 h, F  (setq my_tag(cdr my_tag)). h8 V# h5 b/ D; {
  (setq temptag(substr my_tag (+ 2(vl-string-search  " " my_tag))))
2 e- t) a: l5 m* t. [1 h  (setq tagmark(substr temptag 1 (vl-string-search  " " temptag)))' N/ `6 n. t& T, a
  (setq elss(entget ssn))
9 i) z, u+ O! [(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn
+ P" O. x$ {+ [& w+ {(setq circen(cdr(assoc 10 elss)));;圆心
; g  }/ v: b5 l$ d. c0 [% k(setq Rcir(cdr(assoc 40 elss)));;半径- i. Z, B9 I: U; n6 v) y% ]
(setq cirlayer(cdr(assoc 8 elss)));;图层
0 T0 |  x; H3 V" ]                                    
5 o) O9 c$ i& x9 O+ N3 O  ));;(if(= "CIRCLE"(cdr(assoc 0 elss)))(progn
, r5 b5 ^0 }4 I# E
8 p( _# [" A- }! ?0 U+ _3 G  
- ^8 E4 Y8 @5 q  (findtag tagmark)
1 v, f6 P7 H& X' e/ Y% P) h- o  
5 m  A5 X0 A0 G# C5 a, ~6 G  ));;(if my_tag(progn/ S) R4 w7 d7 m. Y& D6 n7 Z
  (setq @k(+ @k 1))
7 X8 Q6 d! P9 U5 y1 ^; ]% A3 _5 [  );;(while(< @k ss@len)2 T* s+ W; h' ^. u
$ d" {* \* f) x, s
  (princ)
7 _3 Y' S3 i. A( V  );end" g) l, Q8 x' K8 p- o. J! w

3 d" L) b3 G5 X6 F3 ^$ H+ z
) F/ j! d0 O8 [' t% k+ u) Y" r8 t# p5 \) i9 d

- O; o2 V7 Z  T
! X: y# U! P2 ~, D7 e" Q! l
, R# N  b* m5 C2 ^* |& E3 a
9 U% G% j9 A+ K  Y* O! x
0 L1 t" E# X. }- v( U;;功能  
& l  T2 M, C( ?% g;;获取附着在AutoCAD对象上的扩展图元数据    m' @% z) H3 [2 V( y* m; m0 k3 c
;;语法  
/ r6 ^) q/ S5 g) i- |! H;;(ax:GetXData Obj AppID)  ' F, u. x9 m4 c6 X2 ?# ]9 q9 K
;;参数  / P# n; H; e! }2 A6 k# B( n2 Y
;;obj:图元名
* C7 F7 `; i% v( I;;appid:AutoLISP函数REGAPP注册的应用名,如为("*")则返回全部XDATA,如为("AAA" "ACAD")则返回两个程序的数据
( [. q! u  O5 A5 Q;;返回值  
% K2 j0 c6 T& [& I) t;;返回附着到对象上的扩展图元数据列表  
" |8 |: Q: c9 W, W+ E& q;;如:  (("south" (1000 . "204201") (1040 . 1.0))' T7 h7 U6 h: T. K' h
;;       ("AAAA" (1041 . 562.307)  (1000 . "aaaaa"))
7 E8 b6 u& ]) j;;       ("BBBB" (1000 . "bbbbbbb"))0 u4 I5 a) B8 h) K
;;       ("CCCC" (1041 . 752.569))+ C/ _( Y. ]- n# _
;;      )/ H, y; \* W' t" ?" l
;;样例  
* ?; |9 Q8 V/ j9 ^0 L+ \8 e;;(xl:GetXData myVlaObj '("*")) 或 (xl:GetXData myVlaObj '("AAA" "ACAD" "my_tag"))
9 l3 ~* q0 n( D& C& a. ~1 U(defun xl:GetXData6 e! u( G6 y* `9 R0 `5 V
       (Obj AppID / data n i  k i_k data_k temp1 temp2); `1 [5 U* u, N4 Y/ C! P
  (setq data_i nil)- k0 U/ a- h- u% b* e' J
  (setq data (cdr (assoc -3 (entget obj appid)))
0 {; q; C( u% I# c( @ n    (length data)) t) a8 S. B* V8 i. I  A- e
i    0
/ V0 d8 y7 t2 m: [# W  )2 N. ~% c; ?  s5 ~2 G7 t
  (repeat n% W1 q* I2 p5 J" V$ \& H; I' z/ t
    (setq temp1  (nth i data)
/ t. \8 G' w9 k* E   data_k (list (car temp1))+ p$ h# i, q& O! L5 x
   temp1  (cdr temp1)
+ |0 d1 |/ L# z( Z" f& i* Y: c$ ^: C   k  (length temp1)4 A! [$ N( @% a' V; w8 l4 c# T
   i_k  0+ E1 `, P2 h% @1 K
    )
* V) @  e/ @; t. m8 e% L    (repeat k' v% h5 U+ h6 I/ z
      (setq temp2 (nth i_k temp1)! f* U; |8 ^& {9 x! U5 m1 [
     i_k   (1+ i_k)) p% U9 t# E6 Z; C) h
      )1 H5 D. V8 p: `5 m2 A
      (if (and (not (equal temp2 '(1002 . "{")))
4 c7 x" P# G% \9 @        (not (equal temp2 '(1002 . "}")))4 ~2 Y$ t% ~7 b) o+ Q& R* x8 s
   )
2 ^1 U9 P, {4 V3 O (setq data_k (append data_k (list temp2)))
: C$ }  d$ u/ @' _  [7 u      )  ]/ V" Y9 I1 f: |/ V
    )
1 ]. T# [3 E* l, x, y. b    (setq data_i (append data_i (list data_k))' {7 o6 x( k( J9 k
   i  (1+ i), T( ~" t1 B# F5 o  w3 r! |7 j
    ), k: I- I) @' n9 ]2 |% e
  )" E0 c+ ^$ o: s/ {
  data_i; M+ e% q) t6 N8 S2 X, |& g3 n/ C* e
)
$ J. u, n2 k% a/ k; G  D  X( }" |+ H
, C+ u- P: q- C; s' ?+ O  f+ e- C6 p1 K2 e
6 l2 m+ n$ {, f# ]/ k$ c

& O" U3 O' m) f3 o, L8 w0 q/ d(defun findtag (tagmark)
/ ]$ c1 A7 g6 b8 z5 Q$ W" c0 E4 b% M  (setq kdat(open kkdat "r")). P! n2 i/ L( \5 |/ ?2 |" c
(while(setq kdatread (read-line kdat))# }3 p' r7 j& f( a
   (if(/=" "(substr kdatread 1 1))
* X# Y9 e; h& q9 z3 u1 E% E" s    (if(= kdatread tagmark)(progn3 ?6 F! v5 Z( B. V  m0 V+ ~6 f
(setq kai nil)                             4 {- P+ A5 ~5 p! v' ]! m! G
(while (and (/= kai 1)(setq kdatread (read-line kdat))) ;运行下面的
7 p4 t% C  p  C' u5 l; R   (if(/=" "(substr  kdatread 1 1))(setq kai 1))  i! y% M; G2 _. ?& x2 D
  (setq kdatread(substr kdatread 2 ))
2 u3 y* }- @" V, I; V* ]  (Setq pwk(vl-string-search " " kdatread))
& ]. `6 a+ a  }6 l  (setq comma (strcase (substr  kdatread 1 pwk)));变大写4 j+ `: R2 O/ m, e
  (if (= comma "TEST")(progn
& x) A% G+ L5 L  T(setq kdatread(substr kdatread (+ pwk 2)))
/ j& D0 B$ z, i$ ^+ Z(Setq pwk(vl-string-search " " kdatread))
  ~5 j# ~! ?8 u2 T8 O$ i2 v  (setq textin (strcase (substr  kdatread 1 pwk)));文字插入点
8 u: w* |" g4 |8 g0 _& g(if (= textin "CEN")(setq textin  circen));如果为CEN为圆心' v& T. R* x- N. b, B- m
  (setq kdatread(substr kdatread (+ pwk 2))). i7 b* W. d2 k7 Y- w! B
(Setq pwk(vl-string-search " " kdatread))
! @9 W4 ?  L/ s& R, g. P2 r% T( p  (setq textt (strcase (substr  kdatread 1 pwk)));文字
) N' p: @8 t, j (setvar "clayer" cirlayer)
4 o5 Y) w0 t, I$ j7 h(vla-Addtext mspace textt(vlax-3d-point textin)2.5);写文字
% ~# I  ?; j% s- n2 F        ));(if (= comma "TEST")(progn
+ n* g: u3 `, O3 i2 z
) ]6 ^% m3 x+ r6 h: ?' j  (if (= comma "LINE")(progn2 W( S- n+ R' U* v, {
        (setq kdatread(substr kdatread (+ pwk 2)))' F# Z, ^; v; ?; u" {. G( A
(Setq pwk(vl-string-search " " kdatread))
8 p# w, t$ E  r# v% f9 \  (setq lineang (strcase (substr  kdatread 1 pwk)));起点5 T0 @$ n" D- I
(setq linep1 (polar circen (angtof lineang)  Rcir));起点
, \) |1 ^, _7 O        # w- t4 x' e; }
  (setq kdatread(substr kdatread (+ pwk 2)))
' l  N9 {% }" F0 ~(Setq pwk(vl-string-search " " kdatread))/ [: j( K4 \" A. q' S
  (setq lineang2 (strcase (substr  kdatread 1 pwk)));端点
# n$ x* v! B0 U% E" y, T" J. V: k: F(setq linep2 (polar circen (angtof lineang2)  Rcir));端点0 X: C# |, c( w) C+ _
(setvar "clayer" cirlayer)/ R4 y" ]$ ^- E5 C% _# Y
(vla-Addline mspace (vlax-3d-point linep1)(vlax-3d-point linep2));画线               
% x9 d+ z. J! C  H8 a        ));(if (= comma "LINE")(progn' Q! j; S3 W+ ]  U9 S, h1 y

% x/ v, X8 j, B2 B3 W3 w6 w6 c" o  (if (= comma "HATCH")(progn& g% L; v8 E9 ]2 e; I9 k

" v9 {1 \$ J  j- b8 q9 w" _" J                         
7 P  J2 A3 {) N* D0 b& a5 x) I        ));(if (= comma "HATCH")(progn8 ?* j% c0 |5 L
' @& j/ }4 s+ a. F" o) m
    (if (= comma "CIRCLE")(progn
: N) j! z& |) `, q- T! S
9 \2 U- a& y" ]; V2 ~$ v' a                         
) f5 j. |  B- v. u; P# t        ));(if (= comma "CIRCLE")(progn
" a9 |5 \$ o+ _+ M: ?  - F8 n% C) @6 w' w: f
  ; f% ^. }& x, P9 C! l  B: L
  );;;(while (=" "(substr (setq kdatread (read-line kdat)) 1 1))
8 N# S/ c+ D! k' f0 K% W; {9 `                             
% ]2 }4 C9 H7 l( F8 b8 [  {                             9 R: @$ w* m* j# i; i1 v$ D
      ));;(if(= kdatread tagmark)(progn5 Y& {. |* Q& {, O$ O
     );;(if(/=" "(substr kdatread 1 1))3 k# R) N# B3 Q" q; ~& U
    ! S2 k$ |. m0 a& q' ?' Y
    );;;(while(setq kdatread (read-line kdat))
" u! }) U/ M: R: q$ u, X) v  
* `9 s& J6 J9 K, O9 ]! [  (close kdat)- r$ R9 V/ }7 h0 N$ A& ]; R* p
  );end
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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