her than number, where length was the fixed diameter of my prototype sphere.
That way, I thought, as the length of the ISOcurves changes along the height of my dome/shape the number of spheres along the line would change to fit. This works pretty well. The problem was shifting the alternate ISOcurve seams to get a psuedo staggered effect. I don't mind some overlap if the result is aesthetically pleasing (wink).
This only worked along the ISOcurves until the length started to change appreciably. Then the stagger factor varied. This was okay for my purposes since I was working with a fixed size sphere and could expect this.
I suppose that one could very slightly change the diameter of the spheres to make them fit more closely. If this variance stayed very low (maybe in the 1 or 2% range) then this would give the effect of a consistent tessellation.
Igor's Idea of using a hexagonal grid and placing spheres at the centroids is an excellent one as well.
The problem is that once you begin to vary the curvature of the target surface, as in my dome, the hex cells compress because he's using a rectangular array and projecting it onto a domed surface. If there was some way to reduce the cell count as the ISO curve length decreased then this might work better as well.
Another solution might be, as hinted at by Igor, using a geodesic dome with regular cells approximating the dome structure. Since my proto sphere diameter is typically 1 unit and the dimensions are typically around 40 x 18 x 20 units this result in a density of 14400 per dome. The faceted nature of the Geodesic would be smoothed out by the sheer number of cells. Another way to look at this would be to populate the vertices of a polyhedron which approximates the dome.
Unfortunately I have no idea how to do this. But I'm really eager to see what you folks come up with. Meanwhile I'm playing with both sets of definitions to understand them.…
u isolate specific mesh lines then along the intersections, without having to bake the whole thing first?
wbEdges, and then sort them out of the list.. how? By trial & error? I wouldn't know how to identify the ones I'd need to feed to the Kangaroo Engine with a different stiffness...
That's a picture of my original attempt. The relaxed KGRO Mesh (red) being turned into brep, sliced with multiple planes at once to gain a new series of breps (someones neat python script), and as a patch-surface via Mesh UV fed back to KGRO again, resulting in further relaxed meshes (green).
Doesn't look proper since the last meshes via Mesh UV ether overlap from the patch surface or are to short (as above), but the basic principle worked.
Maybe the last resulting mesh would fit if I get it to work via surface from 4 curves instead of the patching solution? I have the breps borders duped to generate a surface from them , but when exploded I get more than 20 little line-like curves and not 4 curves for the 4 surface edges ( I just made a patch surface instead,... I think I should solve this sooner or later though).
Best would be to slice a mesh with multiple planes and get a series of meshes(thereby avoiding going from mesh to brep to mesh), but I couldn't figure out how or if that is possible.
In any case, thanks a lot..... .. and I remain curious about the new release of KGRO! :)
…
. Truth is that in 99.9999% of cases is just a couple of code lines specifically written for ...er ... a specific case (meaning that is useless for other cases). Making a Jack for all trades capable to manage ANY situation ... means quite a few hours of brain(?) storming ... and anyway this is not the way that I approach things because I have absolutely no interest to do GH "plug-in" type of stuff.
See the left vertical bar and imagine doing business with the small S: There's 2 "clash" situations occurring: the upper has meaning (where cat VS dog and dog VS cat yields a valid "split") but the lower yields an invalid solid since that "portion" of the S can't split the bar (it only just "penetrates" into the solid).
In order to fix things we need to gather information about things called BrepTrims ("indexed" Curves per BrepFace - so to speak) that (in this case anyway) are either Mated or Boundary ... or ... hmm ... Seam (but should not be any Seam in fact).
This C# for instance gets the invalid breps (per recursive split) and samples these mysterious BrepTrims in an object type of Data Tree: the main dimension is the Brep face index, the equivalent second dim 0 contains the BrepTrim curve and the other has booleans for an 1:1 "rating" of the trim based on a simple question: are you a Seam? (== bad boy)).
Thus "reconstructing" an invalid brep is rather easy based on what that Tree tells us :
What all the above ultra freaky and.or confusing and/or off-topic things mean? Well ... I have about 20 C# that do any imaginable Brep "opp"/query ... but are all classified as internal > thus > as I said, one of these days I'll try to remove "some" lines of code and post something that can do a thing or two more on that matter.…
Added by peter fotiadis at 12:35am on September 13, 2016
pper" in the command line in Rhino:
"Unable to load Grasshopper.dll plug-in: Rhino version not specified."
Details of the command line are as follows:
Command: GrasshopperRhino.NET plug-in: C:\Program Files\Rhinoceros 4.0\Plug-ins\Grasshopper\Grasshopper.dll> - referenced assembly count: 20> - mscorlib> - Microsoft.VisualBasic> - System.Windows.Forms> - GH_IO> - System.Drawing> - System> - RhinoCommon> - GH_Util> - OpenTK.GLControl> - QWhale.Editor> - QWhale.Syntax> - QWhale.Syntax.Parsers> - System.Core> - System.Design> - System.Xml> - System.Data> - OpenTK> - QWhale.Common> - System.Xml.Linq> - System.ServiceModel> Rhino.NET error: unable to locate a reference to Rhino_DotNET.DLL> Unable to load Grasshopper.dll plug-in: Rhino version not specified.
I tried creating the new user and looks like that one works too, but I do need my current "user" profile as there are a lot of things already set up well, do not want to miss those.
If someone could advise me on where to look for the problem?
Thank you,
Artem
…
e openings with the simple calculation of room air and IES.
I am testing a shoebox of 15x5m, 3m height, 2 windows of 1sqm, only 1 person of internal gains, no heating, no cooling, basically nothing.
The tests were running fine with the "Wind pressure coefficient type" as Input on the AFN simulation control. But, as the number of ach that I was obtaining was tiny (approx. 1/6 of the ach of room air) I thought that the problem could be the Input and my wind pressure coefficient calculations. Therefore, I changed the WPCoefficient type to "Average surface calculation" and I deleted all the wind pressure elements.
As soon as I change this (and only this) the simulation crashes because of the error "DualSetPointWithDeadBand: Unanticipated combination of heating and cooling loads - report to EnergyPlus Development Team" And also, my heating set point changes from -100 degrees to 12
I've look for this in the bigladder manual for energy plus and looks like if I had set a thermostatic zone control on dual set point with dead band, what I haven't, because, to be honest, I didn't even know it existed.
I hope any of you can help me, because I've been trying hard, but I don't find which is the problem.
I have to say that all the AFN data is internalised (beside the run simulation) and will be a bit difficult to read. I'm sorry for this but, as they are about 20 user objects, I thought it was too much to upload.
Thanks a lot…
lass BrepDeform Inherits GH_Component Public Reslist As New List(Of String) Public Sub New() MyBase.New("BrepDeform", "Deform", _ "移动物件的控制点" & vbCrLf & "(Move the control Point to change a object)", "SEG", "Modify")
End Sub Public Overrides ReadOnly Property ComponentGuid As System.Guid Get Return New Guid("8226e0ea-ed6b-47c2-8a24-244f044152d8") End Get End Property Protected Overrides ReadOnly Property Internal_Icon_24x24() As System.Drawing.Bitmap Get Return My.Resources.SEG_BrepDeform End Get End Property Protected Overrides Sub RegisterInputParams(ByVal pManager As GH_Component.GH_InputParamManager) ' pManager.AddTextParameter("Guid", "Id", "将要被替换的犀牛物件" & vbCrLf & "(RhinoObjects that will be replaced)", GH_ParamAccess.item) 'Dim guidParam As New Param_Guid pManager.AddParameter(New Param_Guid, "Guid", "Id", "将要被替换的犀牛物件" & vbCrLf & "(RhinoObjects that will be replaced)", GH_ParamAccess.item) pManager.AddPointParameter("ControlPoint3d", "C", "控制点的位置" & vbCrLf & "(Control Point's location)", GH_ParamAccess.item) pManager.AddPointParameter("NewPoint3d", "P", "新控制点的位置" & vbCrLf & "(New Control Point's location)", GH_ParamAccess.item) pManager.AddNumberParameter("Tolerace", "T", "输入点与物件实际控制点对比的精度" & vbCrLf & "(Tolerace for the Control Point match)", GH_ParamAccess.item, 0.1)
pManager.AddBooleanParameter("BlMove", "M", "如果是True则进行移动" & vbCrLf & "(If true Perform the Move)", GH_ParamAccess.item, False)
End Sub Protected Overrides Sub RegisterOutputParams(ByVal pManager As Kernel.GH_Component.GH_OutputParamManager) pManager.AddTextParameter("Result", "RG", "结果列表" & vbCrLf & "(Result)", GH_ParamAccess.list) End Sub Public Overrides ReadOnly Property Exposure As GH_Exposure Get Return GH_Exposure.primary End Get End Property
Protected Overrides Sub SolveInstance(ByVal DA As Kernel.IGH_DataAccess) If Banner.astrict.showmessage Then Return Dim Ids As Guid = Guid.Empty 'Dim Ids As String = String.Empty Dim tpt As Point3d = Point3d.Unset, opt As Point3d = Point3d.Unset Dim tolar As Double = 0.1 Dim blMove As Boolean = False If Not DA.GetData(0, Ids) Then Return If Not DA.GetData(1, opt) Then Return If Not DA.GetData(2, tpt) Then Return If Not DA.GetData(3, tolar) Then Return If Not DA.GetData(4, blMove) Then Return If Not blMove Then GoTo line1 Reslist.Add(Now & "_未替换!(Replace failed!)") Else Reslist.Clear() ' Grasshopper.Instances.ActiveCanvas.ModifiersEnabled = False End If
' rt.AddRange(docobjlist.Select(Function(geoobj As RhinoObject) GH_Convert.ObjRefToGeometry(New ObjRef(geoobj.Id)))) 'Private Checked(5) As Boolean, Namestr() As String = {"Point", "Curve", "Brep", "Mesh", "TextDot", "TextEntity"}
Try
Dim rh As RhinoDoc = Rhino.RhinoDoc.ActiveDoc Dim rhobj As RhinoObject = rh.Objects.Find(Ids) ' Dim rhobj As RhinoObject = rh.Objects.Find(New Guid(Ids))
Dim bobj As BrepObject = CType(rhobj, BrepObject) RhinoApp.RunScript("Cancel", False) RhinoApp.RunScript("Cancel", False) bobj.Select(True)
RhinoApp.RunScript("_SolidPtOn", False) Dim gobjs As GripObject() = bobj.GetGrips ' rh.Views.RedrawEnabled = False For Each grpobj As GripObject In gobjs
If grpobj.CurrentLocation.DistanceTo(opt) < tolar Then grpobj.Select(True) Dim CurrentPln As Plane = RhinoDoc.ActiveDoc.Views.ActiveView.ActiveViewport.ConstructionPlane Dim tropt As New Point3d(opt), trtpt As New Point3d(tpt) tropt.Transform(Transform.PlaneToPlane(Plane.WorldXY, CurrentPln)) trtpt.Transform(Transform.PlaneToPlane(Plane.WorldXY, CurrentPln))
Dim movestr As String = "_move " + String.Format("{0},{1},{2} ", tropt.X, tropt.Y, tropt.Z) + String.Format("{0},{1},{2} _Cancel _Cancel", trtpt.X, trtpt.Y, trtpt.Z) RhinoApp.RunScript(movestr, True) grpobj.Select(False) End If
Next
'RhinoApp.RunScript("Cancel", False) 'RhinoApp.RunScript("Cancel", False) '' rh.Views.RedrawEnabled = True Reslist.Add(Now & "_替换成功!(Replace Success!)") Catch ex As Exception Reslist.Add(Now & "_替换失败!(Replace failed!)" & vbCrLf & ex.Message)
End Try ' Grasshopper.Instances.ActiveCanvas.ModifiersEnabled = True
line1: DA.SetDataList(0, Reslist) End Sub
'Private Sub Testt_PingDocument(sender As IGH_DocumentObject, e As GH_PingDocumentEventArgs) Handles Me.PingDocument ' Dim Mbool = Aggregate bcbool In Checked Into cb = Any(bcbool)
' If Not Mbool Then ' Checked(0) = True ' Message = Namestr(0) ' Order = 0 ' End If 'End Sub
End Class
The picture below shows the two question.
Question One I must use data dam, or the component can't batch deal the brep. I don't know why, I have You can give me a solution to make it working normal not using the data dam
Question Two I can not uset the Button component, If I use it, the gh canvas will die with some mouse event--. I have see this problem before in this forum,but there is no solution and explain. I want to know why and How to solve it.
I don't know if I have made my question clear,if not give a message. Thank you! Thank you all.
The gh test file and 3dm test file in the upload files.
…
he Summer in the City program, part of the Portland School of Architecture and Allied Arts (an extension to University of Oregon).
Using both Grasshopper and the Firefly plug-in, this workshop will focus on the design of innovative facade prototypes that are configurable, sensate, and active. Students will become familiar with the terminology used in interactive facade design including an overview of hardware (ie.sensors, actuators, and programmable microcontrollers) as well as software interfaces terminology. We'll learn new prototyping techniques and develop digital and physical models which can respond to a plurality of environmental and user driven forces. This workshop will take a hands-on approach, and you will walk away with the ability to build your own custom electronic circuits (using the Arduino), as well as create interactive simulations and models.
This course will primarily focus on physical computing techniques. Unfortunately, given the time constraints of the workshop, I will not be able to provide an extensive overview of the Grasshopper interface (it is suggested that participants have some familiarity with the Rhino/Grasshopper environment). There are many great online resources to get you up to speed relatively quickly if you are new to this software. This is a good place to start.
The course will be held at the School of Architecture and Allied Arts in Portland, OR. The date/times of the workshop are as follows:
Friday July 19, 5:00-7:50 P.M.
Saturday July 20, 9:00 A.M.-3:50 P.M.
Sunday July 21, 1:00-3:50 P.M.
If you are a designer, architect, or anyone who is interested in learning about the digital tools and technology trends that are revolutionizing design today, this workshop is for you. Make sure to click here to find out more about registration and enrollment in this exciting new workshop.…
termedio a avanzado.
2013 | mayo 22, 23, 24 y 25. 20 Hrs.
Horario: 18:00 – 22.00 Jueves, Viernes y Sábado de 8:00 a 15:00 Hrs. Instructor_ Arch. David Hernández Melgarejo.
http://bioarchitecturestudio.wordpress.com
Objetivos:
El curso está dirigido a cada diseñador, ingeniero o arquitecto que quiere obtener una sólida base en modelado generativo y paramétrico dentro del flujo de trabajo en Rhinoceros.
En el curso se explorarán y construirán estructuras en el espacio paramétrico, incorporando entidades geométricas (Curvas, Superficies, Puntos, etc…) y usando patrones algorítmicos para la generación de estructuras con metabolismos contextualizados.
Cada paso será soportado con ejercicios que gradualmente incrementarán su complejidad.
El alumno aprenderá cómo trabajar con asociación geométrica y parámetros. Para perfeccionar asociación geométrica – asociación entre partes, asociación dinámica – las formas geométricas son generadas al seguir la conexión lógica entre la parte geométrica y sus restricciones, dimensión paramétrica y él proceso dinámico del diseño: Estimulamos el pensamiento relacional para la construcción de Diseño y Arquitectura de alto desempeño.
Resultados:
Los participantes con éste entrenamiento obtendrán las siguientes fundamentos.
· Generar aplicaciones orientadas al análisis, la optimización, documentación del diseño y fabricación.
Palabras clave:
Diseño Computacional, Scripting, Rhinoceros 5.0 + Grasshopper, Parametrización, Análisis, Galapagos, Genetic Solver, Optimización, Fabricación Digital.
Para mayor información:
MArch. Kathrin Schröter. E-mail: kschroter@itesm.mx
Dirección de Arquitectura. Oficinas de Aulas 1, segundo piso.…
er" logic but it miss when comes the copy or offset.
Here is my following logic
Take the square of 25 m x 12 m ; make it a surface
I divide it in "blades" of 20 cm
I take the edges of the "blades",
I divide this edges in 40 points (or equivalent) (A)
I identify my curves (curves) which are on the floors, which are curves (B)
First i do this "test" :
for each crossroad between A and B, i make a circle of X cm (slider) of diameter and the rule is the following :
* In this circle, the future movement of my A curve must be at Z = 0
Second step :
for each next point, i have to : leave a copy on Z = 0 and rise the second one for a heigh of Y cm (slider) from the ground.
the next (W = slider to chose every each number of point, i decide to do the following point) point, which is a little bit farer from the previous point, must duplicate the same height of Y ; and also be copied to Y + Y cm.
There is a Z number (slider) which is the max height possible for these points, which mean that the next point must be at this very same level except ... The third step scenario.
The purpose is to be able to have flat area, like step in a stairway.
Third step :
The grasshopper must test if the A points are between two or more "area at Z = 0". Why ?
The goal is to obtain something like screen "side view" if there are two starting points at Z = 0.
Which also mean that if there is an odd number of points, the remaining odd number must be at the top of the "stairs"
At this point of the grasshopper, we might be able to obtain, thanks to the sliders the "staircase form" regarding :
- The size of the test circle between A and B curves
- The "footstep" of each points (height)
- The number of points before a "copy of the point + the next footstep rise"
- The max heigh possible for all the point off B curves
And at this moment i have a new problem in my logic. You will get my idea, but it might be wrong as well...
Therefore, and after that, we should be able to link every point by a straight line.
To fillet with P (angle) a line with the following one
To join all the line of a same B curve
To cut it at the center of each circle at Z = 0 (the crossroad of A and B)
To offset it with Q (distance)
To rise a line from the center of each circle at Z = 0
To cut the extra part of each Offset"ed" curve to get an offset curve "aligned in Z" with the original one.
To create loft the original and offset"ed" one
To extrude the surface to a distance of R
And grasshopper "should be done" because, i will duplicate it for the ceiling, reverse the form with a -Z vector to the Y value and modifie my Z in Z' to modify my max height
Could you help me ?
…