重新调整从左到右从上到下以"*,@"分割图纸数据

# __*__encoding:utf8__*__
import openpyxl
from pyautocad import Autocad, APoint
from pyhub import arithmetic
import sys

reload(sys)
sys.setdefaultencoding("utf-8")
wb = openpyxl.load_workbook("a.xlsx")
sheet = wb.get_sheet_by_name("Sheet1")
# 数据集合
data = []
# 点集合
pxy = []

# 分割点x,y坐标
lst_lpx = []
lst_lpy=[]
datatext = []

acad = Autocad(create_if_not_exists=True)
acad.prompt("hello this is mt")

for t in acad.iter_objects("Text"):
    if (t.TextString != "*" and t.TextString!="@"):
        pxy.append((APoint(t.InsertionPoint).x, APoint(t.InsertionPoint).y))
        data.append(t)
    elif (t.TextString == "*"):
        lst_lpx.append(APoint(t.InsertionPoint).x)
    elif(t.TextString=="@"):
        lst_lpy.append(APoint(t.InsertionPoint).y)

print lst_lpx
print lst_lpy

zb = arithmetic.paixuzb_maopaox2y(pxy)
print "paixu done"
datazb = []
datasortx = []
datasorty=[]
# 以坐标点排序文本内容并存入data列表中
for i in range(len(pxy)):
    for t in data:
        if (APoint(t.InsertionPoint).x == zb[i][0] and APoint(t.InsertionPoint).y == zb[i][1]):
            datasortx.append(APoint(t.InsertionPoint).x)
            datasorty.append(APoint(t.InsertionPoint).y)
            datatext.append(t.TextString)
print "zhunbei done"


datasy=[]
for i in range(len(lst_lpy)):
    for j in datasorty[:]:
        if (j > lst_lpy[i]):
            datasy.append(datatext.pop(datasorty.index(j)))
            datasorty.remove(j)
print "fenli y end"

datas = []
for i in range(len(lst_lpx)):
    for j in datasortx[:]:
        if (j < lst_lpx[i]):
            datas.append(datasy.pop(datasortx.index(j)))
            datasortx.remove(j)

print "fenli y,x done"

            # datas.reverse()
for d in range(len(datas)):
    if (str(datas[d])[0:3] == "tex" or str(datas[d])[0:3] == "250"
        or str(datas[d])[0:3] == "###"):
        sheet["A" + str(d + 1)] = datas[d]

wb.save("ts.xlsx")
print "success"



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值