Browsed by
Tag: csv

CSV Import with Point Rotation

CSV Import with Point Rotation

Compatible with WizoScript versions: 1.40

The following script shows how to import a set of 2D points from a CSV file, rotate them about a arbitrary point and then add them to a 2D sketch.

# imports a set of 2D points from a csv file, rotates them and then
# adds them to a 2D sketch with lines connecting the points
 
# specify which libraries we are going to use
import csv
import math
 
# configuration
angle = 30.5
rotationpoint = [5.0, 5.0]
csvfile = r"C:\Users\Andy\Example.csv"
 
# rotates a point around another point
# passed is the angle, the point to rotate and the origin of the rotation
# copied from http://ubuntuforums.org/showthread.php?t=975315&p=8618044#post8618044
def rotate2d(degrees,point,origin):
  x = point[0] - origin[0]
  yorz = point[1] - origin[1]
  newx = (x*math.cos(math.radians(degrees))) - (yorz*math.sin(math.radians(degrees)))
  newyorz = (x*math.sin(math.radians(degrees))) + (yorz*math.cos(math.radians(degrees)))
  newx += origin[0]
  newyorz += origin[1] 
  return newx,newyorz
 
# list of points, empty for now
# points will be stored as [x1,y1, x2,y2, ... ,xn,yn]
points = []
 
# open csv file
f = open(csvfile)
 
# create csv reader and read in lines
reader = csv.reader(f)
for row in reader:
  # column 0 contains x, column 1 contains y
  x = float(row[0])
  y = float(row[1])
 
  # rotate point and add to list of points
  points.extend(rotate2d(angle, [x, y], rotationpoint))
 
# finished with csv file
f.close()
 
# show number of points found
print "Found %d points" % (len(points) / 2)
 
# create part
MyPart = Part("My Part")
# add sketch on XY plane
PointSketch = MyPart.AddSketch("Point Sketch", MyPart.GetPlane("XY-Plane"))
# add points with lines connecting them
PointSketch.AddLines(points, False)