python CAD二次开发通过给定的面积调整图形面积
其中使用到的模块有win32com.client、numpy、math、PyQt5等,pyqt5用于界面的设计
#######################################
##########调整面积#####################
#######################################
#######################################
def get_xy(xy):
list = []
for i in range(int(len(xy)/2)):
list.append([xy[2 * i], xy[2 * i + 1]])
#list.append()
return list
#计算两点的距离
def distance(x1, y1, x2, y2):
return math.sqrt((x2-x1)**2+(y2-y1)**2)
def vtfloat(lst):
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, lst)
def get_distance_point2line(point, xy1, xy2):
x3, y3 = point
x1, y1 = xy1
x2, y2 = xy2
lo = np.array([x2-x1, y2-y1])
tr = np.array([x2-x3, y2 - y3])
a = (float(tr.dot(lo))/lo.dot(lo))
a = lo.dot(a)
return np.sqrt((tr - a).dot(tr-a))
def get_x(x1, y1, x2, y2):
len_xy = distance(x1, y1, x2, y2)
x = 1 / len_xy * abs(y1 - y2) * -((x1 - x2)/(y1 - y2))/abs((x1 - x2)/(y1 - y2))
y = 1 / len_xy * abs(x1 - x2)
return x1 + x, y1 + y
import math
def yes(a, b, c):
# a = float(input("请输入a的值:"))
# b = float(input("请输入b的值:"))
# c = float(input("请输入c的值:"))
d=b**2-4*a*c
if (d<0):
print("无解")
else:
e = math.sqrt(d)
x1=((-b+e)/(2*a))#调用math模块中sqrt开平方函数
x2=((-b-e)/(2*a))
return x1