import os
import cv2
import numpy as np
import ezdxf
from PIL import Image
import pymysql
defdatabase(coding):
con = pymysql.connect(host='', port=3306, user='root', passwd='', db='',
charset='utf8',)# 数据库连接# 使用cursor()方法获取操作游标
cursor = con.cursor()# SQL 查询
sql ="select * from '' where code_content = '%s'"% coding
try:# 执行SQL语句
cursor.execute(sql)# 获取所有记录列表
results = cursor.fetchall()# 精确查询return results
except:print("Error: unable to fecth data")
cursor.close()# 关闭数据库连接
con.close()defdatabase_blurry(coding):
con = pymysql.connect(host='', port=3306, user='root', passwd='', db='',
charset='utf8',)# 数据库连接# 使用cursor()方法获取操作游标
cursor = con.cursor()# SQL 查询
sql ="select * from '' where code_content LIKE '%%%%%s%%%%'"% coding
try:# 执行SQL语句
cursor.execute(sql)# 获取所有记录列表
results = cursor.fetchall()# 精确查询return results
except:print("Error: unable to fecth data")
cursor.close()# 关闭数据库连接
con.close()defdatabase_query(coding):
data =[]
data_dxf_2 =[]
compare_1 =[]
compare_2 =[]
data_change =[]### 精确查询
results = database(coding)for it in results:
data.append(it)### 模糊查询
results = database_blurry(coding)for it in results:ifnot coding == it[2]:
data_change.append(it)### 联想查询,可无限添加条件
cod = coding
for i inrange(len(coding)):if coding.isdigit()==True:
results = database(coding)for it in results:
compare_1.append(it)for k inrange(i,0,-1):
data_dxf_2.append(cod[len(cod)- k])
str3 =''.join(data_dxf_2)# print(coding,str3)
results = database(str3)for it in results:
compare_2.append(it)# print(str3)# print(compare_1, compare_2)for cnt, i inenumerate(compare_1):for cnt2, j inenumerate(compare_2):
pts1 = np.array(j[3].strip().split(','),float)
pts2 = np.array(i[3].strip().split(','),float)
A = pts1[0]- pts2[0]
B = pts1[1]- pts2[1]if(A >-0.5and A <0.5)or(B >0.5and B <0.5):# data_change.append(compare_1[cnt])
data_change.append(compare_1[cnt])breakelse:
coding = coding[:-1]# print(coding)return(data, data_change)
defdxf_both_draw(data_all, data_all_change, dir_dxf, C):ifnot os.path.exists('queryDxf/'):
os.makedirs('queryDxf/')# 创建存放画图后dxf文件夹
path_dxf = os.path.join(dir_dxf, C)# 查询的dxf路径
path_query_dxf = os.path.join('queryDxf/', C)# 画图后dxf存放地址
doc = ezdxf.readfile(path_dxf)
msp = doc.modelspace()for i, myList_small inenumerate(data_all):if C == myList_small[1]:# 判断查询的是第几个图名if myList_small[4]=='90.0':# 判断旋转角,90.0为竖直方向
length =len(myList_small[2])# 判断字符长度
pts = np.array(myList_small[3].strip().split(','),float)# print(pts)for i inrange(10):
points =[(pts[0]-float(myList_small[5])- i *0.1, pts[1]- i *0.1),(pts[0]+float(myList_small[5])+ i *0.1, pts[1]- i *0.1),(pts[0]+float(myList_small[5])+ i *0.1,
pts[1]+ length *float(myList_small[5])*3/5+ i *0.1),(pts[0]-float(myList_small[5])- i *0.1,
pts[1]+ length *float(myList_small[5])*3/5+ i *0.1),(pts[0]-float(myList_small[5])- i *0.1, pts[1]- i *0.1)]
msp.add_lwpolyline(points, dxfattribs={'color':150})else:# 水平方向
length =len(myList_small[2])
pts = np.array(myList_small[3].strip().split(','),float)for i inrange(10):
points =[(pts[0]- i *0.1, pts[1]-float(myList_small[5])- i *0.1),(pts[0]+ length *float(myList_small[5])*3/5+ i *0.1,
pts[1]-float(myList_small[5])- i *0.1),(pts[0]+ length *float(myList_small[5])*3/5+ i *0.1,
pts[1]+float(myList_small[5])+ i *0.1),(pts[0]- i *0.1, pts[1]+float(myList_small[5])+ i *0.1),(pts[0]- i *0.1, pts[1]-float(myList_small[5])- i *0.1)]
msp.add_lwpolyline(points, dxfattribs={'color':150})for i, myList_small inenumerate(data_all_change):if C == myList_small[1]:# 判断查询的是第几个图名if myList_small[4]=='90.0':# 判断旋转角,90.0为竖直方向
length =len(myList_small[2])# 判断字符长度
pts = np.array(myList_small[3].strip().split(','),float)# print(pts)for i inrange(10):
points =[(pts[0]-float(myList_small[5])- i *0.1, pts[1]- i *0.1),(pts[0]+float(myList_small[5])+ i *0.1, pts[1]- i *0.1),(pts[0]+float(myList_small[5])+ i *0.1,
pts[1]+ length *float(myList_small[5])*3/5+ i *0.1),(pts[0]-float(myList_small[5])- i *0.1,
pts[1]+ length *float(myList_small[5])*3/5+ i *0.1),(pts[0]-float(myList_small[5])- i *0.1, pts[1]- i *0.1)]
msp.add_lwpolyline(points, dxfattribs={'color':100})else:# 水平方向
length =len(myList_small[2])
pts = np.array(myList_small[3].strip().split(','),float)for i inrange(10):
points =[(pts[0]- i *0.1, pts[1]-float(myList_small[5])- i *0.1),(pts[0]+ length *float(myList_small[5])*3/5+ i *0.1,
pts[1]-float(myList_small[5])- i *0.1),(pts[0]+ length *float(myList_small[5])*3/5+ i *0.1,
pts[1]+float(myList_small[5])+ i *0.1),(pts[0]- i *0.1, pts[1]+float(myList_small[5])+ i *0.1),(pts[0]- i *0.1, pts[1]-float(myList_small[5])- i *0.1)]
msp.add_lwpolyline(points, dxfattribs={'color':100})
doc.saveas(path_query_dxf)