tag:blogger.com,1999:blog-639831678347849945.post3031930507829208886..comments2023-05-28T05:32:54.421-07:00Comments on Generative Design Computing: vector surface attractor | rhinoscript pythonGlenn Wilcoxhttp://www.blogger.com/profile/13633046511062059242noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-639831678347849945.post-80590954237807874632019-10-02T06:30:53.171-07:002019-10-02T06:30:53.171-07:00Very helpful, but how do you get objects to start ...Very helpful, but how do you get objects to start responding to the attractor point? for example, I am trying to get surfaces in my script to start turning/responding to the sun (the attractor point). Below is my current script. I want to get the triangle aggregation to start responding to sun conditions, but I'm not sure how to go about it.<br /><br />import scriptcontext<br />import rhinoscriptsyntax as rs<br />import random as rd<br />from math import atan2, degrees<br /><br /><br />SrfList = []<br /><br />#define the function<br /><br />def DivideTriangleSrf(srf,delete,scaleFactor):<br /><br /> #duplicate the border and return a list<br /><br /> surfaceBorderlist = rs.DuplicateSurfaceBorder(srf, 1)<br /> if len(surfaceBorderlist)>0:<br /> Border = (surfaceBorderlist[0])<br /><br /> #get line segments from the border as individual curves<br /><br /> linesegments = rs.ExplodeCurves(Border)<br /><br /> linesegment1 = linesegments[0]<br /><br /> linesegment2 = linesegments[1]<br /><br /> linesegment3 = linesegments[2]<br /><br /><br /> curvelenght = (rs.CurveLength(linesegment1))<br /><br /><br /> #calculate the middle points<br /><br /> midPoint1 = rs.CurveMidPoint(linesegment1)<br /><br /> midPoint2 = rs.CurveMidPoint(linesegment2)<br /><br /> midPoint3 = rs.CurveMidPoint(linesegment3)<br /><br /><br /><br /> #calculate the vertex<br /><br /> vertexPoints = rs.CurvePoints(Border)<br /><br /> point1 = vertexPoints[0]<br /><br /> point2 = vertexPoints[1]<br /><br /> point3 = vertexPoints[2]<br /><br /><br /><br /> #calculate the vectors<br /><br /> normalVectors = rs.SurfaceNormal(srf,(0,0))<br /><br /> normalVectors = rs.VectorScale(normalVectors,curvelenght*scaleFactor)<br /><br /><br /> #since normal vector is by default 0-based, I add it to the midPoints<br /><br /> midPoint1N = rs.VectorAdd(normalVectors,midPoint1)<br /><br /> midPoint2N = rs.VectorAdd(normalVectors,midPoint2)<br /><br /> midPoint3N = rs.VectorAdd(normalVectors,midPoint3)<br /><br /> #add surfaces<br /><br /> baseSrf = rs.AddSrfPt((midPoint1N,midPoint2N,midPoint3N))<br /><br /> triangleSrf1 = rs.AddSrfPt((point1,midPoint1N,midPoint3N))<br /><br /> triangleSrf2 = rs.AddSrfPt((point2,midPoint2N,midPoint1N))<br /><br /> triangleSrf3 = rs.AddSrfPt((point3,midPoint3N,midPoint2N))<br /><br /><br /> #For further subdivision<br /><br /> if(curvelenght>4):<br /><br /> DivideTriangleSrf(baseSrf,delete,scaleFactor)<br /><br /> DivideTriangleSrf(triangleSrf1,delete,scaleFactor)<br /><br /> DivideTriangleSrf(triangleSrf2,delete,scaleFactor)<br /><br /> DivideTriangleSrf(triangleSrf3,delete,scaleFactor)<br /><br /><br /> SrfList.append(baseSrf)<br /><br /> SrfList.append(triangleSrf1)<br /><br /> SrfList.append(triangleSrf2)<br /><br /> SrfList.append(triangleSrf3)<br /><br /><br /><br /> if(delete):<br /><br /> rs.DeleteObjects((baseSrf,triangleSrf1,triangleSrf2,triangleSrf3))<br /><br /> rs.DeleteObject(Border)<br /><br /><br /><br /><br />#define variables<br /><br />theSurface = rs.GetObjects("selectsurface that is defined by at least 3 points",8)<br /><br />chooseDelete = rs.GetString("Do you want to delete the surfaces?",None)<br /><br />scaleFactor = rs.GetReal("Enter scale factor",0.25,0.1,4)<br /><br /><br />#Call the function<br />for i in theSurface:<br /> DivideTriangleSrf(i,chooseDelete,scaleFactor)<br /><br />rs.DeleteObjects(theSurface)<br /><br /><br /><br />#def FacetheSun():Anonymoushttps://www.blogger.com/profile/05414642051306287300noreply@blogger.comtag:blogger.com,1999:blog-639831678347849945.post-72607302526111025992017-09-26T14:14:11.518-07:002017-09-26T14:14:11.518-07:00Hurrah, that's what I was searching for, what ...<br />Hurrah, that's what I was searching for, what a information! existing here at this weblog, thanks admin of this website. <a href="https://loginaid.org/" rel="nofollow">gmail email login</a>Anonymoushttps://www.blogger.com/profile/15424195959901517953noreply@blogger.com