# -*- coding: UTF-8 -*- from pyautocad import Autocad, APoint # 获取点到长方形的最短距离 def getDoorBeginAndModuleUsePointDistince(x0,y0,width,height,x,y): points = [(x,y),(x0-width/2,y0-height/2),(x0-width/2,y0+height/2),(x0+width/2,y0-height/2),(x0+width/2,y0+height/2),(x0,y0)] # drawPoints(points) includePoints = [(x,y)] if xy0+height/2: includePoints.append((x0-width/2,y0+height/2)) elif y>y0-height/2: includePoints.append((x0-width/2,y)) else: includePoints.append((x0-width/2,y0-height/2)) elif xy0+height/2: includePoints.append((x,y0+height/2)) elif y>y0-height/2: pass else: includePoints.append((x,y0-height/2)) else: if y>y0+height/2: includePoints.append((x0+width/2,y0+height/2)) elif y>y0-height/2: includePoints.append((x0+width/2,y)) else: includePoints.append((x0+width/2,y0-height/2)) return includePoints # 获取点到长方形指定点的最短距离,默认点在长方形下方 def getMovePath(x0,y0,width,height,x,y,x1,y1): points = [(x,y),(x0-width/2,y0-height/2),(x0-width/2,y0+height/2),(x0+width/2,y0-height/2),(x0+width/2,y0+height/2),(x0,y0),(x1,y1)] # drawPoints(points) includePoints = [(x,y)] # 指定点在第0边;按下右上左方向 if y1 == y0-height/2: includePoints.append((x1,y1)) # 指定点在第1边;按下右上左方向 elif x1 == x0+width/2: if x>x0+width/2: includePoints.append((x1,y1)) else: includePoints.append((x0+width/2,y0-height/2)) includePoints.append((x1,y1)) # 指定点在第2边,暂只考虑从左边开始接近 elif y1 == y0+height/2: if x