找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: gysjy

[原创]:一个批量改标高的程序

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

使用道具 举报

 楼主| 发表于 2009-1-19 19:02:14 | 显示全部楼层
最初由 zh_6531394 发布
[B]楼主,还是每次只能改一个.我把改的发上来,麻烦你帮忙看,谢谢 [/B]

[PHP](defun to(n)
  (cdr (assoc n (entget sn)))
)
(princ "\n欢迎使用批量改标高程序!命令名:bbg   == GYSJY  2008.12.24 ==")
(defun c:bbg( / blip e1 en n sn ss tr1 x  y1)
  (command "undo" "g")
  (setq blip (getvar "blipmode"))
  (setvar "blipmode" 0)   
  (setq n 0 bgaoy0 (if bgaoy0 bgaoy0 -0.05)
        ss (ssget '((-4 . "<OR")(-4 . "<AND")(0 . "TEXT")(8 . "PUB_DIM")(-4 . "AND>")
                    (-4 . "<AND")
                    (0 . "INSERT")
                    (-4 . "<OR")(2 . "$BG-R")(2 . "BG")(-4 . "OR>")
                    (-4 . "AND>")(-4 . "OR>"))
           )        
  )
  (princ "\n新旧标高差<")(princ bgaoy0)
  (setq x (getreal ">:")         
        y (if x x bgaoy0) bgaoy0 y
  )
  (if ss
    (progn
      (princ "\n旧,新标高分别为:")
      (repeat (sslength ss)
        (setq sn (ssname ss n) en (entget sn) n (1+ n)
        )
        (if (= (to 0) "TEXT")
          (progn
            (setq y0 (to 1) y1 y0)
            (if (eq (substr y1 1 1) "(")
              (setq y1 (substr y1 2) tr1 "(" )
              (setq tr1 nil)
            );处理带括号的标高           
            (setq y (if (or (eq y1  "%%P0.000") (eq y1 "%%p0.000")) 0.0 (atof y1))                                      
                  y (+ y bgaoy0) y (if (= y 0.0) "%%p0.000" (rtos y 2 3))
                  y (if tr1 (strcat tr1 y ")") y)                 
            )
            (setq e1 (subst (cons 1 y) (assoc 1 en) en))
            (entmod e1)
          )
          (progn;处理属性块中的标高
            (setq e1 (entget (entnext (cdr (car en))))               
                  y1 (assoc 1 e1) y3 y1 y1 (cdr y1)
                  y (if (eq y1 "%%p0.000") 0.0 (distof y1)) y (+ y bgaoy0)
                  y (if (= y 0.0) "%%p0.000" (rtos y 2 3))           
                  e1 (subst (cons 1 y)(assoc 1 e1) e1)               
            )
            (entmod e1);;修改属性;
            (entmod en);;修改实体
          )
        );(if (= (to 0) "TEXT")
      (princ (strcat y1 " " y ",  "))
      );repeat
    )
  )
  (setvar "blipmode" blip)
  (command "undo" "e")
  (princ)
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2009-1-20 12:21:40 | 显示全部楼层
最初由 zh_6531394 发布
[B]都解决了,但%%p0.000还不行 [/B]

[PHP](defun to(n)
  (cdr (assoc n (entget sn)))
)
(princ "\n欢迎使用批量改标高程序!命令名:bbg   == GYSJY  2008.12.24 ==")
(defun c:bbg( / blip e1 en n sn ss tr1 x  y1)
  (command "undo" "g")
  (setq blip (getvar "blipmode"))
  (setvar "blipmode" 0)   
  (setq n 0 bgaoy0 (if bgaoy0 bgaoy0 -0.05)
        ss (ssget '((-4 . "<OR")(-4 . "<AND")(0 . "TEXT")(8 . "PUB_DIM")(-4 . "AND>")
                    (-4 . "<AND")
                    (0 . "INSERT")
                    (-4 . "<OR")(2 . "$BG-R")(2 . "BG")(2 . "BGZ")(-4 . "OR>")
                    (-4 . "AND>")(-4 . "OR>"))
           )        
  )
  (princ "\n新旧标高差<")(princ bgaoy0)
  (setq x (getreal ">:")         
        y (if x x bgaoy0) bgaoy0 y
  )
  (if ss
    (progn
      (princ "\n旧,新标高分别为:")
      (repeat (sslength ss)
        (setq sn (ssname ss n) en (entget sn) n (1+ n)
        )
        (if (= (to 0) "TEXT")
          (progn
            (setq y0 (to 1) y1 y0)
            (if (eq (substr y1 1 1) "(")
              (setq y1 (substr y1 2) tr1 "(" )
              (setq tr1 nil)
            );处理带括号的标高           
            (setq y (if (or (eq y1  "%%P0.000")(eq y1 "%%p0.000")(eq y1 "±0.000")) 0.0 (atof y1))                                      
                  y (+ y bgaoy0) y (if (= y 0.0) "%%p0.000" (rtos y 2 3))
                  y (if tr1 (strcat tr1 y ")") y)                 
            )
            (setq e1 (subst (cons 1 y) (assoc 1 en) en))
            (entmod e1)
          )
          (progn;处理属性块中的标高
            (setq e1 (entget (entnext (cdr (car en))))               
                  y1 (assoc 1 e1) y3 y1 y1 (cdr y1)
                  y (if (or (eq y1  "%%P0.000")(eq y1 "%%p0.000")(eq y1 "±0.000")) 0.0 (distof y1))
                  y (+ y bgaoy0) y (if (= y 0.0) "%%p0.000" (rtos y 2 3))           
                  e1 (subst (cons 1 y)(assoc 1 e1) e1)               
            )
            (entmod e1);;修改属性;
            (entmod en);;修改实体
          )
        );(if (= (to 0) "TEXT")
      (princ (strcat y1 " " y ",  "))
      );repeat
    )
  )
  (setvar "blipmode" blip)
  (command "undo" "e")
  (princ)
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2009-2-11 10:51:54 | 显示全部楼层
楼主你好!有些地方没有看懂,你的lisp怎么没有注释啊?
还有一个问题?你是如何得到属性块的的信息,以及应该如果修改属性块的内容,比如将一个圆和其中的字PI0203做成属性块,如何修改他的文字内容,并将圆剔除出选择集呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2009-2-17 12:28:17 | 显示全部楼层
最初由 fl202 发布
[B]楼主你好!有些地方没有看懂,
你是如何得到属性块的的信息,以及应该如果修改属性块的内容,比如将一个圆和其中的字PI0203做成属性块,如何修改他的文字内容,并将圆剔除出... [/B]

提取属性:

  1.   [FONT=courier new]

  2.         (setq sn (entsel "\n点取物体:")  sn (car sn) en (entget sn))
  3.         (setq e1  (entget (entnext (cdr (car en))))
  4.               tr0 (cdr (assoc 1 e1))
  5.         );;提取属性

  6.   [/FONT]

修改属性:

  1.   [FONT=courier new]
  2.   (setq tr (getstring "\n输入新属性:")
  3.         e1 (subst (cons 1 tr) (assoc 1 e1) e1)
  4.   )
  5.   (entmod e1)(entmod en)
  6.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2009-4-8 21:06:35 | 显示全部楼层
这个程序非常有用,有时候差不多的图纸还得一个一个的改,下来试试
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2009-4-11 21:53:48 | 显示全部楼层
谢谢。我有一个qq号,但久已不用。如有什么问题,可发Email,gysjy0@163.com。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2009-5-19 16:17:03 | 显示全部楼层
加载了,但在使用时找不到对象,不知道程序对标高有什么要求,我的标高是自己画的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 21:43 , Processed in 0.220571 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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