python shp带cass属性到dwg,在CAD可通过cass进行属性查看

这篇具有很好参考价值的文章主要介绍了python shp带cass属性到dwg,在CAD可通过cass进行属性查看。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python shp带cass属性到dwg,在CAD可通过cass进行属性查看

-- coding: utf-8 --

from pyautocad import Autocad, APoint
#from pyautocad.contrib.tables import Table
import pyautocad
import re
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
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QAction
from PyQt5 import QtCore, QtGui, QtWidgets
import shapefile, os, sys
import time
import sys, os
import jm
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 vtfloat(lst):
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, lst)
def get_shp(path):
import shapefile
sf = shapefile.Reader(path)
shapes = sf.shapes()
#print
#print(shapes[0].parts)
#print
len(shapes) # 79条记录
# print len(list(sf.iterShapes())) #79条记录
# for name in dir(shapes[3]): #不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表
# if not name.startswith(‘__’):
# print name

#print
#print(sf.numRecords)
recds = sf.records()
# for i in range(sf.numRecords):
#     rcd = sf.record(i)
    #print(rcd)
    # sp = rcd.shape #没有shape属性
    # print (sp.points)
# recds.shape
# 读取记录
#print
#print(sf.shapeRecord(0).shape.shapeType)
#print
#print(sf.fields)
ii = 0
ywh_xh = 0
qlr_xh = 0
zddm_xh = 0
zl_xh = 0
jzmj_xh = 0

jd_pl = 10 / len(sf.fields)
jd = 0
for i in sf.fields:
    #print(ii, i[0])
    if i[0].lower() == 'ywh':
        ywh_xh = ii - 1
    if i[0].lower() == 'qlr':
        qlr_xh = ii - 1
    if i[0].lower() == 'zddm':
        zddm_xh = ii - 1
    if i[0].lower() == 'zl':
        zl_xh = ii - 1
    if i[0].lower() == 'zdmj':
        jzmj_xh = ii -1
    ii += 1
    jd = jd + jd_pl
    self.progressBar.setProperty("value", jd)
    QApplication.processEvents()

ii = 0


#print()
#print


#print
''
ii = 0
list_ywh = {}
list_zddm = {}
list_qlr = {}
list_ywh1 = {}
list_jzmj = {}
list_zl = {}
jd_pl = 10 / len(shapes)
#jd = 10 / len(shapes)
for shp in range(len(shapes)):
    ywh = sf.shapeRecord(ii).record[ywh_xh]
    zddm = sf.shapeRecord(ii).record[zddm_xh]
    qlr = sf.shapeRecord(ii).record[qlr_xh]
    ywh = sf.shapeRecord(ii).record[ywh_xh]
    jzmj = sf.shapeRecord(ii).record[jzmj_xh]
    zl = sf.shapeRecord(ii).record[zl_xh]
    #print(ywh)
    shap = shapes[shp]
    #print
    #print(shap.points)
    if zddm in(None, ''):
        zddm = ' '
    if qlr in(None, ''):
        qlr = ' '
    list_zddm.setdefault(ii, []).append(zddm)
    list_qlr.setdefault(ii, []).append(qlr)
    list_jzmj.setdefault(ii, []).append(jzmj)
    list_ywh1.setdefault(ii, []).append(ywh)
    list_zl.setdefault(ii, []).append(zl)
    for po in shap.points:
        list_ywh.setdefault(ii, []).append(po[0])
        list_ywh.setdefault(ii, []).append(po[1])
        list_ywh.setdefault(ii, []).append(0)
    #print(list_ywh)
    # #print
    # print(shap.shapeType)
    # #print
    # len(shap.points)
    # for i in range(len(shap.points)):
    #     #print
    #     print(shap.points[i])
    #     for x in range(len(shap.points[i])):
    #         #print
    #         print(shap.points[i][x])
    ii += 1
    jd = jd + jd_pl
    self.progressBar.setProperty("value", jd)
    QApplication.processEvents()

return list_ywh, jd, list_zddm, list_qlr, list_jzmj, list_ywh1,list_zl

def bj_hg(path):
list_ywh, jd, list_zddm, list_qlr, list_jzmj, list_ywh1,list_zl = get_shp(path)
acad = win32com.client.Dispatch(“AutoCAD.Application.19”)
filterType = vtInt([0, 8])
doc = acad.ActiveDocument
msp = doc.ModelSpace
# 删除宗地图
try:
doc.SelectionSets.Item(“SS11”).Delete()
except:
print(“Delete selection failed”)
# slt1 = doc.SelectionSets.Add(“SS11”)
# #slt1.Select(5, 0, 0, vtInt([0, 8, 1000]), vtVariant([“LWPOLYLINE”, “BDMAP_地籍”, “%s”%zddm]))
# slt1.Select(5, 0, 0, vtInt([0, 8]), vtVariant([“LWPOLYLINE”, “JZD”]))
#for item in slt1:
jd_pl = 80 / len(list_ywh)
#jd = 80 / len(list_ywh)
for i in list_ywh:
#pnts = [335769, 2744304, 0, 335779, 2744304, 0, 335779, 2744294, 0, 335769,2744294 , 0]
#print(pnt)
points = vtfloat(list_ywh[i])
plineObj = msp.AddPolyline(points)
plineObj.Closed = True
#tdyt = item.GetXData(“SOUTH”)[1][3]
DataType = [1001, 1000, 1000, 1000, 1000]
Data = [“SOUTH”, ‘300000’, list_zddm[i][0], list_qlr[i][0], ‘072’]
DataType = vtInt(DataType)
Data = vtVariant(Data)
plineObj.SetXData(DataType, Data)

    DataType = [1001, 1000]
    Data = ["TDZL", list_zl[i][0]]
    DataType = vtInt(DataType)
    Data = vtVariant(Data)
    plineObj.SetXData(DataType, Data)

    DataType = [1001, 1000]
    Data = ["QSLYZM", list_ywh1[i][0]]
    DataType = vtInt(DataType)
    Data = vtVariant(Data)
    plineObj.SetXData(DataType, Data)

    DataType = [1001, 1000]
    Data = ["JZMJ", list_jzmj[i][0]]
    DataType = vtInt(DataType)
    Data = vtVariant(Data)
    plineObj.SetXData(DataType, Data)

    jd = jd + jd_pl
    self.progressBar.setProperty("value", jd)
    QApplication.processEvents()

def main(self):
def askdirectory_excelcf_xz():
“”“”“”
_translate = QtCore.QCoreApplication.translate
folder = QFileDialog.getOpenFileName(caption=‘选择转换的shp’, filter=‘Txt files(*.shp)’)
self.lineEdit.setText(_translate(“Form”, folder[0]))

def excel_cf1():
    path = self.lineEdit.text()
    bj_hg(path)

self.pushButton.clicked.connect(excel_cf1)
self.toolButton.clicked.connect(askdirectory_excelcf_xz)

if name == ‘main’:
app = QApplication(sys.argv)
MainWindow = QMainWindow() # QMainWindow模块名
self = jm.Ui_MainWindow()
self.setupUi(MainWindow)
main(self)文章来源地址https://www.toymoban.com/news/detail-424071.html

MainWindow.show()
sys.exit(app.exec_())

到了这里,关于python shp带cass属性到dwg,在CAD可通过cass进行属性查看的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python利用shp文件进行绘图白化】

    参考博文【matlab利用shp文件制作mask白化文件】 python借助shp文件对绘图进行白化,不需要进行mask文件的制作,可以高效地进行区域绘制 参考:https://mp.weixin.qq.com/s?__biz=MzIxODQxODQ4NQ==mid=2247484487idx=1sn=e654ab7eeeb41a15f816b52b391e93cbchksm=97eb981da09c110ba06115ed93a4a4450bbe84f8b57b90a9819b6b06f801b533

    2024年02月11日
    浏览(27)
  • JAVA调用Bartender进行标签打印(可本地用打印机客户端进行测试打印,【云上的项目】可通过WebSocket进行通讯进行打印)

    用Java编写一个打印标签客户端  点击运行启动会打开首页  可以点击预览打印  点击打印可测试成功     打印机结果  前端用的是thymeleaf 代码片段 后端代码  页面上预览图片和真实打印机打出来的不一致是正常的因为这是测试打印(测试本地电脑是否符合使用打印机客户

    2024年02月15日
    浏览(39)
  • Python使用__dict__查看对象内部属性的名称和值

    从以上代码来看;直接使用 mo.__dict__ 即可获取该实例的属性值; 还是上面的类; 我们知道,C、Java等面向对象的编程语言,在进行类的初始化时,对与类的限制是很严格的,这样做的好处是安全,我们试想一下,如果创建的一个类在任何情况下,会被任何外部或者内部方法

    2024年01月18日
    浏览(28)
  • Pix4Dmapper系列教程(一):Pix4D模型成果导出OSGB并加载到CASS3D进行三维测图

    随着无人机航飞的推广,数据处理成为问题根源。3D模型使用一直困扰着一众测绘人员,虽有部分使用CC(原Smart3D)进行模型生成,但是PIX4D使用用户确一直受到模型无法加载到CASS 3D中应用问题困扰,此文彻底解决此问题。 在垂直摄影中,Pix4D也可以生成漂亮的三维模型,Pix4D生

    2024年02月06日
    浏览(197)
  • c# 根据CAD权籍数据的扩展属性,输出房地一体资料,申请表、审批表等

    c# 根据CAD权籍数据的扩展属性,输出房地一体资料,申请表、审批表等 using System; using System.Windows.Forms; using MSWord = Microsoft.Office.Interop.Word; using System.Runtime.InteropServices; using System.Reflection; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using cadapp = Autodesk.AutoCAD.Applic

    2024年02月11日
    浏览(26)
  • 手机查看IGES,STP,STEP格式3D模型免费APP推荐-CAD Assistant

    CAD Assistant官网网址:CAD Assistant - Open Cascade Open Cascade CAD Assistant 是一款功能强大的离线 3D CAD 查看器和转换器,具有简单直观的界面,可免费用于个人和商业用途。目前已被全球成千上万的移动设备和台式机终端用户视为快速便捷的 3D 查看器。CAD Assistant基于开源库(Open CAS

    2024年02月12日
    浏览(146)
  • python中的os.mkdir和os.makedirs的使用区别,以及如何查看某个模块中的某些字母开头的属性方法

    os.mkdir(dir_name) :用于 新建文件夹 ,当要新建的文件夹已经存在的时候,就会报错: FileExistsError: [Errno 17] File exists: 因此,我们一般在新建一个文件夹的时候,会和 os.path.exists() 集合使用,如下: 1、判断一个 文件夹是否存在 ,如果不存在就新建它,如果已经存在就跳过:

    2023年04月08日
    浏览(40)
  • 新版Selenium使用Python对web页面多个相同Class Name属性的元素进行选择&新老版本对比

    在使用新版的Selenium对网页代码中存在相同class name属性的元素进行定位,在定位的过程中发现使用先前的定位方法已经无法成功对所要操作组件进行定位,这是什么问题呢?下面为大家进行解答。 大概为了统一编写格式,方便阅读理解,新版本的Selenium出来后,摒弃了旧版的

    2024年02月04日
    浏览(39)
  • Python与CAD系列基础篇(一)操作AutoCAD与读写CAD文件

    对于Python与CAD进行联动而言,首要的就是建立Python与AutoCAD软件的连接以及操作CAD文件。 作为本系列文章的开篇,将介绍:①如何通过python连接到AutoCAD软件;②如何使用python进行cad文件的读写。两者的区别是①通过win32com.client或pyautocad连接AutoCAD进行处理(需要AutoCAD软件,可

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包