QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 2883|回复: 6
收起左侧

[讨论] 有奖征答:工程图中标注序号的LISP程序有错误,应该怎样改?

[复制链接]
发表于 2006-5-26 11:02:00 | 显示全部楼层 |阅读模式 来自: 中国浙江台州

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

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

x
在工程设计工作中,经常要对设备、零件等标注序号。根据标准化要求,在标注点处要加上实心小圆点,然后引出直线 ;在另一端画出一个8~10mm的圆 ;在圆中写上所标注的序号文字。用AutoCAD基本命令完成上述工作费工费时,并且不易修改,特别是在图形密集处,效果很不理想,图面质量差。   我们利用AutoLISP语言编制了BXH.LSP(标序号),很好地解决了以上问题,该程序为AutoCAD增加了一条BXH命令,可方便地在图纸中标注序号,并且如果修改或删除标注也十分方便,工效提高十倍以上。根据该程序的编制原理,可演绎出使用在机械制图中标注序号,标注焊接符号等程序。  BXH.LSP源程序如下:  ;---------------------------  (defun C:Bxh (/ p1 p2 p3 1 ang 1 bx bxh radi txth) ;标序号  (setq radi 5) ;圆圈半径  (setq txth 5) ;字高  (if (not bx) (setq bx 1))  (setq p1 (getpoint "\n请选择起点:")) ;在零件上选一点  (setq p2 (getpoint "\n请选择第二点或回车表示无第二点")) ;标注位置处一点  (setq bxh (getint (gstr "\n请输入序号" bx))) ;序号数  (if bxh (setq bx bxh))  (cond (p2   (command "layer" "set" 2 " ") ;改到画细线图层   (setq ang 1 (angle p1 p2))   (setq p3 (polar p1 ang (-(distance p1 p2) radi))) ;画圆、线   (command "pline"   (polar p1 ang 1 0.25)   "w" 0.5 0,5 "A" "CE"p1"A"359.9"L""W"0 0 p3"")   (command"circle"p2 radi)   (command "layer" "set" 6 " " ;改到写文字图层   "text" "J" "M" p2 txth 0 bx) ;写文字  )   ((not p2) ;如果在零件中直接标注   (command "layer" "set" 2 " ") ;改到画细线图层   (Command "circle" p1 radi) ;画圆   (command "layer" "set" 6 " " ;改到写文字图层   "text" "J" "M" p1 txth 0 bx) ;写文字   )  )  (setq bx (+ bx 1))  (princ) )  ;-----------------------  程序的使用方法,在Command:提示符下,键入(Load"BXH")回车后再键入BXH,然后按屏幕提示输入对应项即可。因为这个命令经常使用,建议把它装在菜单文件,在ACAD.MNU适当位置中加入一项:  标序号]^c^c(LOAD "BXH") ;BXH ;用鼠标点取最为方便。
发表于 2007-10-23 09:39:45 | 显示全部楼层 来自: 中国上海
这个CAD,LSP有谁帮忙编制一,谢谢了.
发表于 2007-10-23 11:44:34 | 显示全部楼层 来自: 中国台湾
(defun C:Bxh (/ p1 p2 p3 1 ang 1 bx bxh radi txth) ;标序号  , S' r) _  u6 G& |7 L* d; W
  (setq radi 5)                         ;圆圈半径  / t: S+ o6 ~8 x
  (setq txth 5)                         ;字高  
/ q& q0 \( Y. V* [. b! Q  (if (not bx)
4 i& j: E4 M$ u: E0 R3 j. b; j: w    (setq bx 1)6 J1 O2 S# L6 [" K" q& p- p" N
  )
) `$ c. H; a. i# a: O( F) g+ e    8 l* \+ \: D" Q; s. R' s- A3 @
  (setq p1 (getpoint "\n请选择起点:"))                    ; 在零件上选一点  6 b" z' @* y/ [! T: u
  (setq p2 (getpoint "\n请选择第二点或回车表示无第二点")) ; 标注位置处一点  
0 R( l# ^" e3 k# T7 H( g- }  (setq bxh (getint (gstr "\n请输入序号" bx)))            ; 序号数  
& v9 b5 c; w( D" P7 r  (if bxh& M3 }! q2 C' `* P% \; ~- i/ m) C
    (setq bx bxh); t" j5 q8 ], R, C0 z! r
  )1 D5 `; ~" `$ t  T# p5 m( n: G
    " w8 r6 D8 S! ?# U6 [$ L8 L
  (cond/ K2 A: D7 G" a" O' w: o
   (p2  $ k/ @/ y7 S  b- S, X+ |
    (command "layer" "set" 2 " ")  ;改到画细线图层  
% c6 |5 D  ^+ Z+ T8 v1 S# C    (setq ang 1 (angle p1 p2)). `1 K( k# H- z* v1 ?0 ^5 H
    (setq p3 (polar p1 ang (- (distance p1 p2) radi))), p$ U. [5 h1 C7 ?
    ;; 画圆、线  3 y. }; j; c8 P" V. t# c
    (command "pline", F% |2 x( o; L4 |
             (polar p1 ang 1 0.25)1 ~7 M8 b! |. D  ^8 I, m
             "w" 0.5  0,5 "A" "CE" p1
) [. M( W+ x( P! c" v) h) P+ V1 _             "A" 359.9 "L" "W" 0 0
5 ^+ ^7 q, O& E& @8 L- s/ ~             p3 ""( w# f3 u& L) f2 s6 y
    )' E% f: h, F/ x0 E
    (command "circle" p2 radi)5 q& |0 O8 N" t; @2 x/ [4 B
    (command "layer" "set" 6 " "   ;改到写文字图层  * v# d! C) U8 q0 Y. V9 l# f
             "text" "J" "M" p2 txth 0 bx) ;写文字; m  `+ F* T5 L2 G
   )
. p) `9 z' u4 h. t. ~; |   ((not p2)                       ;如果在零件中直接标注  
* ?5 Z( i+ g+ B1 ?    (command "layer" "set" 2 " ")  ;改到画细线图层 , U  m* V" j0 u2 ^/ A2 l( d9 v
    (Command "circle" p1 radi)     ;画圆  
6 \8 X6 x1 z  r! d8 Q+ i! S- O4 J    (command "layer" "set" 6 " "   ;改到写文字图层   
) v( N* S2 o0 F; {2 n/ n, q$ z3 e             "text" "J" "M" p1 txth 0 bx) ;写文字0 I/ e% q* j! q, ?2 ?
  ))
3 J) B+ B  w/ G% f3 ]4 d# e  (setq bx (+ bx 1))
  O. j" P8 y1 r& k  (princ)
- n! f. M' q3 L' {: n: m9 M   
9 W$ b! G' {& W) f);-----------------------  + F& z: h( v2 O5 e; A/ C( Y3 h9 t+ y
;|
( k0 _5 ~! i1 ]$ {+ y: J3 y/ T$ c程序的使用方法,在Command:提示符下,键入(Load"BXH")7 S- w  p1 [' ^- N- Y
回车后再键入BXH,然后按屏幕提示输入对应项即可。3 d# E5 Z8 U* X6 S+ ]; k
因为这个命令经常使用,建议把它装在菜单文件,
. I5 a  \0 H8 {/ L9 Q在ACAD.MNU适当位置中加入一项:  
* x  O* u9 Q0 k; C3 A: Q) ^[标序号]^c^c(LOAD "BXH") ;BXH
+ f# e  e8 p- \, D;用鼠标点取最为方便。
8 h! U/ T) S6 \  v" `1 ]|;

BxhLsp.rar

744 Bytes, 下载次数: 38

发表于 2007-10-23 12:33:33 | 显示全部楼层 来自: 中国上海
还是不能加入??为什么????
发表于 2007-12-8 20:00:03 | 显示全部楼层 来自: 中国浙江杭州
我这方面的知识十分欠缺,了解一下也好。谢谢楼主!
发表于 2008-8-26 11:00:16 | 显示全部楼层 来自: 中国福建厦门

呵呵

下了用了,提示错误啊!
发表于 2008-8-29 16:30:54 | 显示全部楼层 来自: 中国辽宁营口
Bxh.rar (882 Bytes, 下载次数: 11)
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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