明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6187|回复: 12

急求:把图上的高程加或减一个常数

  [复制链接]
发表于 2004-7-22 15:31:00 | 显示全部楼层 |阅读模式
我的图纸上的高程数据因为高程系统的问题要把所有的高程加一个常数,怎样才能批量选取文字注记里的数字,然后在加或减一个常数那?
发表于 2004-7-22 16:47:00 | 显示全部楼层
“批量“是指的全图的高程标注,还是局部?
发表于 2004-7-23 02:28:00 | 显示全部楼层
本帖最后由 作者 于 2004-7-24 9:41:09 编辑

;;;高程增减 gczj
(defun c:gczj(/ la ss n old old-nb new-nb new s1)
(Setvar "Cmdecho" 0)
(COMMAND "UNITS" "2" "3" "1" "3" "0" "N");;确保小数点后保留3位数,3改为4即为4位,自定
(setq la (ddxf 8 (entsel"\n\t任选一高程 :")));;保证只改变某层数值
(setq ss (ssget "X" (list(cons 0 "TEXT")(cons 8 la))));;
;(setq ss (ssget (list(cons 0 "TEXT")(cons 8 la))));;如果是局部有错,利用此句可以自行选择
(setq no1 (ureal 1 "" "\n\t增减值" no1)
n 0
);;数值为负数时需加负号-
(if (= no1 nil)(setq no1 0))
(while (setq s1 (ssname SS n))
(SETQ OLD (ASSOC 1 (entget S1)))
(setq old-nb (atof (dxf-s1 1 s1)))
(setq new-nb (rtos (+ old-nb no1) 2))
(SETQ NEW (CONS 1 new-nb))
(SETQ S1 (SUBST NEW OLD (entget S1)))
(ENTMOD S1)
(setq n (+ 1 n))
)
(Setvar "Cmdecho" 1)
(princ)
);defun
(defun dxf (code elist) (cdr (assoc code elist)))
(defun dxf-s1(code elist) (dxf code (entget elist)))
(defun ddxf (code elist) (dxf code (entget (car elist))))
(defun ureal (bit kwd msg def / inp)
;(jchf)此处有问题,原本是作加密用的
(if def
(setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
bit (* 2 (fix (/ bit 2)))
)
(setq msg (strcat "\n" msg ": "))
)
(initget bit kwd)
(setq inp (getreal msg))
(if inp inp def)
)
如果用得不错,送夺鲜花!

本帖子中包含更多资源

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

x

评分

参与人数 1威望 +1 金钱 +1 收起 理由
zfbj + 1 + 1 【好评】好程序

查看全部评分

 楼主| 发表于 2004-7-26 08:56:00 | 显示全部楼层
谢谢xyp1964的帮助!你给的这个程序很好用,就是在个别高程修改的时候有错误,不知道是不是我不会用,还有就是在批量修改的时候,如果同层里还有文字注释的话,会把文字注释修改成增减的数值了!
 楼主| 发表于 2004-7-26 08:59:00 | 显示全部楼层
wangzhong你好!批量有时候是全部,有时候是局部的.一般的时候是高程系统改变,要全部修改,可是有次我们干到一半的时候甲方竟然说开始提供的高程是错误的,这样半个工程的高程数据就是错误的了,所以有时候也会是局部错误的. 谢谢你的关注.
发表于 2004-7-27 01:47:00 | 显示全部楼层
cxs98发表于2004-7-26 8:56:00谢谢xyp1964的帮助!你给的这个程序很好用,就是在个别高程修改的时候有错误,不知道是不是我不会用,还有就是...


我确实没考虑到会有这种情况。


一般来说,既然是高程就应该是数字形式,除非在最后文件处理时操作人员在这一层上写进了非数字型的文本。


可以在程序中增加判断非数字型文本的语句。


请自己动手修改。
发表于 2004-7-27 09:56:00 | 显示全部楼层
要修改的高程一般有以下属性:


1、高程注记、数字组成。


2、表示三维位置的点,既由point命令绘制的既有坐标又有高程的点。


3、它们可以有不同的颜色和不同的层。


你说的问题本人亦经常遇到,一般处理的方法有两种:


1、用pl命令画一多边形、把需要修改的高程圈入多边形内,只修改多边形内的点,其他点不受影响,把点的高程属性及标注进行修改。


2、全图修改、修改上述1的全部内容。
发表于 2004-7-27 20:13:00 | 显示全部楼层
真象楼主说的“有次我们干到一半的时候甲方竟然说开始提供的高程是错误的”这种现象发生,劝楼主还是别用程序修改,就是用也不能让甲方知道,否则既增加不了设计费,甲方还会觉得这么容易修改,说不定还会出什么幺蛾子呢!


呵呵……
发表于 2004-7-29 07:58:00 | 显示全部楼层
请csx98回答本人提出的三个问题!
发表于 2004-8-18 16:15:00 | 显示全部楼层
请参见 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=24105 《不同高程系统的转换程序》(免费)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-28 09:26 , Processed in 0.183760 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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