至于dxf文件的格式在之前的博文中已经有详细的叙述,在此将不做赘述。

from Point import Point

class DXFReaderImpl:

def __init__(self,file):

self.file = file

self.points = [] ## 用于记录点实体的坐标值

self.points_line = [] ## 用于记录线段的各端点坐标值,包括直线和折线两种线型

self.points_polygon = [] ## 用于纪录多边形的顶点坐标值

def readDXF(self):

firstLine =""

secondLine = ""

secondLine = self.file.readline().strip()

while secondLine != "EOF":

if firstLine.strip() == "0" and secondLine.strip()== "LWPOLYLINE":

self.readPolyline()

if firstLine.strip() == "0" and secondLine.strip() == "LINE":

self.readLines()

if firstLine.strip() == "0" and secondLine.strip() == "POINT":

pass

firstLine = secondLine

secondLine = self.file.readline().strip()

print "there are " + str(i) + "polyline"

##

## def readPolygon(self):

## pass

## read polyline. In dxf file,polygon is a closed polyline

def readPolyline(self):

counter = 0

numofvertex = 1

flagofPolygon = 0

x = 0

y = 0

firstLine = "LWPOLYLINE"

secondLine = self.file.readline().strip()

pointList = []

while counter<=numofvertex:

if firstLine == "90":

numofvertex = int(secondLine)

if firstLine == "70":

flagofPolygon = int(secondLine)

if firstLine == "10":

x = float(secondLine)

if firstLine == "20":

y = float(secondLine)

pointList.append(Point(x,y))

counter = counter + 1

firstLine = secondLine

secondLine = self.file.readline().strip()

if flagofPolygon == 0:

self.points_line.append(pointList)

else:

self.points_polygon.append(pointList)

def readPoint(self):

firstLine = "POINT"

secondLine = self.file.readline().strip()

x = 0.0

y = 0.0

while firstLine != "30":

if firstLine == "10":

x = float(secondLine)

if firstLine == "20":

y = float(secondLine)

firstLine = secondLine

secondList = self.file.readline().strip();

self.points.append(Point(x,y))

## read straight line

def readLines(self):

x1 = 0.0

y1 = 0.0

x2 = 0.0

y2 = 0.0

firstLine = "POINT"

## secondLine = ""

seondLine = self.file.readline().strip()

while firstLine != "31":

if firstLine == "10":

x1 = float(secondLine)

if firstLine == "20":

y1 = float(secondLine)

if firstLine == "11":

x2 = float(secondLine)

if firstLine == "21":

y2 = float(secondLine)

firstLine = secondLine

secondLine = self.file.readline().strip()

tempLine = []

tempLine.append(Point(x1,y1))

tempLine.append(Point(x2,y2))

self.points_line.append(tempLine)

if __name__=="__main__":

file = open("D:\\test.dxf","r")

reader = DXFReaderImpl(file)

reader.readDXF()

i = 1

for temp in reader.points_polygon:

print " this is the " + str(i) + " polygon"

for points in temp:

print str(points.x) + " " + str(points.y)

i = i + 1

## i = 1

## for temp in reader.points_line:

## print " this is the " + str(i) + " polyline"

## for points in temp:

## print str(points.x) + " " + str(points.y)

## i += 1

print "over"

此段代码主要用于读取点,直线,折线,多边形等四种实体的坐标值。

分享到:

2009-10-07 14:42

浏览 6585

评论

dxf解析python_Python 读取DXF文件相关推荐

  1. python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  2. python中读取文件内容-深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  3. python怎么读取pdf文件_Python解析并读取PDF文件内容的方法

    本文实例讲述了Python解析并读取PDF文件内容的方法.分享给大家供大家参考,具体如下: 一.问题描述 利用python,去读取pdf文本内容. 二.效果 三.运行环境 python2.7 四.需要 ...

  4. python读取pdf文件_深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  5. 通过poi实现解析并读取excel文件(包含xls、xlsx后缀)

    StudentBean.java类,用来存放学生信息 package com.demoexcel.util;public class StudentBean {private String no; / ...

  6. grib1文件解析 python_python读取grib格式数据

    python 读取grib/grib2格式数据 一般利用NCL(NCAR Command Language)读取.利用Python语言的pygrib库也可以读取grib/grib2格式数据 grib/ ...

  7. C#培训2019-9-30第十课 Dxf转档 读取DXF文档 读取圆信息 生成 NC加工档

    DXF格式资料 DXF文档原来是AutoCAD的专用格式,后来开发了.因此格式内容可以直接查看AutoCAD给出的帮助文档:http://docs.autodesk.com/ACD/2011/CHS/ ...

  8. python解析并读取PDF文件:函数总结

    目录 1.PyPDF2 2. pdfminer & pdfminer3k 3. pdfplumber 4. Camelot 虽然PDF文件对文本布局非常好,容易打印并阅读,但软件要将它们解析为 ...

  9. Java文件读写和CSV文件解析(读取csv文件的一列或若干列)

    文件类 Java 读文件流的知识不可少,先复习一下吧! OREACLE JDK8 DOCS 文件类是Java IO的一个对象,用于指定文件的相关信息,位置和名称信息.如txt文件,csv文件对Java ...

  10. csv和excel php 解析_php读取csv文件(excel可另存为csv格式文件)

    csv文件简介 看到这个题目大家一定莫名其妙,这个csv文件和office有啥关系.呵呵,细心地朋友在用excel的时候会发现,excel可以另存为csv格式.我之前也对这个东西没什么了解,只是知道e ...

最新文章

  1. Linux使用netstat命令查看并发连接数
  2. 技术非中立,语言非同质:机器翻译正被用于维护文化障碍
  3. 4个重要的量子理论实验综述
  4. IntelliJ IDEA导入多个eclipse项目到同一个workspace下
  5. Xcode clang-omp openmp开发
  6. 生成android证书
  7. jQuery操作标签--样式、文本、属性操作, 文档处理
  8. 22行代码AC——例题7-1除法(Division UVa 725)——解题报告
  9. SAP Spartacus在某些屏幕尺寸下无法正常工作的原因分析
  10. NOIP模拟测试39,思维禁锢专场「工业题·玄学题·卡常题」
  11. 哥廷根,世界数学家的摇篮和圣地
  12. 重构《一》-- 提取方法
  13. 深度优先搜索(DFS)递归形式改为非递归形式
  14. PHP获得文件的md5并检验是否被修改
  15. 程序员面试金典——17.1无缓存交换
  16. JVM stack与Heap的区别
  17. android异步任务框架,详解Android App中的AsyncTask异步任务执行方式
  18. 全志v3s学习笔记(6)——Bsp内核编译与烧录
  19. 腾讯QQ浏览器 10.0.932.400 正式版
  20. DirectX终极游戏开发指南引擎源码分析

热门文章

  1. wifi的html页面,笔记本怎么设置wifi
  2. IDE、SATA、SCSI、SAS、FC、SSD硬盘类型介绍
  3. c++程序员书籍推荐
  4. If-Modified-Since HTTP 304 和 ETag
  5. 计算机程序计算排列组合(规避溢出)
  6. 梦想就是一种让你感到坚持就是幸福的东西
  7. apache linux启动失败,apache2 启动失败,出现下列错误,请问怎么解决,谢谢
  8. 无线局域网安全(三)————CCMP加密
  9. avformat_seek_file函数介绍
  10. 双机串行通讯实验c语言编程,51单片机编程:教你实现双机串行通信功能