找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 7851|回复: 23

[分享]:固定\恢复 标注文字值 的程序

[复制链接]
发表于 2003-12-18 13:02:46 | 显示全部楼层 |阅读模式

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

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

×
多比例图形混排时,需要放大一些图形,可是这些图形的中的尺寸值就会发生变化。这种情况下有的把尺寸炸开,有的把这部分图形做成块再放大,还有就是修改尺寸的线形比例,这些办法虽然可以解决问题,但都有不便之处。

试试这个 固定\恢复 标注文字值 。


  1.   [FONT=courier new]
  2. ;_2003.12.16.12.36__BY__WKAI__晓东CAD论坛
  3. ;>>FIXD    固定尺寸标注中的文字值
  4. (defun c:fixd (/ s sc e ee p1 p2 an an1 ang dis dis1 n)
  5.   (setq procision 0)
  6.   (setq s (ssget '((0 . "DIMENSION"))))
  7.   (setq sc (getreal "\n比例:"))
  8.   (if (not sc)
  9.     (setq sc 1)
  10.   )
  11.   (setq        n 0
  12.         e (ssname s n)
  13.   )
  14.   (while e
  15.     (if        (= "" (as 1 e))
  16.       (progn
  17.         (if (= (as 70 e) 32)
  18.           (progn
  19.             (setq an (as 50 e))
  20.             (setq p1 (as 13 e))
  21.             (setq p2 (as 14 e))
  22.             (setq an1 (angle p1 p2))
  23.             (setq ang (abs (- an1 an)))
  24.             (setq dis (* (cos ang) (distance p1 p2)))
  25.             (setq dis (* dis sc))
  26.             (setq dis (rtos dis 2 procision))
  27.             (setq dis (cons 1 dis))
  28.             (setq ee (subst dis (assoc 1 (entget e)) (entget e)))
  29.             (entmod ee)
  30.           )
  31.         )
  32.         (if (= (as 70 e) 33)
  33.           (progn
  34.             (setq p1 (as 13 e))
  35.             (setq p2 (as 14 e))
  36.             (setq dis (abs (distance p1 p2)))
  37.             (setq dis (* dis sc))
  38.             (setq dis (rtos dis 2 procision))
  39.             (setq dis (cons 1 dis))
  40.             (setq ee (subst dis (assoc 1 (entget e)) (entget e)))
  41.             (entmod ee)
  42.           )
  43.         )
  44.         (if (= (as 70 e) 35)
  45.           (progn
  46.             (setq p1 (as 10 e))
  47.             (setq p2 (as 15 e))
  48.             (setq dis (abs (distance p1 p2)))
  49.             (setq dis (* dis sc))
  50.             (setq dis (strcat "D=" (rtos dis 2 procision)))
  51.             (setq dis (cons 1 dis))
  52.             (setq ee (subst dis (assoc 1 (entget e)) (entget e)))
  53.             (entmod ee)
  54.           )
  55.         )
  56.         (if (= (as 70 e) 36)
  57.           (progn
  58.             (setq p1 (as 10 e))
  59.             (setq p2 (as 15 e))
  60.             (setq dis (abs (distance p1 p2)))
  61.             (setq dis (* dis sc))
  62.             (setq dis (strcat "R=" (rtos dis 2 procision)))
  63.             (setq dis (cons 1 dis))
  64.             (setq ee (subst dis (assoc 1 (entget e)) (entget e)))
  65.             (entmod ee)
  66.           )
  67.         )
  68.       )
  69.     )
  70.     (setq n (+ 1 n)
  71.           e (ssname s n)
  72.     )
  73.   )
  74. )
  75. ;>>FRED    恢复尺寸标注中的文字为默认值
  76. (defun c:fred (/ s n e ee)
  77.   (setq s (ssget '((0 . "DIMENSION"))))
  78.   (setq        n 0
  79.         e (ssname s n)
  80.   )
  81.   (while e
  82.     (setq ee (subst (cons 1 "") (assoc 1 (entget e)) (entget e)))
  83.     (entmod ee)
  84.     (setq n (+ 1 n)
  85.           e (ssname s n)
  86.     )
  87.   )
  88. )

  89. ((defun as (a b /)
  90.   (cdr (assoc a (entget b)))
  91. )  [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-12-18 13:43:46 | 显示全部楼层

Re: [分享]:固定\恢复 标注文字值 的程序

最初由 wkai 发布
[B]多比例图形混排时,需要放大一些图形,可是这些图形的中的尺寸值就会发生变化。这种情况下有的把尺寸炸开,有的把这部分图形做成块再放大,还有就是修改尺寸的线形比例,这些办法虽然可以解决问题,但都有不便之处。... [/B]


看了一下,编得不错!但如果尺寸是修改后的数值,程序会跳过,应增加判断一下!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-18 14:14:09 | 显示全部楼层

Re: Re: [分享]:固定\恢复 标注文字值 的程序

最初由 coolzhb 发布
[B]
如果尺寸是修改后的数值,程序会跳过,应增加判断一下!
[/B]


这么写有点原因,比如有些尺寸可能文字值已经改成了 "8等分" 或者其他什么,就不会受到这个程序的影响。

对于已经固定过的尺寸,如果想按新比例固定尺寸值,可以先恢复一下它们的尺寸值。
:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-22 00:39:05 | 显示全部楼层
加载程序,不能用,有以下提示:
命令: APPLOAD
已成功加载 FIXD.lsp。


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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-12-22 01:22:57 | 显示全部楼层

Re: [分享]:固定\恢复 标注文字值 的程序

最初由 wkai 发布
[B]多比例图形混排时,需要放大一些图形,可是这些图形的中的尺寸值就会发生变化。这种情况下有的把尺寸炸开,有的把这部分图形做成块再放大,还有就是修改尺寸的线形比例,这些办法虽然可以解决问题,但都有不便之处。... [/B]


你是算距离得出尺寸的,那么如果标注样式设了比例,不是1:100怎么办?

以前讨论过的,找找!
(r2002,可以直接看组码,r14就要向里查)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-22 02:29:43 | 显示全部楼层
看看我的固定,至于恢复嘛,不写也罢
(command ".dim" "new" "<>" )
;;其实以下程序有一个bug,是在一次偶然的情况下发现的.嘻嘻,先卖个关子,不知哪位能说出来:)
过几天写个更完善的.可以做总结版了

  1. ;;*** dmvl ==锁定dim标注数值-v2------陌生人.2002.11
  2. ;;v1.0 1999.2 v2.0 2002.11
  3. ;;v2.0 更改计算方法,加入考虑标注类型的比例因子 dimaltf; dimv取消,改名为dmvl(dim val lock)
  4. (princ "\ndmvl ==锁定dim标注数值-v2------陌生人.2002.11\n")
  5. ;;
  6. (defun c:dmvl (/ ss i ent e e1 e10 e13 p14 ang e13e e13p dist dimst st se271 se144 val)
  7. (princ "\ndmvl ==锁定dim标注数值-v2------陌生人.2002.11")
  8. (setq ss (ssget '((0 . "DIMENSION"))) i 0 )
  9. (repeat (sslength ss)
  10.   (setq ent (ssname ss i)
  11.         e (entget ent)
  12.         e1 (cdr (assoc 1 e))
  13.         e10 (cdr (assoc 10 e))
  14.         e13 (cdr (assoc 13 e))
  15.         e14 (cdr (assoc 14 e))
  16.         ang (angle e10 e14)
  17.         e13e (polar e13 (+ (/ PI 2)(angle e10 e14)) 100)
  18.         e13p (inters e13 e13e e10 e14 nil)
  19.         dist (distance e13 e13p)
  20.         dimst (cdr (assoc 3 e))
  21.         st (tblsearch "dimstyle" dimst) ;;搜索符号表
  22.         se271 (cdr (assoc 271 st))  ;;得到小数位
  23.         se144 (cdr (assoc 144 st))  ;;数字比例因子
  24.         val (* se144 dist)          ;;乘积为默认标注数值
  25.         val (rtos val 2 se271) ;;转为字符
  26.         i (1+ i)
  27.   )
  28.   (if (or (= "" e1)(wcmatch e1 "*<>*")) ;;<>是必须的判断!
  29.      (progn
  30.        (setq e (subst (cons 1 val) (assoc 1 e) e))
  31.        (entmod e)
  32.        (entupd ent)
  33.      )
  34.   );if
  35. );end repeat
  36. (princ)
  37. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-22 03:38:07 | 显示全部楼层

Re: [分享]:固定\恢复 标注文字值 的程序

最初由 wkai 发布
[B]多比例图形混排时,需要放大一些图形,可是这些图形的中的尺寸值就会发生变化...[/B]


另类思维:
还是1:1的在模型空间画图为好. 如果你需要不同比例的出图, 可以在图纸空间设立不同比例, 不同DIMSACLE的视区
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-22 09:07:26 | 显示全部楼层
最初由 陌生人 发布
[B]看看我的固定,至于恢复嘛,不写也罢
(command ".dim" "new" "<>" )
;;其实以下程序有一个bug,是在一次偶然的情况下发现的.嘻嘻,先卖个关子,不知哪位能说出来:)
过几天写个更完善的.可以做总结版了
[/B]


我发现你程序中的bug了:当标注的第一和第二点的Z坐标不同时,你的程序不能修改尺寸值!因为inter的交点求不到!不知道您说的bug是不是这个!我也是偶尔发现的!

不过这个bug很容易解决,加一句话即可!修改后的程序如下


  1.   [FONT=courier new]
  2. (defun c:dmvl (/ ss i ent e e1 e10 e13 p14 ang e13e e13p dist dimst st se271 se144 val)
  3. (princ "\ndmvl ==锁定dim标注数值-v2------陌生人.2002.11")
  4. (setq ss (ssget '((0 . "DIMENSION"))) i 0 )
  5. (repeat (sslength ss)
  6.   (setq ent (ssname ss i)
  7.         e (entget ent)
  8.         e1 (cdr (assoc 1 e))
  9.         e10 (cdr (assoc 10 e))
  10.         e13 (cdr (assoc 13 e))

  11.         e13 (list (car e13) (cadr e13) (caddr e10))  
  12.                 ;;解决此bug的语句 Modified by coolzhb

  13.         e14 (cdr (assoc 14 e))

  14.         e14 (list (car e14) (cadr e14) (caddr e10))  
  15.                 ;;解决此bug的语句 Modified by coolzhb
  16.         
  17.         ang (angle e10 e14)
  18.         e13e (polar e13 (+ (/ PI 2)(angle e10 e14)) 100)
  19.         e13p (inters e13 e13e e10 e14 nil)
  20.         dist (distance e13 e13p)
  21.         dimst (cdr (assoc 3 e))
  22.         st (tblsearch "dimstyle" dimst) ;;搜索符号表
  23.         se271 (cdr (assoc 271 st))  ;;得到小数位
  24.         se144 (cdr (assoc 144 st))  ;;数字比例因子
  25.         val (* se144 dist)          ;;乘积为默认标注数值
  26.         val (rtos val 2 se271) ;;转为字符
  27.         i (1+ i)
  28.   )
  29.   (if (or (= "" e1)(wcmatch e1 "*<>*")) ;;<>是必须的判断!
  30.      (progn
  31.        (setq e (subst (cons 1 val) (assoc 1 e) e))
  32.        (entmod e)
  33.        (entupd ent)
  34.      )
  35.   );if
  36. );end repeat
  37. (princ)
  38. )

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

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

使用道具 举报

发表于 2003-12-25 10:39:16 | 显示全部楼层
最初由 陌生人 发布
[B]看看我的固定,至于恢复嘛,不写也罢
(command ".dim" "new" "<>" )
;;其实以下程序有一个bug,是在一次偶然的情况下发现的.嘻嘻,先卖个关子,不知哪位能说出来:)
过几天写个更完善的.可以做总结版了
[code]
;;***... [/B]



;;陌生人:程序對 圓 & 弧 & 角度 皆不對

;;看來曉東大部份網友是做建築的,要知道機械上尺寸都會帶公差,在沒有VLISP(R14)時代,
;;修改尺寸(各種系統變數_如:比例 顏色....)要保有不同的公差很麻煩(可以說困難),更別談還原
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-3-4 15:57:08 | 显示全部楼层
不是吧,楼主们!就没有一人能帮助我们这些LISP盲们整理一下吗?
好的东西当然要发扬光大,但是我们不懂呀,也想用用楼主们的东东呀,怎么办呢?
求求整理一下吧!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-4 17:18:32 | 显示全部楼层
鼓励自己动手!其实很简单,智商>30的都可以做到
方法是:
将程序段,即选取以“(defun ”开始 到 最后一个“)” 部分,鼠标右键“复制”,打开任何一文本编辑程序(如,winpad, uedit等),新建一个文档,粘贴,保存为*.lsp 文件(直接输入后缀).
* 即 (defun c:xxx ()...) 中的xxx。
如8楼的帖子,保存为 dmvl.lsp 文件。
在cad中用 菜单 工具/加载应用程序,加载。也可以在acad*.lsp中加载(详有关帖子,已经有很多这样的帖子)
如果只是简单测试:可以拷贝程序段后,在cad命令行中用粘贴命令。即完成加载。可立即输入命令(defun c:后的字符串)调用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-5 14:34:09 | 显示全部楼层
隔行如隔山哪,机械图也有不同比例;尺寸,文字也有不同大小。看来各自有各自的需求,罗卜白菜各有所爱!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 07:09 , Processed in 0.342351 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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