Advertisement
Guest User

Create double parabolic surface in STL file

a guest
Jul 1st, 2017
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.64 KB | None | 0 0
  1.  
  2. import math
  3.  
  4.  
  5. def h(x, y, xmin, xmax, ymin, ymax, hmin, hmax):
  6.    
  7.     x1 = (x - xmin) / (xmax - xmin) * 2.0 - 1.0
  8.     y1 = (y - ymin) / (ymax - ymin) * 2.0 - 1.0
  9.     return ((x1 * x1 - y1 * y1) + 1)* (hmax - hmin) * 0.5 + hmin
  10.  
  11.  
  12. out = "hall2.stl"
  13.  
  14. f = open(out, 'w')
  15.  
  16. n = 20
  17. m = 20
  18.  
  19. xmin, xmax = -20.0, 20.0
  20. ymin, ymax = -15.0, 15.0
  21. hmin, hmax = 10.0, 20.0
  22.  
  23. dx = 1.0 * (xmax - xmin) / m
  24. dy = 1.0 * (ymax - ymin) / n
  25.  
  26. xmin -= dx
  27. xmax += dx
  28. ymin -= dy
  29. ymax += dy
  30.  
  31.  
  32. f.write("solid Hall (Meshed)\n")
  33. for i in range(0, m+2):
  34.     for j in range(0, n+2):
  35.         x = xmin + i * dx
  36.         y = ymin + j * dy
  37.         x1 = x + dx
  38.         y1 = y + dy
  39.        
  40.         ha = h(x, y, xmin, xmax, ymin, ymax, hmin, hmax)
  41.         hb = h(x1, y, xmin, xmax, ymin, ymax, hmin, hmax)
  42.         hc = h(x1, y1, xmin, xmax, ymin, ymax, hmin, hmax)
  43.         hd = h(x, y1, xmin, xmax, ymin, ymax, hmin, hmax)
  44.        
  45.         f.write("\tfacet normal %.6f %.6f %.6f\n" % (0.0, 0.0, 1.0))
  46.         f.write("\t\touter loop\n")
  47.         f.write("\t\t\tvertex %.6f %.6f %.6f\n" % (1000.0*x, 1000.0*y, 1000.0*ha))
  48.         f.write("\t\t\tvertex %.6f %.6f %.6f\n" % (1000.0*x1, 1000.0*y, 1000.0*hb))
  49.         f.write("\t\t\tvertex %.6f %.6f %.6f\n" % (1000.0*x1, 1000.0*y1, 1000.0*hc))
  50.         f.write("\t\tendloop\n")
  51.         f.write("\tendfacet\n")
  52.         f.write("\tfacet normal %.6f %.6f %.6f\n" % (0.0, 0.0, 1.0))
  53.         f.write("\t\touter loop\n")
  54.         f.write("\t\t\tvertex %.6f %.6f %.6f\n" % (1000.0*x1, 1000.0*y1, 1000.0*hc))
  55.         f.write("\t\t\tvertex %.6f %.6f %.6f\n" % (1000.0*x, 1000.0*y1, 1000.0*hd))
  56.         f.write("\t\t\tvertex %.6f %.6f %.6f\n" % (1000.0*x, 1000.0*y, 1000.0*ha))
  57.         f.write("\t\tendloop\n")
  58.         f.write("\tendfacet\n")
  59.  
  60. f.write("endsolid Mesh\n")
  61.  
  62. f.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement