cxs98 发表于 2004-7-22 15:31:00

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

我的图纸上的高程数据因为高程系统的问题要把所有的高程加一个常数,怎样才能批量选取文字注记里的数字,然后在加或减一个常数那?

wangzhong 发表于 2004-7-22 16:47:00

“批量“是指的全图的高程标注,还是局部?

xyp1964 发表于 2004-7-23 02:28:00

本帖最后由 作者 于 2004-7-24 9:41:09 编辑 <br /><br /> ;;;高程增减 gczj<BR>(defun c:gczj(/ la ss n old old-nb new-nb new s1)<BR>       (Setvar "Cmdecho" 0)<BR>       (COMMAND "UNITS" "2" "3" "1" "3" "0" "N");;确保小数点后保留3位数,3改为4即为4位,自定<BR>       (setq la (ddxf 8 (entsel"\n\t任选一高程 :")));;保证只改变某层数值       <BR>       (setq ss (ssget "X" (list(cons 0 "TEXT")(cons 8 la))));;<BR>       ;(setq ss (ssget (list(cons 0 "TEXT")(cons 8 la))));;如果是局部有错,利用此句可以自行选择<BR>       (setq no1 (ureal 1 "" "\n\t增减值" no1)<BR>        n 0<BR>        );;数值为负数时需加负号-<BR>       (if (= no1 nil)(setq no1 0))<BR>       (while (setq s1 (ssname SS n))<BR>                       (SETQ OLD (ASSOC 1 (entget S1)))<BR>                       (setq old-nb (atof (dxf-s1 1 s1)))<BR>                       (setq new-nb (rtos (+ old-nb no1) 2))<BR>                       (SETQ NEW (CONS 1 new-nb))<BR>                       (SETQ S1 (SUBST NEW OLD (entget S1)))<BR>                       (ENTMOD S1)<BR>                       (setq n (+ 1 n))<BR>                       )<BR>       (Setvar "Cmdecho" 1)<BR>       (princ)<BR>       );defun



<BR>(defun dxf (code elist) (cdr (assoc code elist)))<BR>(defun dxf-s1(code elist) (dxf code (entget elist)))<BR>(defun ddxf (code elist) (dxf code (entget (car elist))))<BR>(defun ureal (bit kwd msg def / inp)<BR>       ;(jchf)此处有问题,原本是作加密用的<BR>       (if def<BR>                       (setq msg (strcat "\n" msg "&lt;" (rtos def 2) "&gt;: ")<BR>                                                                       bit (* 2 (fix (/ bit 2)))<BR>                       )<BR>                       (setq msg (strcat "\n" msg ": "))<BR>       )<BR>       (initget bit kwd)<BR>       (setq inp (getreal msg))<BR>       (if inp inp def)<BR>       )<BR>


如果用得不错,送夺鲜花!


cxs98 发表于 2004-7-26 08:56:00

谢谢<A name=37072><FONT color=#000066><B>xyp1964</B></FONT></A>的帮助!你给的这个程序很好用,就是在个别高程修改的时候有错误,不知道是不是我不会用,还有就是在批量修改的时候,如果同层里还有文字注释的话,会把文字注释修改成增减的数值了!

cxs98 发表于 2004-7-26 08:59:00

<A name=36946><FONT color=#000066><B>wangzhong</B></FONT></A>你好!批量有时候是全部,有时候是局部的.一般的时候是高程系统改变,要全部修改,可是有次我们干到一半的时候甲方竟然说开始提供的高程是错误的,这样半个工程的高程数据就是错误的了,所以有时候也会是局部错误的.


谢谢你的关注.

xyp1964 发表于 2004-7-27 01:47:00

cxs98发表于2004-7-26 8:56:00static/image/common/back.gif谢谢xyp1964的帮助!你给的这个程序很好用,就是在个别高程修改的时候有错误,不知道是不是我不会用,还有就是...


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


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


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


请自己动手修改。

wangzhong 发表于 2004-7-27 09:56:00

要修改的高程一般有以下属性:


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


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


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


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


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


2、全图修改、修改上述1的全部内容。

xyp1964 发表于 2004-7-27 20:13:00

真象楼主说的“有次我们干到一半的时候甲方竟然说开始提供的高程是错误的”这种现象发生,劝楼主还是别用程序修改,就是用也不能让甲方知道,否则既增加不了设计费,甲方还会觉得这么容易修改,说不定还会出什么幺蛾子呢!


呵呵……

wangzhong 发表于 2004-7-29 07:58:00

请csx98回答本人提出的三个问题!

zxj_76 发表于 2004-8-18 16:15:00

请参见


<A href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=24105" target="_blank" >http://bbs.mjtd.com/forum.php?mod=viewthread&tid=24105</A>


《不同高程系统的转换程序》(免费)
页: [1] 2
查看完整版本: 急求:把图上的高程加或减一个常数