python 获取CAD属性到excel
python 获取CAD属性到excel
·
python 获取CAD属性到excel
# -*- coding: utf-8 -*-
from pyautocad import Autocad, APoint
from pyautocad.contrib.tables import Table
import re
#import gdal,os,ogr,osr#osgeo,
#import gdal,os,ogr,osr#osgeo,
#import ogr
from osgeo import gdal, osr
from osgeo import ogr
import os
import win32com.client
import pythoncom
import math, time, shutil, sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
from PyQt5.QtWidgets import QApplication
import traceback
from PyQt5.QtWidgets import QMessageBox
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QAction
from PyQt5 import QtCore, QtGui, QtWidgets
import os, sys
#########################扩展属性读取#####################################
def resource_path(relative_path):
if getattr(sys, 'frozen', False): #是否Bundle Resource
base_path = sys._MEIPASS
else:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
def vtInt(list):
"""列表转化为整数"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_I2, list)
def vtVariant(list):
"""列表转化为变体"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_VARIANT, list)
def inset_excel(list_fwxx, list_jzmj, list_zzdmj, list_zdxx, path_bc):
import openpyxl
path_xz = resource_path(os.path.join("temp", '连平县xx镇xx村“房地一体”宅基地和集体用地权籍调查信息表.xlsx'))
wb = openpyxl.load_workbook(path_xz)
sht = wb.active
tem = 4
for zddm in list_zdxx:
try:
zdmj = list_zdxx[zddm]
jzmj = sum(list_jzmj[zddm])
zzdmj = sum(list_zzdmj[zddm])
[fwzl, qlrmc, zjh, zcs, fwjg, gyqk] = list_fwxx[zddm]
sht['A%s'%tem] = zddm
sht['B%s'%tem] = qlrmc
sht['C%s'%tem] = zjh
sht['D%s'%tem] = gyqk
sht['E%s'%tem] = zdmj
sht['F%s'%tem] = zcs
sht['G%s'%tem] = fwjg
sht['H%s'%tem] = zzdmj
sht['I%s'%tem] = jzmj
sht['J%s'%tem] = fwzl
except:
sht['A%s' % tem] = '%s-属性不齐'%zddm
tem += 1
wb.save(os.path.join(path_bc, '连平县xx镇xx村“房地一体”宅基地和集体用地权籍调查信息表.xlsx')) # 保存
def cad(self):
wincad = win32com.client.Dispatch("AutoCAD.Application")
doc = wincad.ActiveDocument
msp = doc.ModelSpace
self.label_2.setText('正在提取房屋信息···')
QApplication.processEvents()
try:
doc.SelectionSets.Item("SS1").Delete()
except:
print("Delete selection failed")
slt = doc.SelectionSets.Add("SS1")
slt.Select(5, 0, 0, vtInt([0, 8]), vtVariant(["LWPOLYLINE", "BDMAP_房屋"]))
list_jzmj = {}
list_zzdmj = {}
list_fwxx = {}
for item in slt:
list_fw_BDMAP_FWJBXX = item.GetXData("BDMAP_FWJBXX")[1][1].split('$')
list_fw_BDMAP_FWZK = item.GetXData("BDMAP_FWZK")[1][1].split('$')
fwzl = list_fw_BDMAP_FWJBXX[6]
zddm = list_fw_BDMAP_FWJBXX[5][:19]
qlrmc = list_fw_BDMAP_FWJBXX[8]
jzmj = float(list_fw_BDMAP_FWZK[9])
zzdmj = round(item.area,2)
zjh = list_fw_BDMAP_FWJBXX[10]
gyqk = list_fw_BDMAP_FWJBXX[19][2:]
zcs = list_fw_BDMAP_FWZK[4]
fwjg = list_fw_BDMAP_FWZK[6][2:]
list_jzmj.setdefault(zddm, []).append(jzmj)
list_zzdmj.setdefault(zddm, []).append(zzdmj)
list_fwxx[zddm] = [fwzl, qlrmc, zjh, zcs, fwjg, gyqk]
self.label_2.setText('正在提取宗地信息···')
QApplication.processEvents()
try:
doc.SelectionSets.Item("SS1").Delete()
except:
print("Delete selection failed")
slt = doc.SelectionSets.Add("SS1")
slt.Select(5, 0, 0, vtInt([0, 8]), vtVariant(["LWPOLYLINE", "BDMAP_地籍"]))
list_zdxx = {}
for item in slt:
list_BDMAP_ZDBASEATT = item.GetXData("BDMAP_ZDBASEATT")[1][1].split('$')
zd_zddm = list_BDMAP_ZDBASEATT[2]
zd_zdmj = float(list_BDMAP_ZDBASEATT[19])
list_zdxx[zd_zddm] = zd_zdmj
path_bc = self.lineEdit.text()
self.label_2.setText('正在写入Excel···')
QApplication.processEvents()
inset_excel(list_fwxx, list_jzmj, list_zzdmj, list_zdxx, path_bc)
self.label_2.setText('写入完成')
QApplication.processEvents()
if QMessageBox.information(None, '提示', "写入完成,是否打开文件进行查看",
QMessageBox.Yes | QMessageBox.No) == 16384: # 给出确定与否的弹窗,是的话则下一步
os.startfile(os.path.join(path_bc, '连平县xx镇xx村“房地一体”宅基地和集体用地权籍调查信息表.xlsx')) # 打开文件
def ye_main(self):
def askdirectory_word_pdf_bc():
""""""
_translate = QtCore.QCoreApplication.translate
folder = QFileDialog.getExistingDirectory()
self.lineEdit.setText(_translate("Form", folder))
def main():
try:
cad(self)
except:
QMessageBox.information(None, '提示', '出错了%s\n' % traceback.format_exc())
self.toolButton.clicked.connect(askdirectory_word_pdf_bc)
self.pushButton.clicked.connect(main)
if __name__ == '__main__':
import jm
app = QApplication(sys.argv)
MainWindow = QMainWindow() # QMainWindow模块名
self = jm.Ui_MainWindow()
self.setupUi(MainWindow)
ye_main(self)
MainWindow.show()
sys.exit(app.exec_())
更多推荐




所有评论(0)