op van maximaal 1000 iteraties
3) Offset de polyline en maak een nieuwe Brep van alle curven
4) Bepaal de Area-centroid van de Brep
5) Bepaal het verschil tussen de huidige centroid en de gezochte centroid
6) Als dit verschil minder is dan 1e-12 breken we af
7) Vermenigvuldig het verschil met vier en pas de polyline aan
8) herhaal (3 - 7)
Is dit min of meer wat je wilde? Het lijkt dat er ~50 iteraties nodig zijn voor een antwoord dat accuraat is binnen de 1e-12 eenheden.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
Added by David Rutten at 5:26am on August 24, 2010
t how to do it on the 6 surfaces of my new model.
The goal is to lasercut it out and put the 6 surfaces together to make a lamp. :)
I hope someone can help.
Best regards
Sune…
I want to trace a parallel line to a2. This line cuts r3 at B.
At this point B I need to trace a new parallel line to a3 that cuts r2 at C...
and so on and so forth,
red lines are auxiliary lines parallels to green ones.
I think it could be get with a loop but I have no idea to do it.
Could anyone give me a clue?
Thanks a lot!!
…
didn't look at it that closely), other than to say tree data structure is helping you and hurting you.
What I did to fix the file was work backwards. Looking at only the left panel you are trying to create 11 total planar surfaces from edge curves (8 curves per surface). That means you should be generating 11 of each type of curve so that you will have 88 total curves when you attempt to join them.
Tree data was in some cases giving you 121 of each type of curve (lists matching with tree structure...) so I worked backwards from your individual curves to flatten the inputs until ending up with only 11 (the expected number) of each type of curve.
…
ve jewelry design course teaching Rhino, Grasshopper, Keyshot and 3D printing in collaboration with mything and ShapeDiver. Taught by Eva Blšáková - Zaha Hadid Studio Vienna Andrei PAdure - DesignMorphine / Digital Matters Apply Now and view details at: www.designmorphine.com/workshop/future/algorithmic-accessories-v3/ Follow us on Facebook: https://www.facebook.com/designmorphine and Instagram: https://www.instagram.com/designmorphine/…
use for some typical reasons why solar access can be important:
Solar Access for Passive Solar Heating - The conditional statement should request sun vectors for any hours below the balance point of the building (the temperature at which the building starts requiring additional heating). For residences, this can be as high as 18C and for commercial/retail buildings with high internal heat gains, this can be as low as 10C. 16C is around what you might find for some residences with better insulation and is probably the reason why that is chosen in the file.
Solar Access for Outdoor Thermal Comfort - The conditional statement should request sun vectors for any hours below the lower limit of outdoor comfort (UTCI uses 9C for this lower limit).
Solar Access for Health of Plants/Trees in a Park/Garden - This is a bit of the opposite of the other metrics since you want hours of the warmer season. In this case, I usually use solar radiation as the annualHourlyData with the conditional statement and I request hours that are above a certain radiation level (where the plants are benefiting the most). I then use an analysisPeriod to get rid of any months of the year when the trees don't have leaves on them.
Hope this helps,
-Chris…
50 and reduced the 'cell size' slider to 0.5. When the 'Azimuth' angle is changed to 180 +- 90 (dawn or dusk), the points are widely dispersed, reducing the density and increasing the number of cells in the "sparse grid". Under these conditions, the number of cells was ~2000 and the Profiler time for 'Boundary' went up to a full minute or more each time 'Altitude' or 'Azimuth' was changed.
So I created this code to benchmark some alternatives and found two interesting things:
'Boundary' surface performance (v.1) is not linear. As the number of surfaces goes from 1000 to 2000, the time per surface goes up dramatically.
I tried three alternatives for creating a rectangular surface at a given point that are all substantially faster: v.2, v.3 and v.4. For 2000 points, v.4 is 150 times faster than v.1 !!!
Performance of v.2, v.3 and v.4 are similar and all scale up very well. To benchmark beyond 2000 points, I recommend disabling the VERY SLOW v.1. At 5000 points the 'Pop2D' component takes ~11.3 seconds but v.3 and v.4 take less than one second to generate 5000 surfaces!
See boundary_2015Nov19a.gh attached.
So I replaced the 'Rectangle' and 'Boundary' components in my sun reflection model with v.4 in focus_2015Nov19b.gh (also attached) and the performance is amazing.
I'm sure someone has mentioned this performance issue with 'Boundary' on the forum before but as with many things, I didn't realize what a major obstacle it can be until I discovered this for myself.…
Added by Joseph Oster at 9:16pm on November 19, 2015
grout lines, a tile surface and tile perimeter poly line). I then use that as a Mesh (from Rhino) in the second definition.
2. I can tile out the mesh surface and rotate all the tiles in 90 deg. increments.
To get what I wanted. I took the Mesh and have copied it in series to make a grid. I can then control the dimensions of the grid. X and Y extents. I can also rotate the tiles around their centers.
The spacing of the grid is set from an edge curve of the tile (or mesh). This sets the size of the squares in the grid themselves.
See definition, images and Rhino 4 File, to give the definitions a shot. I have labeled how to use them.
My question -- how can I randomly rotate squares in my grid? I would like the deg of rotation to be random and also which tiles they are.
Also how might I rotate (every other tile) for example? So that I can control the pattern more?
Thoughts?
Thanks!
…
ror when it comes to points on edges of the surface.I guess it is because normal vectors at a few of points are invalid. After all, because of these invalid points, an error message comes out which is saying " Runtime error (PythonException) : Unable to add polyline to document " and it results in no output. Please give me some help if you know how to handle this problem. I post a code below.Thanks in advance.
---------------------------------------------------------------------------------------------
import Rhinoimport rhinoscriptsyntax as rsimport mathimport ghpythonlib.components as gh
output_crvs = []
for pt1 in input_pt :output_pts = []newPt = pt1output_pts.append(newPt)
while len(output_pts) <= 100: newPt = outputpoint(base_srf, newPt, distance_factor) output_pts.append(newPt)
output_crv = rs.AddPolyline(output_pts)output_crvs.append(output_crv)A = output_crvs
def outputpoint(base_srf, input_pt, distance_factor):centre_point = rs.AddPoint(0,0,0)height_point = rs.AddPoint(0,0,10)
zaxis = rs.VectorAdd(centre_point, height_point)
cp_pt = rs.SurfaceClosestPoint(base_srf, input_pt)normal_vector = rs.SurfaceNormal(base_srf, cp_pt)drain_vector = rs.VectorCrossProduct(normal_vector, zaxis)
dvector2 = rs.VectorUnitize(drain_vector)dvector3 = rs.VectorRotate(dvector2, 90, normal_vector)
mpt = gh.DeconstructVector(distance_factor*dvector3)moved_pt = rs.PointAdd(input_pt, mpt)moved_uv = rs.SurfaceClosestPoint(base_srf, moved_pt)output_pt = rs.EvaluateSurface(base_srf, moved_uv[0], moved_uv[1])
return output_pt…
g from a list of 12 items I would find all the combinations taking just 4 at time.
I'd use a Stream gate that takes the indexes of the items and pass them to a list item in order to select just the items of the combination. Doing so I can choose a single combination of index at time to pass to the list item.
In this moment all the data come out from the first gate, all the others are empty.
If I pass these index to the list item it gives me an error (probably because of the data structure).
*long version*
I start from a list of 12 segments, all of them with the starting point in common and the ending point distributed regularly in the space. It's a quite simple starting point.
What I'm trying to achieve is to find all the possible spatial configurations made of 2, 3, 4 segments. I started with 2 segments so I've 12^2=144 possible configurations but just 4 different configurations that can intuitivelly be recognized (60°, 90°, 120°, 180°).
Doing the same with 3 segments generates 12^3=1728 configurations and I don't know how many different ones. With 4 segments I've got 12^4=20736 possible configurations.
As you can imagine many configurations are identical but just with a different orientation so at the end I'll have to parse geometrically the output to delete duplicates (I'll address this later on).
Please could you help me to figure out how to mix these segments in different configurations?
Thank you in advance.…