近年来,各种培训机构、公众号,都在呼吁大家学python,演示了各种花哨的功能,看着都很高大上的样子,然并卵,跟我们实际工作没有太大的关系。
本人学Python很长时间了,主要用于处理GIS数据,自动化航拍处理流程,研究深度学习这些工作,虽然是未来设计的必然趋势,但是跟我们目前的日常工作关系也不大,因此就没有忽悠大家学Python。
不过近期通过Python解决了一些我们日常工作的小问题,想拿出来聊聊,做成一个系列的文章,看看能否把大家忽悠瘸了。
今天先拿一个很简单的案例来忽悠:

项目做到一半,来了一版新的测绘图,发现标高变了,统一抬高或者降低了一定的高程,怎么办?总平竖向都定好了,标注了几百个标高,让我怎么改?查找替换?能实现增加前缀后缀这些,但是实现不了数字加减一定的值。
相信很多人遇到过类似的问题,怎么解决?Python。
用PyAutocad包即可实现这一目的,下面是代码:
#导入包,创建autocad实例
from pyautocad import Autocad,APoint
acad = Autocad(create_if_not_exists = True)
acad.prompt('Hello,Autocad from Python\n')
#循环所有天正标高,所有标高数字都增加10000
for obj in acad.iter_objects('TDbSymbElevation'):
t = obj.Text
if t.endswith('&%%P0.000'):
obj.Text = obj.Text.replace('&%%P0.000','')
if t.endswith('.'):
obj.Text = obj.Text.replace('.','')
obj.Text = str(float(obj.Text) + 10000)
运行,效果如下:

So easy,你会读了么?
补充:在本文发布后,有好多小伙伴发来消息,整理如下:
1、通过动态标注,移动所有标高,即可调整标高数值,何苦还要写代码?
回复:这就跟那个段子一个道理:如何检查空箱子?博士研究各种探测装置,工人用大风扇吹。貌似用风扇简单省事,研究探测装置纯粹浪费,但是一旦条件发生变化,简单的方法就会失效了,而高科技探测装置调整一下参数还可以达到目的。比如,检查的不是空箱子,而是没装满的箱子,你的大风扇还能吹走么?
具体到这个案例来,就是我们景观设计的标高往往习惯标注一些前缀:TW(Top of wall,墙顶标高),FL(Finish Level,完成面标高),你试试有了这些前缀后,你再开启动态标准,移动标高标注还有用么?这段代码我可以再增加个判断,先拆离前缀,最后在组合起来就可以了,能够根据需求,完成各种复杂的操作。
2、能否只局部抬高或者降低?
回复:可以的,有get.selection(),可以只对选中的部分进行操作。调整代码封装为函数,可以很方便的调整高程的增量,快速应用到不同的区域。
3、那么快做完 ,下面的人画什么呢?
回复:写代码只是解决简单重复的劳动,需要创意的工作还是要靠人来进行,因此不会影响设计师的成长。相反,从简单重复的劳动中解脱出来,更多的世界来思考设计,更有利于设计师的成长。





确定后弹出提示,可以重启cad,也可以直接输入命令reinit,
就可以应用。
DWG convert,即可转换低版本,免费的查看器,下载链接也放