使用Python操作CAD的dxf文件,批量绘制变形图的方法记录
使用Python的ezdxf包,结合excel表中的坐标数据,绘制了变形图,表格,代码,结果如下:
DK41+175 | 左上偏距 | 左上高程 | 拱顶偏距 | 拱顶高程 | 右上偏距 | 右上高程 | |
422 | 上导第二层拱架完成 | -4.1500 | 432.7640 | 2.5360 | 436.0970 | 8.9410 | 432.9830 |
502 | 中左 | -4.2250 | 431.6110 | 2.463 | 435.5420 | 8.8860 | 432.4800 |
505 | 中右 | -4.2250 | 431.4890 | 2.463 | 435.4140 | 8.8860 | 432.3400 |
513 | 下左 | -4.0050 | 431.7810 | 2.4640 | 435.2430 | 8.8730 | 432.1680 |
513 | 下右 | -4.0050 | 431.7810 | 2.4640 | 435.2430 | 8.8730 | 432.1680 |
524 | 仰拱开挖 | -4.2020 | 431.4900 | 2.4450 | 435.1350 | 8.8580 | 432.0360 |
521 | 仰拱施作 | -4.2030 | 431.4980 | 2.4460 | 435.1440 | 8.8580 | 432.0450 |
521 | 仰拱填充 | -4.2030 | 431.4980 | 2.4460 | 435.1440 | 8.8580 | 432.0450 |
桩号 | DK41+170 | 左上偏距 | 左上高程 | 拱顶偏距 | 拱顶高程 | 右上偏距 | 右上高程 |
423 | 上导第二层拱架完成 | -4.0000 | 433.1260 | 2.5180 | 436.2240 | 9.1580 | 432.7990 |
505 | 中左 | -3.9280 | 432.5530 | 2.5150 | 435.8470 | 9.1480 | 432.3630 |
511 | 中右 | -3.9030 | 432.3970 | 2.4950 | 435.6880 | 9.1780 | 432.2580 |
517 | 下左 | -3.8920 | 432.0230 | 2.4530 | 435.3750 | 9.1740 | 432.0220 |
518 | 下右 | -3.9560 | 432.1540 | 2.4510 | 435.3440 | 9.1740 | 431.9920 |
519 | 仰拱开挖 | -3.9540 | 432.1070 | 2.4480 | 435.3050 | 9.1690 | 431.9590 |
525 | 仰拱施作 | -3.9500 | 432.0610 | 2.4490 | 435.2300 | 9.1650 | 431.8980 |
526 | 仰拱填充 | -3.9480 | 432.0580 | 2.4460 | 435.2250 | 9.1610 | 431.8940 |
import ezdxf
import xlrd
from ezdxf import mathleft_x_list = [] #左上list,拱顶list,右上list,每个断面有8组数据
left_y_list = []
top_x_list=[]
top_y_list=[]
right_x_list=[]
right_y_list=[]duan_mian_shu = 2 #在此规定断面数
duan_mian_list = ['DK41+175','DK41+170']top_origin_y = [] #拱顶初始预留沉降量list,每个断面有一个数据color_index=[150,130,110,70,50,40,30,10] #ACI 颜色参数,分别用于表示8个阶段gap = 10 #计算表格中两个表的纵向间隔
table = xlrd.open_workbook('/Volumes/MAC_DATA/张吉怀隧道软岩大变形[更新]/邓家坡资料/五工区1#横洞量测数据/一计算表.xlsx')
sheet = table.sheet_by_name('Sheet2')title_location=(-4,420) #绘图title位置a= math.ConstructionArc() #实例化ConstructionArc类的对象,用于使用其 3点画弧线 方法for j in range(0,duan_mian_shu):doc = ezdxf.readfile('OriginDxf.dxf')msp = doc.modelspace()left_x_list.clear() #j表示每个断面,在开始一个断面的绘图前,清除之前的坐标数据left_y_list.clear()top_x_list.clear()top_y_list.clear()right_x_list.clear()right_y_list.clear()top_origin_y.append(sheet.cell(1+j*gap,8).value) #将拱顶初始沉降量加入此listfor i in range(0,8):left_x = sheet.cell(int((i+1)+j*gap),2).value #将每个cell的值输入坐标listleft_y = sheet.cell(int((i+1)+j*gap),3).valuetop_x = sheet.cell(int((i+1)+j*gap),4).valuetop_y = sheet.cell(int((i+1)+j*gap), 5).valueright_x = sheet.cell(int((i+1)+j*gap), 6).valueright_y = sheet.cell(int((i+1)+j*gap), 7).valueleft_x_list.append(left_x)left_y_list.append(left_y)top_x_list.append(top_x)top_y_list.append(top_y)right_x_list.append(right_x)right_y_list.append(right_y)b = a.from_3p(start_point=(right_x_list[i], right_y_list[i]), #使用变量b接收ConstractionArc类对象,以使用其计算结果def_point=(top_x_list[i], top_y_list[i]),end_point=(left_x_list[i], left_y_list[i]))msp.add_arc(center=b.center,radius=b.radius,start_angle=b.start_angle,end_angle=b.end_angle,dxfattribs={'color': int(color_index[i])}) #绘制一个断面的8个弧线msp.add_circle((right_x_list[i], right_y_list[i]), radius=0.05) #在每个测点绘制圆圈msp.add_circle((top_x_list[i], top_y_list[i]), radius=0.05)msp.add_circle((left_x_list[i], left_y_list[i]), radius=0.05)msp.add_line(start=(top_x_list[0], top_y_list[0]), #在初始的拱顶点向下画辅助线,便于后处理移动二衬图end=(top_x_list[0], top_y_list[0] - top_origin_y[j] / 1000))msp.add_text(text='邓家坡隧道1#横洞小里程{}断面上导变形图'.format(duan_mian_list[j]),dxfattribs={'height':0.65}).set_pos(p1=title_location,align='LEFT')doc.saveas('Plot/testPlot{}.dxf'.format(str(j+1)))print(left_x_list)
print(left_y_list)
print(top_x_list)
print(top_y_list)
print(right_x_list)
print(right_y_list)
使用Python操作CAD的dxf文件,批量绘制变形图的方法记录相关推荐
- python导出dxf图,使用Python操作CAD的dxf文件,批量绘制变形图的方法记录
使用Python的ezdxf包,结合excel表中的坐标数据,绘制了变形图,表格,代码,结果如下: DK41+175 左上偏距 左上高程 拱顶偏距 拱顶高程 右上偏距 右上高程 422 上导第二层拱架 ...
- 三、使用Teigha.net打开CAD(.dwg/.dxf)文件,并显示到panel界面绑定事件
目录 一.Teigha.net直接操作CAD(.dwg/.dxf)文件 01 .直接打开CAD(.dwg/.dxf) 02 .读取实体,修改后的CAD(.dwg/.dxf)文件进行保存 03 .Tei ...
- Allegro 从导入dxf文件中绘制outline板框的技巧
Allegro 从导入dxf文件中绘制outline板框的技巧 首先从导入的dxf文件里单独copy板框出来 然后将板框dxf 层转化成outline层 菜单shape–compose shape ( ...
- pyautocad python 操作CAD文件
python操作autocad,实现对dwg文件的操作 业务需求: 图纸的文件名存在引用,需要执行打开保存操作,自动保存图号为当前文件名 实现: 使用python+pyautocad 参考文章: ht ...
- Python工具脚本,PDF文件批量转图片(pdf图片提取器)工具(exe)
前面写(抄袭)了一下转图片(提取图片)的源码,包括PDF文件以及PPT文件,这里本渣渣抽空进行了exe打包,打包的是pdf文件转图片,当然使用的gui还是python的tkinter库,仅供参考和学习 ...
- 关于python操作cad的2021-06-18
之前写了"关于python通过pyautocad操作cad的2021-06-10",由于pyautocad根据图元生产面域的方法没找到,所以改用win32com.client了,找 ...
- python操作文本之CSV文件
python 操作csv文件有两种方法,一种是使用pandas来读写csv文件,第二种是使用csv模块读写csv文件 一.pandas读写csv文件 1.df = pd.read_csv(filepa ...
- 使用Teigha(OpenDesign)操作CAD的dwg文件
说起来,其实我自己也感觉这个要求挺奇怪的,Java操作CAD,好吧,目前比较完善的类库有一个是jdwglib,但是我没找到,而且公司刚好有OpenDesign的账号,因此,需要使用Teigha来进行操 ...
- revit图纸导出dxf文件批量修改
本人最近在使用revit出图时遇到了导出为dxf文件的需求, 但revit图纸导出为dxf文件后, 布局中的视口大小与revit中视口大小不一致, 导致在autocad中打印出现问题, 经过与Auto ...
最新文章
- 关于xilinx fir use reloadable coefficient的用法
- yum 仓库 本地和在线
- 一个已婚女人,对于婚姻对于幸福的感悟
- Fabricjs使用Group实现组合对象
- java 线程模型_Java基础篇之Java线程模型
- CF1473E Minimum Path(拆点+最短路)
- P3501-[POI2010]ANT-Antisymmetry【hash,二分答案】
- mysql 过滤相同数据库_MySQL数据库查询中的重复记录过滤
- 活动安排问题的 动态规划和贪心算法
- (40)Gulp中使用BootStrap
- 禁用,元素设置为不可点击
- 深入学习Java虚拟机(三)
- JDK笔记-IO流读写
- mysql主从同步 忽略库_主从复制中忽略库的参数
- oracle wmsys.wm_concat ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB
- 老徐WEB:js入门学习 - javascript变量的数据类型
- 微信公众号答题功能搭建
- 微信开发者工具登录时tunneling socket could not be established
- 开放性:你可能没听说过的终极大挑战(开放性既是驱动探索智能的力量之一,也可能直接就是AI本身的组成部分)
- python元祖用法_Python中元祖的用法