python教材上的大于符号_结构工程python小课堂index[0]

    最近几年,大有“三百六十行,行行转IT”之势,其中最火的语言,非Python莫属。

    朋友圈里三天两头会出现“Python训练营”这样的广告,广告词是这样的:会Python的人,工作都不会太差。下面还有小伙伴们的神评论。姜工认为最亮的评论如下:会Python的人,头发都不会太多。。。06938c27d953a0ba07d191248d8ffeb7.png06938c27d953a0ba07d191248d8ffeb7.png06938c27d953a0ba07d191248d8ffeb7.png

    传说不想当程序猿的画图狗不是好攻城狮,姜工这两年从一本Head First Python开始读起,然后没刹住车。。。当能利用Python来解决日常结构设计工作中的问题时,特别是当看到一个for循环语句治好了我多年的。。。咳。咳。。重复性劳动时,姜工感动地内牛满面。

    所以准备写一个系列博客,来介绍Python在结构工程中的应用,同时也希望有高手看到可以指点一二。

    姜工准备尽量用简短的、易读懂的、稍加更改便可复用的代码,来展示问题的解决方案,争取让不了解Python的人也可以复制粘贴来解决类似的问题。但估计不可避免的还是会出现一些涉及Python语法、数据结构等的情况,所以有兴趣者可以读一读Head First Python这本书。P.S.  亲自鉴定,这本书不叫《Python从入门到放弃》


    好,下面我们正式开始:

    为什么是Python?Python近几年可谓炙手可热,从数据分析、科学计算,到爬虫、web开发,再到机器学习,各种应用层出不穷。

    除了类似于numpy这种数值计算神库的助攻外,python有着:

  • 简单、灵活、类似于英语的语法

  • 庞大、活跃的开源社区

  • 大量好用的标准库及不计其数的第三方库

    完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。对于大量非科班程序猿出身的人来说,Python无疑可以大幅降低入门门槛,提高解决问题的效率。至于语言性能带来的计算时间差,姜工相信C语言的0.001秒和Python的0.1秒,对于绝大部分人来说没有区别。


    关于python在结构工程中的应用,姜工研究了CAD制图及数据提取、桩基批量计算、数据可视化、SAP2000/YJK后处理等。

    下面简单罗列一些已开发的工具:

钢结构-平面线型转换自动化程序

主要功能:

  • 如下图所示,可将平面线图,根据梁柱类型自动生成图纸

    • 主要逻辑:

      • 柱内的主次梁线会自动切掉

      • 次梁遇到主梁会自动打断

      • 主梁会增加两端刚接符号

      • 次梁为两端铰接符号

效果如下:

aa744160bef7993a62cef2fcba8d6ca6.png            

73800293193dfc510994766222b4eb80.png

等高线云图

6dd4d65fc51d86d1d331564d3bca7031.png

桩基计算

08242445cc43e7552fb7b76646778ff7.png


    结构攻城狮,每天都要和CAD打交道,AutoCAD虽然有很多好用的功能和命令,但仍然无法避免要手工做很多重复性的绘制工作。上面提到的钢结构梁平面图就是一个,需要手动画一根根pline线、再手动加刚铰接符号。而利用程序,只需简单的画一些支线,鼠标点一下,一张梁平面图就自动生成了。

    今天姜工先从最简单的Python操纵CAD文件开始介绍,以后慢慢再介绍类似于生成梁平面图的那些复杂的算法和功能。

    谈到CAD,大家默认的就是AutoDesk公司的AutoCAD,其文件格式是dwg。很可惜,dwg是AutoDesk公司私有的数据格式,其它软件理论上是不可以读取的(ODA公司对其进行了逆向工程,但这是后话),所以Python不借助AutoCAD软件是不能读取、操纵dwg文件的。利用pyautocad库,可以在AutoCAD软件的基础上操纵,但是AutoCAD体型巨大、且版本较多,编程体验相当不好。

    令人欣喜的是,Manfred Moitzi大神编写了ezdxf这个第三方库,可以读取、操纵dxf格式的文件,且文档详细。大神本人也很nice,之前几次邮件请教,都是很快就给了回复。上面编写的钢结构梁平面程序就是基于这个库的实现。

    下面简单介绍Python和第三方包的安装,及几个基于ezdxf库绘制CAD图纸的简单功能:

    Python主要分为Python2和Python3两个版本,互相不兼容,姜工建议采用Pyhton3。在python.org下载安装包安装即可,考虑到兼容性,建议大家选择Python3.6,毕竟以后介绍的机器学习pytorch、TensorFlow等库对3.7和3.8可能还没有完全支持。

    Python安装好以后,就要安装第三方库了,很抱歉,从现在开始大家要使用命令行了,Windows打开cmd,Mac打开Terminal,输入

pip install ezdxf

执行完毕后,ezdxf库就安装好了。

绘图任务是,在(0,0)(100,0) (200,0) (300,0)四个坐标上分别画5,10,15,20半径的四个圆。

好,我们开始码代码,请打开Python的IDlE,输入:

import ezdxfdwg = ezdxf.new()msp = dwg.modelspace()

这样图纸创建完毕了,dwg代表图纸,msp代表图纸空间。

下面开始画圆,输入:

msp.add_circle((0,0),radius=5)msp.add_circle((100,0),radius=10)msp.add_circle((200,0),radius=15)msp.add_circle((300,0),radius=20)

如果你对python语法熟悉的话,同样四个圆,甚至N个圆都可以两行代码解决:

for i in range(1,5):    msp.add_circle((100 * i ,0),radius= 5 * i)

现在四个圆已经画好了,你肯定要问在哪?在内存里。。。好吧,让我们把图纸保存下载,命名为test.dxf好了,输入:

dwg.saveas('test.dxf')

然后看一下文件夹:

95805e32a6669add4ae2cf7e953d305e.png

看,图纸已经在这了。

我们打开看一下。

a31808e5a6a46d2e3a7fb952be479de5.png

四个圆,完美!

你肯定会说,我们多数的时候是改图或者是从图纸里获取信息。好的,那么我们再新写一段代码:

目标,把刚才的四个圆,半径大于12的改成红色,并在圆心处写上BIG,字高为5。

打开我们刚才的test.dxf

import ezdxfdwg = ezdxf.readfile('test.dxf') #这一步是读取msp = dwg.modelspace()

下面开始处理文件

circles = msp.query('CIRCLE') #找到所有圆for each in circles:          #遍历circles,对每个元素执行    center = each.dxf.center  #圆心坐标    if each.dxf.radius > 12:  #如果半径大于12        each.dxf.color = 1    #把颜色设为1        text = msp.add_text('BIG').set_pos(center)  #圆形处写上BIG        text.dxf.height = 5  #字高定为半径 dwg.save()   #保存文件

在打开test.dxf看一下:

62e19d2fabfb9f719c8356ec46a0f21f.png

完美!

好了,今天先介绍到这里,希望大家对ezdxf库有了初步的了解,大家如果有兴趣可以自己手敲一遍以上的代码,相信一定会有更深的理解。

未完待续。不定时更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值