Created
October 14, 2025 10:35
-
-
Save stephensmitchell/a3ffcf1118510442ee14eba9379672d3 to your computer and use it in GitHub Desktop.
Import points from a CSV file rotate them and connect into a polyline
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #https://help.alibre.com/articles/#!alibre-help-v28/import-points-from-a-csv-file-rotate-them-and-connect-into-a-polyline | |
| # 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 = 45 | |
| rotationpoint = [15.0, 0.0] | |
| # file to import, replace with your own example | |
| csvfile = r'C:\temp\sample.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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment