明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2374|回复: 5

标零件序号的小程序

[复制链接]
发表于 2011-11-15 10:21:44 | 显示全部楼层 |阅读模式
我写的标序号的程序,还是有点问题,如果中途按了ESC键的话就会出现标注样式替代,请高手帮忙看看,有什么好方法解决!

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;                                                         ;;;
;;;  ShangHai jinding Mould Industry Co. Ltd.               ;;;
;;;                          xiangzanyang  (sep,2011)       ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:bub (/    v1 v2   v3   sn   en   sn1  en1  n    la pt1
       pt2  sn2 snlg a   al   bubscale  b    r    th pt3
       cenpt
      )
  (setq v1 (getvar "osmode"))  ;获取当前的目标捕捉类型,将其赋给变量V1
  (setq v2 (getvar "cmdecho"))  ;获取当前的普通命令提示状态,将其赋给变量V2
  (setq v3 (getvar "blipmode"))  ;获取当前的光标痕迹显示状态,将其赋给变量V3
  (setq v4 (getvar "dimblk"))
  (setq v5 (getvar "dimstyle"))
  (setq v6 (getvar "dimclrd"))
  (setq v7 (getvar "dimgap"))
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (initget 0)
  (if (SETQ sn (GETint "\n输入起始序号")) ;four if
    (progn
      (if (setq en (getint "\n输入结束序号")) ;three if
(progn
   (setq n (+ (- en sn) 1))
   (REPEAT N
     (if (setq pt1 (getpoint "\n选择零件: ")) ;two if
       (progn
  (if (setq pt2 (getpoint pt1 "\n放置点: "));one if
    (progn
      (setq sn1 (itoa sn))
      (setq snlg (strlen sn1))
      (setq a (angle pt1 pt2))
      (setq
        al (cond
      (
       (and (>= a (* pi 1.5)) (<= a (* pi 0.5)))
       0
      )
      (
       (and (> a (* pi 0.5)) (< a (* pi 1.5)))
       pi
      )
      (t 0)
    )  ;end cond
      )   ;end setq al
      (setq bubscale
      (* (getvar "dimscale") (getvar "dimtxt"))
      )
      (setq b (cond ((= snlg 2) (* bubscale 1.5))
      ((= snlg 1) (* bubscale 1.5))
      ((= snlg 3) (* bubscale 2))
      (t (* snlg bubscale 0.6))
       )  ;end cond
      )   ;end setq b
      (drwing1)

    )   ;one if yes
    (progn
      (setvar "osmode" v1)
      (setvar "cmdecho" v2)
      (setvar "blipmode" v3)
      (command "dimblk" v4)
      (command "dimstyle" "r" v5)
    )   ;one if no
  )   ;end one if
       )    ;two if yes
       (progn
  (setvar "osmode" v1)
  (setvar "cmdecho" v2)
  (setvar "blipmode" v3)
  (command "dimblk" v4)
  (command "dimstyle" "r" v5)

       )    ;tow if no
     )    ;end two if
   )    ;end repeat
)    ;three if yes
(progn
   (setvar "osmode" v1)
   (setvar "cmdecho" v2)
   (setvar "blipmode" v3)
   (command "dimblk" v4)
   (command "dimstyle" "r" v5)

)    ;three if no
      )     ;end three if
    )     ;for four if yes
    (progn
      (setvar "osmode" v1)
      (setvar "cmdecho" v2)
      (setvar "blipmode" v3)
      (command "dimblk" v4)
      (command "dimstyle" "r" v5)

    )     ;four if no   
  )     ;end four if
  (setvar "osmode" v1)
  (setvar "cmdecho" v2)
  (setvar "blipmode" v3)
  (command "dimblk" v4)
  (command "dimstyle" "r" v5)

)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun drwing1 ()
  (setq r (/ b 2))
  (setq th (* (getvar "dimtxt") (getvar "dimscale")))
  (if (not (tblsearch "style" "GB"))
    (command "style" "gb" "gbenor,gbcbig" "" "1" "" "" "")
  )
  (command "dimtxsty" "gb")
  (command "dimsah" "off")
  (command "dimldrblk" "_dotsmall")
  (command "dimclrd" "3")
  (command "dimgap"
    (cond ((= snlg 1) 1.8)
   ((= snlg 2) 1)
   (t v7)
    )
  )
  (command "LAYER" "M" "LABEL" "C" "7" "" "" "qleader" pt1 PT2 "" "" sn1
    "" "")
  (setq pt3 (osnap pt2 "endpoint"))
  (setq cenpt (polar pt3 al r))
  (command "CIRCLE" cenpt r)
  (SETQ sn (1+ sn))
)
;;;

本帖子中包含更多资源

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

x
发表于 2011-11-15 18:34:04 | 显示全部楼层
你自定义一个错误处理函数,把你要更改回去的系统变量放在错误处理程序里,这样用户用ESC退出时,cad自动调用错误处理程序,恢复当初的系统变量,你去看看LISP手册里的*error*函数的用法。
发表于 2011-11-15 22:08:05 | 显示全部楼层
上海金鼎模具工业有限公司向赞阳
发表于 2011-11-29 15:06:33 | 显示全部楼层
cabinsummer 发表于 2011-11-15 22:08
上海金鼎模具工业有限公司向赞阳

发表于 2011-12-1 19:39:00 | 显示全部楼层
期待高手的出现!
发表于 2011-12-1 19:42:08 | 显示全部楼层
我在cad2011使用的时候,按esc键,未出现标注样式替代。
只是提示:“ 错误: 函数被取消”
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-7-23 13:00 , Processed in 0.174742 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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