test.py 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # -*- coding: UTF-8 -*-
  2. from pyautocad import Autocad, APoint
  3. #这个true表示没有文件则打开一个,CAD有弹窗时会打开或者创建失败
  4. acad = Autocad(create_if_not_exists = True)
  5. acad.prompt("Hello, Autocad from Python\n")
  6. print(acad.doc.Name)
  7. def drawPoints(points):
  8. for point in points:
  9. acad.model.AddCircle(APoint(point[0],point[1]), 50)
  10. def drawLines(includePoints):
  11. if(len(includePoints)>1):
  12. for item in range(len(includePoints)):
  13. if(item>0):
  14. acad.model.AddLine(APoint(includePoints[item-1][0],includePoints[item-1][1]),APoint(includePoints[item][0],includePoints[item][1]))
  15. # 获取点到长方形的最短距离
  16. def getDoorBeginAndModuleUsePointDistince(x0,y0,width,height,x,y):
  17. 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)]
  18. drawPoints(points)
  19. includePoints = [(x,y)]
  20. if x<x0-width/2:
  21. if y>y0+height/2:
  22. includePoints.append((x0-width/2,y0+height/2))
  23. elif y>y0-height/2:
  24. includePoints.append((x0-width/2,y))
  25. else:
  26. includePoints.append((x0-width/2,y0-height/2))
  27. elif x<x0+width/2:
  28. if y>y0+height/2:
  29. includePoints.append((x,y0+height/2))
  30. elif y>y0-height/2:
  31. pass
  32. else:
  33. includePoints.append((x,y0-height/2))
  34. else:
  35. if y>y0+height/2:
  36. includePoints.append((x0+width/2,y0+height/2))
  37. elif y>y0-height/2:
  38. includePoints.append((x0+width/2,y))
  39. else:
  40. includePoints.append((x0+width/2,y0-height/2))
  41. drawLines(includePoints)
  42. # 获取点到长方形指定点的最短距离,默认点在长方形下方
  43. def getMovePath(x0,y0,width,height,x,y,x1,y1):
  44. 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)]
  45. drawPoints(points)
  46. includePoints = [(x,y)]
  47. # 指定点在第0边;按下右上左方向
  48. if y1 == y0-height/2:
  49. includePoints.append((x1,y1))
  50. # 指定点在第1边;按下右上左方向
  51. elif x1 == x0+width/2:
  52. if x>x0+width/2:
  53. includePoints.append((x1,y1))
  54. else:
  55. includePoints.append((x0+width/2,y0-height/2))
  56. includePoints.append((x1,y1))
  57. # 指定点在第2边,暂只考虑从左边开始接近
  58. elif y1 == y0+height/2:
  59. if x<x0-width/2:
  60. includePoints.append((x0-width/2,y0+height/2))
  61. includePoints.append((x1,y1))
  62. else:
  63. includePoints.append((x0-width/2,y0-height/2))
  64. includePoints.append((x0-width/2,y0+height/2))
  65. includePoints.append((x1,y1))
  66. # 指定点在第3边
  67. else:
  68. if x<x0-width/2:
  69. includePoints.append((x1,y1))
  70. else:
  71. includePoints.append((x0-width/2,y0-height/2))
  72. includePoints.append((x1,y1))
  73. drawLines(includePoints)
  74. # getDoorBeginAndModuleUsePointDistince(3300,1500,900,600,10,3000)
  75. # getDoorBeginAndModuleUsePointDistince(3300,2800,900,600,1000,3000)
  76. # getDoorBeginAndModuleUsePointDistince(3300,2800,900,600,3100,3800)
  77. # getDoorBeginAndModuleUsePointDistince(3300,2800,900,600,4000,900)
  78. # getMovePath(3300,2800,900,600,0,0,3500,2500)
  79. # getMovePath(3300,2800,900,600,0,0,2850,2700)
  80. # getMovePath(3300,2800,900,600,3000,0,2850,2700)
  81. # getMovePath(3300,2800,900,600,3300,0,3500,3100)
  82. def testAppend():
  83. score = []
  84. for i in range(100):
  85. s = []
  86. s.append(i)
  87. score.append(s)
  88. print(score)
  89. testAppend()