s is like flattening your data PARTIALLY - chopping an index off the end of the branch paths without obliterating the tree entirely. When working with one "set" of input data, a flatten works to get these lists to match up - but when working with multiple sets, we need to be careful to preserve the original branch indices that keep all four of your original regions separate. As a rule, whenever you're feeding two data trees into any component, they should have the same number of branches. (or one should have branches and the other should be a flat list, in other cases).
The rule of thumb I tend to teach is this:
In 90% of cases...
For lists, all your inputs should either have 1 item or N items. That is to say, if you're feeding 4 items into one input and 9 items into another, something is probably wrong.
For trees, all your inputs should have either 1 branch or M branches. That is to say, if you're feeding a tree w/ branches {0;0} to {0;3} into one input, and a tree w branches {0;0;0} to {0;3;8} into the other input, something is probably wrong.
Grasshopper essentially matches up branches first, then lists second. By "matching" I mean it processes them together. Simple example of the Line component - it will match the first branch of points in the A input to the first branch of points in the B input, creating lines between those points, then match the second branches, the third branches, etc. THEN, it applies the same logic to the level of the list (with a pair of matched branches {0;2}, match all the items in those branches to each other - first item in one branch to the first item in the other branch, etc.)
This is a tricky concept but it seems like you're already well on your way to understanding it from your definition - "PShift" is a critical tool in your path management arsenal. I hope this (overly long) response helps clear things up for you!
…
he TOF and TSRF indices. They show, how "distant" is your _PV_SWHsurface from the optimal _PV_SWHsurface surface in terms of tilt and azimuth angles.However, in your case we are not interested in TOF and TSRF indices. We would just like to know what are the _PV_SWHsurface optimal tilt and azimuth angles, regardless of the supplied _PV_SWHsurface.
So the circular surface supplied to the "TOF" component's _PV_SWHsurface input is irrelevant. It can be of any area, and any tilt/azimuth angle.The PV_SWHsurfacesArea output of the "PV SWH system size" component depends on a couple of factors:moduleActiveAreaPercent_ (leave it at 90%).
moduleEfficiency_,
systemSize_.Calculation of systemSize_ depends on your electricity demand, cost of the PV system, type of the object, country, local regulations etc. This is something that an engineer needs to determine.For example, in USA for a residential house in the Sunbelt, depending on finances, a household would try to cover 100% of its annual electricity needs with their PV system. Which means that the systemSize_ you chose needs to cover the annual electricity consumption. You can perform EnergyPlus simulation or use any other way to get the annual electricity consumption.
Ladybug "Photovoltaics Performance" component can calculate the optimal systemSize_ by given the annual electricity consumption.However the component is made to address fixed tilt and azimuth PV systems only.An approximate way to overcome this is to calculate the optimal systemSize_ for fixed tilt and azimuth PV system, and then multiply it with the "difference in %s" panel at the very right of the fixed_vs_tracker_PV2.gh file. Again, this is not what Ladybug "Photovoltaics Performance" component is made to do, but it will probably get you in a ball park.
Inputted 32 degrees for north_ direction is actually 328 degrees.This is due to Ladybug Photovoltaics being based on NREL model which uses clockwise angles convention. This convention is also most commonly used in solar radiation analysis.
Dubai weather data files are uploaded in here.
…
):
import rhinoscriptsyntax as rsstart=rs.AddPoint(0,0,0)end=rs.AddPoint([10,0,0])divide=20vec=rs.VectorCreate(end,start)vec=rs.VectorDivide(vec,divide)centerList=list()for i in range(divide): newVec=rs.VectorScale(vec,i) centerList.append(rs.CopyObject(start,newVec))for center in centerList: rs.AddCircle(center,2.0)any help appreciate thanks,roy…
Added by roy orengo at 4:03pm on November 15, 2016
):
import rhinoscriptsyntax as rsstart=rs.AddPoint(0,0,0)end=rs.AddPoint([10,0,0])divide=20vec=rs.VectorCreate(end,start)vec=rs.VectorDivide(vec,divide)centerList=list()for i in range(divide): newVec=rs.VectorScale(vec,i) centerList.append(rs.CopyObject(start,newVec))for center in centerList: rs.AddCircle(center,2.0)any help appreciate thanks,roy…
Added by roy orengo at 3:09am on November 16, 2016
GH, same as using sweep2 command in Rhino.
The one on the right is what I got so far (the output smooth our the kink of the original rails). Basically I am just following the methods provided by sdk sample: http://wiki.mcneel.com/developer/sdksamples/sweep2 .
The following is the function I copy and use directly from the SDK sample. By using this function, I can generate the sweep surface at right. But I want to have is the one in the middle with the kink edges. Can anyone show me how and where to modify he settings? I guess some sweep arguments need to be changed? I have try couples, such m_simplify, m_bSimpleSweep, m_bSameHeight, m_rebuild_count... but still cannot find a right combination for this function to output the sweep surface I want. Any suggestions or helps are very appreciated. Thanks for your help and time on this.
'Sweep2 function'----------------
Sub Sweep2( ByVal Rail1 As IOnCurve, _
ByVal Rail2 As IOnCurve, _
ByVal sCurves As List(Of IOnCurve), _
ByRef Sweep2_Breps As List(Of OnBrep))
'Define a new class that contains sweep2 arguments
Dim args As New MArgsRhinoSweep2
'Set the 2 rails
Dim Edge1 As New MRhinoPolyEdge
Dim Edge2 As New MRhinoPolyEdge
Edge1.Append(Rail1.DuplicateCurve())
Edge2.Append(Rail2.DuplicateCurve())
'Add rails to sweep arguments
args.m_rail_curves(0) = Edge1
args.m_rail_curves(1) = Edge2
args.m_bClosed = False
Dim section_curves As New List(Of OnCurve)
'Loop through sections to set parameters
For Each Section As IOnCurve In sCurves
Dim sCurve As OnCurve = Section.DuplicateCurve()
section_curves.Add(sCurve)
Dim t0 As Double = 0
If Not Edge1.GetClosestPoint(sCurve.PointAtStart(), t0) Then
If Not Edge1.GetClosestPoint(sCurve.PointAtEnd(), t0) Then
Dim s As Double = 0
sCurve.GetNormalizedArcLengthPoint(0.5, s)
Edge1.GetClosestPoint(sCurve.PointAt(s), t0)
End If
End If
args.m_rail_params(0).Append(t0)
Dim t1 As Double = 0
If Not Edge2.GetClosestPoint(sCurve.PointAtStart(), t1) Then
If Not Edge2.GetClosestPoint(sCurve.PointAtEnd(), t1) Then
Dim s As Double = 0
sCurve.GetNormalizedArcLengthPoint(0.5, s)
Edge2.GetClosestPoint(sCurve.PointAt(s), t1)
End If
End If
args.m_rail_params(1).Append(t1)
Next
'Set shapes
args.m_shape_curves = section_curves.ToArray
'Set the rest of parameters
args.m_simplify = 0
args.m_bSimpleSweep = False
args.m_bSameHeight = False
args.m_rebuild_count = -1 'Sample point count for rebuilding shapes
args.m_refit_tolerance = RMA.Rhino.RhUtil.RhinoApp.ActiveDoc.AbsoluteTolerance()
args.m_sweep_tolerance = RMA.Rhino.RhUtil.RhinoApp.ActiveDoc.AbsoluteTolerance()
args.m_angle_tolerance = RMA.Rhino.RhUtil.RhinoApp.ActiveDoc.AngleToleranceRadians()
Dim sBreps() As OnBrep = Nothing
If (RhUtil.RhinoSweep2(args, sBreps)) Then
For Each b As OnBrep In sBreps
Sweep2_Breps.Add(b)
Next
End If
Return
End Sub
…
ive collaborative environment.
TYPE : Course module and Workshop
The event is open for anybody interested from all the fields of design, including: architecture, interior design, furniture design, product design, fashion design, scenography, and engineering.
1. COURSE MODULE (20-23 April 2014) - optional
+ type: 3 days intensive course regarding basic knowledge in parametric design (LEVEL 1)
+ software: Rhinoceros & Grasshopper
+ plugins: Kangaroo, Weaver Bird, Lunch box, Ghowl, Geco
+ achievements:
- acquainting to the components & the concept of Generative Design
- understanding the strategies in Algorithmic Design
- how to easily insert simple mathematical equation into the project to gain more control
- how to utilize proper plugins with respect to their nature of the project
- interacting with different analysis platforms such as Ecotect & remote controller
- solving several exercises with different scales( 2D- 3D ) during each phase of the workshop
2. WORKSHOP (23-27 April 2014)
A 5 day Design-Based Research Workshop exploring new techniques in Digital Architecture/Fabrication, with a specific focus on the use of generative systems and parametric modeling as tools for creative expression.
Our ultimate goal is to increasing the efficiency of utilizing digital tools in parallel with geometric performance of the primitive design agent.
+ + CONCEPT
Fashion and Architecture are both based on basic life necessities – clothing and shelter.
However, they are also forms of self-expression – for both creators and consumers.
Both fashion and architecture affect our emotional being in many ways.
The agenda of this workshop is to investigate on the overlap between these two areas of design, art & fashion.
Fashion and architecture express ideas of personal, social and cultural identity, reflecting the concerns of the user and the ambition of the age. Their relationship is a symbiotic one and throughout history, clothing and buildings have echoed each other in form and appearance. This only seems natural as they not only share the primary function of providing shelter and protection for the body, but also because they both create space and volume out of flat, two-dimensional materials.
While they have much in common, they are also intrinsically different – address the human scale, but the proportions, sizes and shapes differ enormously.
+ + + OBJECTIVES
So far, Architects have been using techniques such as folding, bending etc. to create space, structural roofs or different other structural shapes.
The agenda of this workshop goes further with the investigation of algorithmic thinking through generative tools Integrated in design.
The challenge is creating a bridge that connects these two areas of design, architecture and fashion that perform at two opposite scales.
+ + + + TECHNICAL BRIEF
In the early stages physical models and low-tech strategies will be used, allowing the participants to gain a greater understanding of materials, fabrication and assembly methods as well as simple, yet pragmatic structural solutions.
Later in the workshop these strategies will be digitalized and elaborated using software visualizing tools such as Rhinoceros and the algorithmic plug-in Grasshopper.…
rves/holes. However, the Kangaroo script itself is prone to locking up so it seems like it might take forever. You can even double click stop the timer from the Windows task bar, I hadn't noticed that before:
You have to use that or right click disable the timer since even with the Reset toggle button input set to True the timer itself locks up the script a bit when you are changing things around.
Just setting the min/max numbers both to a desired mesh size gives a uniform mesh:
Oh weird, it's about if the timer is right click set to so small an interval that it gets ahead of Kangaroo! When you see how long each cycle is taking with the Display > Canvas Widgets > Profiler you just set the timer for above that and the interface comes back into being responsive. It only takes a few Kangaroo cycles to do the inflation, so a full second timer interval is even workable.
A finer mesh:
It's funny running it so slow since it overinflates at first, bulging out, before it equilibrates.
You have control over inflation pressure and mesh stiffness, for a variety of effects.
This is a good system once I realized the timer needed to be mellowed out.
What made it work was the fast custom meshing since a normal mesh is awful and MeshMachine wouldn't work with sharp corner holes at all, breaking out of the boundary even if I fixed curves or vertices or did the equivalent with NURBS surfaces instead of a starting mesh.
There is an initiation time for Kangaroo that doesn't show up on its Profiler time that happens even with the timer off.
There are some fine areas that can't inflate with a reasonable mesh setting:
Worth playing with but no match for ArtCAM since it suffers odd delays in between working fast. If I could get better 2D meshes, that were more adaptive it would be better, but MeshMachine is one of the only re-meshers I know and it's broken for even mildly sharp hole features.
Ah, how about a crude mesh that is then subdivided, guaranteeing inner vertices everywhere? Sort of works, but is still too dense. Way too dense to even do anything. The subdivision triangulates the quads, vastly increasing the mesh wire density. Better just to make a finer initial mesh with plenty of quads.…
Added by Nik Willmore at 12:57am on February 21, 2016
; GH, this one came out and rhinoceros is disappear...like this
it said " Rhinoceros5's working is stopped. because some problems occured so Rhinoceros5 can't work correctly no longer " then I have no choice but terminate Rhinoceros.
There are some discussion about RhinoIronPython installing numpy though, no one has same problem like me. so Please somebody tell me!!
and one more question...just in case, I tried to install numpy into ironPython2.7
C:\Program Files (x86)\IronPython 2.7>ipy "C:\Program Files (x86)\IronPython 2.7\ironpkg-1.0.0..py" --installBootstrapping: c:\users\owner\appdata\local\temp\tmp2nand1\ironpkg-1.0.0-1.egg 118 KB [.................................................................]
C:\Program Files (x86)\IronPython 2.7>ironpkg -hUsage: ironpkg-script.py [options] [name] [version]
.
.
.
C:\Program Files (x86)\IronPython 2.7>ironpkg scipyWrote configuration file: C:\Users\owner\.ironpkg=============================================================================Traceback (most recent call last): File "C:\Program Files (x86)\IronPython 2.7\ironpkg-script.py", line 10, in <module> File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\enstaller\main.py", line 364, in main File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\enstaller\indexed_repo\chain.py", line 27, in __init__ File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\enstaller\indexed_repo\chain.py", line 67, in add_repo File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\enstaller\utils.py", line 92, in write_data_from_url File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 435, in open File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 407, in _call_chain File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 654, in http_error_302 File "C:\Program Files (x86)\IronPython 2.7\Lib\httplib.py", line 1261, in __init__ File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\enstaller\utils.py", line 73, in open_url File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 154, in urlopen File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 547, in http_response File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 467, in error File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 429, in open File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 446, in _open File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 407, in _call_chain File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 1240, in https_open File "C:\Program Files (x86)\IronPython 2.7\Lib\urllib2.py", line 1167, in do_openAttributeError: 'module' object has no attribute '_create_default_https_context'
C:\Program Files (x86)\IronPython 2.7>
how can I deal with this error?…