# __*__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"