0
点赞
收藏
分享

微信扫一扫

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


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

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


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

举报

相关推荐

0 条评论