找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1572|回复: 7

[LISP程序]:按给定比例建立尺寸标注样式程序

[复制链接]
发表于 2003-11-5 15:07:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
;;*****************************************************************************
;;YL_begin
;;功    能:绘图程序的初始化处理,记录当前层名、线型、颜色、捕捉方式、文本样式、文本高度,
;;          控制点标记可见方式、主单位值消零处理方式、命令行回显方式、然后关闭目标捕捉,
;;            设置线形随层、颜色随层、设置命令行不回显、不显示控制点标记、对主单位值后续零作消零处理
;;说        明:和函数YL_end配对使用。
(defun YL_begin ()
  (setq oderr *error*)                           ;;保存原来的*error*
  (setq *error* YL_err)                               ;;将*error*用自己的错误处理函数替代
  (setq odltp (getvar "celtype"))                ;;记录当前线型设置
  (setq odclr (getvar "cecolor"))                ;;记录当前颜色设置
  (setq odosm (getvar "osmode"))                ;;记录当前捕捉方式
  (setq odlay (getvar "clayer"))                ;;记录当前层
  (setq odsty (getvar "textstyle"))                ;;记录当前文本样式
  (setq odtsz (getvar "textsize"))                ;;记录当前文本高度
  (setq odbpm (getvar "blipmode"))                ;;记录当前控制点标记是否可见
  (setq odzin (getvar "dimzin"))                ;;记录主单位值消零处理方式
  (setq odcmd (getvar "cmdecho"))                ;;记录命令行回显方式
  (setvar "celtype" "bylayer")                        ;;设置线形随层
  (setvar "cecolor" "bylayer")                        ;;设置颜色随层
  (setvar "cmdecho" 0)                                ;;设置命令行不回显
  (setvar "blipmode" 0)                                ;;不显示控制点标记
  (setvar "dimzin" 8)                                ;;对主单位值后续零作消零处理,因为DIMZIN 对 AutoLISP rtos 和 angtos 函数执行实数向字符串转换操作有影响。  
  (setvar "osmode" 0)                                ;;关闭对象捕捉方式
)

;;*****************************************************************************
;;YL_end
;;功    能:程序结束,恢复程序开始前的设置。
;;          恢复YL_begin设置的系统变量表中的数值。
;;说        明:和函数YL_begin配对使用。
(defun YL_end ()
  (setvar "celtype" odltp)                                       
  (setvar "cecolor" odclr)
  (setvar "osmode" odosm)
  (setvar "textstyle" odsty)
  (setvar "textsize" odtsz)
  (setvar "blipmode" odbpm)
  (setvar "dimzin" odzin)                        ;;恢复主单位值消零处理方式
  (command "layer" "s" odlay "")
  (setvar "cmdecho" odcmd)
  (setq *error* oderr)                             ;;恢复原来的*error*
  (princ)
)

;;*****************************************************************************
;;YL_err
;;功    能:错误处理函数。
(defun YL_err (msg)
  (princ (strcat "\n错误:" msg "\n"))                ;;打印错误原因
  (YL_end)                                         ;;调用函数YL_end恢复程序开始前的设置
  (setq *error* oderr)                             ;;恢复原来的*error*
  (princ)
)

;******************************************************************************
;;按给定比例建立尺寸标注样式程序 YS
;;功    能:配合jt.dwg文件,按给定比例建立尺寸标注样式
;;作        者:yunlong3000


(defun c:YS (/ odscal scal nam nam1 txt en1)
  (YL_begin)                                           ;;初始化处理
  (princ "\n按给定比例建立尺寸标注样式程序!")
  (setq odscal (getvar "USERR1"))                ;;取系统变量"USERR1"的值为默认比例因子
  (if (equal odscal 0.0 0.1)                     ;;如果系统变量的值为0.0(容许误差为0.1)
    (progn                                                                        ;;则设置
      (setq odscal 100.0)                         ;;首次运行,设默认比例因子为100
      (setvar "USERR1" odscal)                         ;;系统变量userr1存储默认比例因子
    )
  )
  (setq scal (getreal (strcat "\n 请输入比例因子<" (rtos odscal) ">:")))
  (if (= scal nil) (setq scal odscal))                 ;;如果用户直接回车,则使用默认的比例值
  (setq odscal scal)
  (if (not (tblsearch "layer" "Dim"))                ;;判断是否存在Dim层,无则创建。
    (command "layer" "m" "Dim" "c" "6" "" "l" "continuous" "" "")
  )
  (setq nam1 (strcat "YL" (rtos scal 2)))
  (if (tblsearch "DIMSTYLE" nam1)                ;;判断是否存在nam1标注样式,有则设为当前,无则创建。
    (progn
      (command "DIMSTYLE" "S" nam1 "" "")
      (setq txt (strcat "比例尺为 1:" (rtos scal 2) " 尺寸标注样式已存在,名为 " nam1 " 现已设为当前样式!"))
    )
    (progn
      (command "layer" "s" "Dim" "")
      (command"insert" "jt" "0,0" 1 1 0)          ;;在图中插入用户自定义的箭头(jt.dwg文件应放在CAD的收索路径中)
      (setq en1 (entlast))                        ;;返回图形中最后一个未被删除的图元名
      (entdel en1)                                ;;删除刚插入的箭头实体,但图形中保留了块的定义。
      (if (tblsearch "style" "sty_YL")                ;;判断是否存在sty_YL字体,有则设为当前,无则创建。
        (setvar "textstyle" "sty_YL")
        (command"style" "sty_YL" "romans,hztxt" 0 0.7 0 "n" "n" "n")
      )
      (setvar"DIMTOL" 0)
      (setvar"DIMLIM" 0)
      (setvar"DIMTIH" 0)
      (setvar"DIMTOH" 0)
      (setvar"DIMSE1" 0)
      (setvar"DIMSE2" 0)
      (setvar"DIMALT" 0)
      (setvar"DIMTOFL" 1)
      (setvar"DIMSAH" 1)
      (setvar"DIMTIX" 0)
      (setvar"DIMSOXD" 0)
      (setvar"DIMSD1" 0)
      (setvar"DIMSD2" 0)
      (setvar"DIMUPT" 0)
      (setvar"DIMTOLJ" 1)
      (setvar"DIMALTD" 2)
      (setvar"DIMZIN" 8)
      (setvar"DIMAZIN" 2)
      (setvar"DIMJUST" 0)
      (setvar"DIMFIT" 5)
      (setvar"DIMTZIN" 8)
      (setvar"DIMALTZ" 0)
      (setvar"DIMALTTZ" 0)
      (setvar"DIMTAD" 1)
      (setvar"DIMUNIT" 2)
      (setvar"DIMAUNIT" 0)
      (setvar"DIMDEC" 1)
      (setvar"DIMADEC" 1)
      (setvar"DIMTDEC" 0)
      (setvar"DIMALTU" 2)
      (setvar"DIMALTTD" 2)
      (setvar"DIMSCALE" scal)
      (setvar"DIMASZ" 0.12)
      (setvar"DIMEXO" 0)
      (setvar"DIMDLI" 0.6)
      (setvar"DIMEXE" 0.15)
      (setvar"DIMRND" 0)
      (setvar"DIMDLE" 0)
      (setvar"DIMTP" 0)
      (setvar"DIMTM" 0)
      (setvar"DIMTXT" 0.25)
      (setvar"DIMCEN" 0.3)
      (setvar"DIMTSZ" 0)
      (setvar"DIMALTF" 25.4)
      (setvar"DIMLFAC" 1)
      (setvar"DIMTVP" 0)
      (setvar"DIMTFAC" 1)
      (setvar"DIMGAP" 0.05)
      (setvar"DIMCLRD" 6)
      (setvar"DIMCLRE" 6)
      (setvar"DIMCLRT" 6)
      (setvar"DIMDSEP" ".")                        ;;设置小数点的符号
      (setvar"DIMASSOC" 1)                        ;;创建非关联标注对象。
      (command "DIMTXSTY" "sty_YL")
      (command "DIMBLK1" "JT")
      (command "DIMBLK2" "JT")          
      (command "DIMSTYLE" "S" nam1)
      (setq txt (strcat "比例尺为 1:" (rtos scal 2) " 的尺寸标注样式已建立,名为 " nam1 "."))
    )
  )
  (princ txt)
  (setvar "USERR1" scal)                          ;;系统变量userr1存储默认比例因子
  (YL_end)                                        ;;恢复程序开始前的设置
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-2-17 22:44:40 | 显示全部楼层
附件哪去,请重新上传好吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-24 10:47:20 | 显示全部楼层
事实上CAD早期版本需要设置尺寸,标识位置在当时的版本为虚设的,新的如2004~2006在布局中无须任何设置,只需将标识位置选中,尺寸标注全部统一。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-17 13:03:33 | 显示全部楼层
看了,学习中,相信总有一天能看明白.谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-22 09:25:19 | 显示全部楼层
这样会不会引起整个图形比例的混乱呢,新手。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-30 00:02:13 | 显示全部楼层
不会 他只对你设置的标注样式起全局作用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-8-2 13:08:54 | 显示全部楼层
方法可以学习下。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-8-12 20:20:37 | 显示全部楼层
乱!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 21:26 , Processed in 0.200359 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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