#!/usr/bin/env python #Sam Calisch, calisch@mit.edu, 2012 from __future__ import division import rhinoscriptsyntax as rs from math import * from convenience import * def ExportControlPoints(crvs): filter = "Text File (*.txt)|*.txt|All files (*.*)|*.*||" filename = rs.SaveFileName("Save Control Points As", filter) if not filename: return file = open( filename, 'w' ) points = [] for crv in crvs: points.extend(rs.CurvePoints(crv)) #print 'point size = ',len(points) #if not points: return #i=1 print 'pts size = ',len(points) for pt in points: # print "At ", i, "Current file position : ", file.tell() # i=i+1 file.write( ','.join(map(str,[pt.X,pt.Y,pt.Z]))+'\n' ) file.close() if __name__ == '__main__': pts = [] crv = rs.GetObject("Select curve", rs.filter.curve) min_pt = rs.PointCoordinates(rs.GetObject("Select min point", rs.filter.point)) max_pt = rs.PointCoordinates(rs.GetObject("Select max point", rs.filter.point)) res = 100. for i in range(int(res)): x = min_pt[0]+(i/res)*(max_pt[0]-min_pt[0])+.001 l = rs.AddLine([x,0.,0.],[x,100.,0.]) result = rs.CurveCurveIntersection(crv,l) rs.DeleteObject(l) p1 = result[0][1] p2 = result[1][1] rs.AddLine(p1,p2) pts.append([[p1.X,p1.Y],[p2.X,p2.Y]]) file = open('foot-points','w') for pt in pts: file.write('%f,%f,%f,%f\n' % (pt[0][0],pt[0][1],pt[1][0],pt[1][1])) file.close() # ExportControlPoints(sections)