找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 595|回复: 0

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

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

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

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

×
;| 用途:修改尺寸标注为楼梯标注形式。例如,你如果选择了标注值分别为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豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-18 23:27 , Processed in 0.378536 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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