找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5550|回复: 41

[LISP程序]:修改尺寸标注为楼梯标注形式(实用程序)

[复制链接]
发表于 2005-12-4 18:26:05 | 显示全部楼层 |阅读模式

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

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

×
这是本人编写的一个小程序,用于将普通的尺寸标注改为楼梯标注的形式。
;| 用途:修改尺寸标注为楼梯标注形式。例如,你如果选择了标注值分别为1650和1800的相关标注,输入步长为150,则标注值分别被改为“150X11=1650”和“150X12=1800”。
使用方法十分简单:
1.选择要改变的尺寸标注;
2.输入步长或踏步数,默认步长为260;
3.回车即完成了修改。
如紧接着再次使用该命令,则默认的范围为上次使用的步长。|;

  1. (princ "\n修改尺寸标注为楼梯标注形式,\n比例为1:50,请执行ltdim;\n比例为1:100,请执行ltdim1。")
  2. (defun c:ltdim(/ ss nn ssl n sn en p1 p2 dis3 dis0 t0 t1 t b m bs ms dis00 str)
  3.    ;;全局变量: wxn0
  4.    (setq oer *error* *error* myerr)
  5.    (setvar "cmdecho" 0)
  6.    (command "graphscr")
  7.    (setq ss (ssget))
  8.    (if (= wxn0 nil) (setq wxn0 260))
  9.    (princ "\n步长或步数<") (princ wxn0)
  10.    (setq nn (getint ">:"))
  11.    (if (= nn nil) (setq nn wxn0))
  12.      (setq ssl (sslength ss) n 0)
  13.      (repeat ssl
  14.        (setq sn (ssname ss n) en (entget sn) n (1+ n))
  15.        (if (= "DIMENSION" (cdr (assoc 0 en)))
  16.          (progn
  17.            (setq p1 (cdr (assoc 13 en)) p2 (cdr (assoc 14 en))
  18.                  dis3 (distance p1 p2) dis0 (* 5 (fix (/ (+ dis3 4) 10)))
  19.                  t0 (/ dis3 nn)  t0 (/ t0 2) t1 (+ t0 0.5)  t (fix t1)
  20.            )
  21.            (if (> nn t) (setq b nn m t) (setq m nn b t))
  22.            (setq bs (itoa b)  ms (itoa m)  diss0 (itoa dis0))
  23.            (setq str (strcat bs "X" ms "=" diss0))
  24.            (command "dim1" "newtext" str  sn "")
  25.            (setq wxn0 nn)
  26.          )
  27.        )
  28.        (princ (strcat str ";   "))
  29.      )
  30.      (princ "\n            gysjy0  96.8制作, 97.5修改.")
  31.      (setq *error* oer)
  32.      (princ))

  33. (defun c:ltdim1(/ ss nn ssl n sn en p1 p2 dis3 dis0 t0 t1 t b m bs ms dis00 str)
  34.    ;;全局变量: wxn0
  35.    (setq oer *error* *error* myerr)
  36.    (setvar "cmdecho" 0)
  37.    (command "graphscr")
  38.    (setq ss (ssget))
  39.    (if (= wxn0 nil) (setq wxn0 260))
  40.    (princ "\n步长或步数<") (princ wxn0)
  41.    (setq nn (getint ">:"))
  42.    (if (= nn nil) (setq nn wxn0))
  43.      (setq ssl (sslength ss) n 0)
  44.      (repeat ssl
  45.        (setq sn (ssname ss n) en (entget sn) n (1+ n))
  46.        (if (= "DIMENSION" (cdr (assoc 0 en)))
  47.          (progn
  48.            (setq p1 (cdr (assoc 13 en)) p2 (cdr (assoc 14 en))
  49.                  dis3 (distance p1 p2) dis0 (* 10 (fix (/ (+ dis3 4) 10)))
  50.                  t0 (/ dis3 nn)  t1 (+ t0 0.5)  t (fix t1)
  51.            )
  52.            (if (> nn t) (setq b nn m t) (setq m nn b t))
  53.            (setq bs (itoa b)  ms (itoa m)  diss0 (itoa dis0))
  54.            (setq str (strcat bs "X" ms "=" diss0))
  55.            (command "dim1" "newtext" str  sn "")
  56.            (setq wxn0 nn)
  57.          )
  58.        )
  59.        (princ (strcat str ";   "))
  60.      )
  61.      (princ "\n            gysjy0  96.8制作, 97.5修改.")
  62.      (setq *error* oer)
  63.      (princ))

  64. (defun myerr (s)
  65.   (if (/= s "Function canccelled")
  66.    (if (= (substr s 1 13) "null function")
  67.        (princ "\n该程序不能运行.") (princ "\n程序中止")
  68.    )
  69.   )
  70.   (setq *error* oer)
  71.   (princ))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-12-5 08:58:00 | 显示全部楼层
例如,你如果选择了标注值分别为1650和1800的相关标注,输入步长为150

我觉得输入踏步数更实用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-5 12:15:15 | 显示全部楼层
最初由 狂刀 发布
[B]例如,你如果选择了标注值分别为1650和1800的相关标注,输入步长为150

我觉得输入踏步数更实用 [/B]


输入踏步数的数字更简单,但对不同踏步数的几个相关标注不好同时选用,而输入步长可以达到这个目的。因此在使用中可以根据需要选用输入踏步数还是步长。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-18 11:35:22 | 显示全部楼层
楼主,我是CAD2004,使用中出错

命令: ltdim
; 错误: 要绑定的对象不正确: T
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-8-2 09:24:09 | 显示全部楼层
我是CAD2002,同样出错

命令: ltdim
; 错误: 要绑定的对象不正确: T
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-11-18 19:18:11 | 显示全部楼层
最初由 swhlzl 发布
[B]一点小疑问,程序是怎么舍入计算的,计算结果不对啊 [/B]


          程序是将要处理的尺寸长度除以输入的步长或踏步数,得到的商如果不是整数,则四舍五入后再归整。
    例如要处理的尺寸长度是1650,则1650 / 260=6.346,四舍五入归整后得到结果为6,于是出现了260X6=1650的情况。
    事实上,只要绘图正确,这种情况是不会出现的。因为你绘制的踏步实际宽度是275,你在使用该程序输入步长时就会输入275而不是260。另外,如果你输入踏步数,就会避免这个情况。例如你输入6,则程序给出275X6=1650。


最初由 zh_6531394 [ 发布
[B]出错?  
zh_6531394 附带了这个的图片 :
[/B]

请将程序中  (setq oer *error* *error* myerr)的语句
改为  (setq oer *error* *error* nil),执行该程序,将错误信息传上来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2007-10-14 12:06:54 | 显示全部楼层
非常实用,每次都要很麻烦的去修改尺寸,这下就方便了,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-18 19:58 , Processed in 0.486388 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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