ind that a ?^@&@% door for your next 7 series (avoid that car at any cost) is rated about 10M (the so called development cost) whilst the whole car may require 500++ M. Did you know that the software used in a 7 series exceeds 70M lines of code? Therefor ... blah, blah.
Back to real-life things:
One "suitable" solution for flattish stuff the likes that you've captured is:
1. Make a BoundingBox and make a Point3d grid using, say, the bottom 4 corners (a single dimension tree)..
2. Declare a nullable Point3d grid [ DataTree<Point3d?> hitsTree = new DataTree <Point3d?>();].
3. Shoot a Ray3d from each point using some Vector3d (for instance using p4 - p0 out of the box points). If the Ray hits a brepface get the point if not put a null. That way you have a tree of equal List sizes and "combining" things (Points) for your patterns is greatly simplified [you can use the crude try{} catch{} approach].
4. If all these sound a bit freaky to you ... post a flattish test case (with different U/V) and give some hints about what "pattern" means to you.
best…
write a definition that represents the following surface that I have created out of paper.
This is essentially a squared surface subdivided into triangular segments. For that reason I was hoping I could use Zubin's example about triangles in chapter 3 of his book.
I'm sure, you guys know these kind of folding technique, but to clarify the pattern of the surface, here's a quick diagram:
My approach was to use the point cloud out of Zubani's example and select points with the Cull Nth component according to the pattern shown in the diagram. These points I would then offset with a z-vector component while keeping the distance between the points fixed.
However, after spending now several days trying to figure this out, I definitely ran into a wall..
As I see it, the example generates multiple points for the same coordinates, meaning there are occasions where there 6 points on top of each other.
Further, the Cull Nth component doesn't work exactly as I've hoped, the problem lies in the transition from one row to another..
I was also thinking instead of creating a series of points and then trying to filter specific points out to create (a) the surfaces and (b) the offset, maybe I should start creating these separate lists from the beginning?
Or, instead of point cloud series, using a surface and the sDivide component?
As you see, I am pretty confused/lost in the problem... any help would be greatly appreciated!
Thanks!
…
that, I have a few more comments on what you are trying to do:
1. It is not possible to divide the surface of a sphere with regular hexagons [the most efficient way includes pentagons as well (classic soccer ball)].
So I believe that in the image you posted there is some serious twisting taking place at the back side (you can actually see this starting on the right side of the picture).
Lunchbox's [hexagon cells] component divides the surface in U and V (orange slices for a sphere) and draws hexagons on it. The result is some serious deformation on the 2 poles and many non-planar cells. If you are ok with this, then my only tip would be to use an even number for the U divisions in order to have a clean seam:
instead of:
2. The hexagons you have defined in 2d are wrong as they are overlapping and also leaving gaps between them:
You should define your hexagons so that they form a honeycomb pattern. It could be something like this:
3. There is no direct way for hexagonal mapping, so your best bet would be to draw your pattern inside each cell (good GH data structure understanding is crucial for this). Also, the non-planar cells will probably give you a hard time there...
Hope I cleared some things and didn't cause more confusion!
Nikos
…
use Google's API, especially if you'd like to achieve a great quantity of data without overloading Google's servers.
I used a way to request data without overloading Google's servers by using a tiling method. Obviously, this component respects the limit of 2500 requests per day.
This is how the component works:
1) set one point and its coordinates
2) generate surfaces by using isotrim component (Basically, each sub-surface is a request)
3) set the number of division of each surface and the resolution of Google static maps
4) run, move points and generate surfaces with surface from points
5) apply textures to the surfaces
In the image below another small example:
I was thinking that this should be useful for wind simulation with Butterfly, maybe.
Best
Antonello…
g VB scripting as below is shown is not working... ;((
Private Sub RunScript(ByVal Pts As List(Of Integer), ByVal GS As List(Of System.Object), ByRef nsrf As Object)
Function CreateNS(ByVal cvpoints As ArrayList, ByVal GS As Integer) As OnNurbsSurface Const Degree As Integer = 3
'Make the surface Dim orderU As Integer = Degree + 1 Dim orderV As Integer = Degree + 1
Dim ns New OnNurbsSurface ns.Create(3, False, orderU, orderV, GS, GS)
'Add cv points Dim i As Integer Dim j As Integer Dim pt As On3dPoint For i = 0 To GS - 1 For j = 0 To GS - 1 pt = cvpoints(i)(j) ns.SetCV(i, j, pt) Next Next
'Set knots for open surface ns.MakeClampedUniformknotvector(0) ns.MakeClampedUniformknotvector(1)
CreateNS = ns End Function
Considering more than this example got from a book, is there any other better way to get a simple AREA from control points by GH?
THAAAAAAAAAAAAANX
Francesco
…
ed four workshops, each featuring a partnership of a creator of hardware technology and a software developer. The outcomes of the four workshops will form a single structure.
Workshops:
1. Facade panels with RoboFold & Kangaroo/Lobster
2. Cantilever CNC wooden lattice with Archiwaste & SMART Form by BuroHappold
3. Corian freeform surfaces by Cutting Edge & Evolute Tools
4. Milled foam and cast concrete with Cordek & Galapagos/David Rutten
Book on the Shape To Fabrication website or via SimplyRhino on 0208 498 9900. Tickets are limited to 10 per workshop at £500+VAT (professional) and £400+VAT (student).…
Added by Gregory Epps at 5:15am on September 29, 2011
diseño computacional.
La Visiting School digitalMed 2014, promovida por Medaarch y Emwesoft Sevilla S.L.N.E, se celebrará en la ciudad de Sevilla, y tendrá como tema central la Smart City y el estudio de la interacción entre las personas y su entorno a través de objetos, dispositivos e infraestructuras.
Fecha limite de inscripción: 16/01/2014
info@emwesoft.com
OBJECTIVOS Adquirir la capacidad de gestionar flujos de datos en los que las ciudades están sumergidas, para insertar proyectos que sean útiles, contextualizados, poco invasivos y aptos a establecer un intercambio de informaciones con los usuarios.
El objetivo final es redactar un catálogo de proyectos que puedan formar parte de un contexto urbano y puedan delinear el perfil de las ciudades en las que viviremos en el futuro próximo.
METODOLOGÍA Metodología basada en el aprendizaje activo, en la puesta en práctica de métodos activos que estimulan y facilitan el intercambio de experiencias y puntos de vista entre el alumnado: Buscando la participación del alumno, planteando todas las cuestiones que considere necesarias a la hora de aclarar conceptos.
Fomentando el debate y la colaboración entre los participantes.
Dando respuesta a las dudas planteadas.
La metodología será presencial, lo cual permite un mayor acercamiento entre profesor y alumno, y en consecuencia una mayor asimilación de los conceptos.
PROGRAMA Los primeros días del taller serán dedicados a establecer definiciones comunes que nos permitan trabajar a partir de significados compartidos. En esta fase se tratarán temáticas que recurren a menudo en la práctica arquitectónica contemporánea, es decir el diseño computacional, la fabricación digital y los data driven. Los alumnos tendrán la posibilidad de aprender a usar software para el diseño paramétrico, como Rhinoceros y el plug-in Grasshopper, a través del conocimiento de dichos software, el alumno conseguirá competencias teóricas y técnicas, para un enfoque al diseño computacional.
PROFESORADO La formación será impartida por profesionales con amplio conocimiento y experiencia en el ámbito. Los tutores serán los arquitectos Amleto Picerno Ceraso y Francesca Viglione.
DURACIÓN TOTAL DEL TALLER
40 horas
QUIÉN PUEDE PARTICIPAR?
. Funcionarios con una actitud proactiva hacia la construcción de ciudades inteligentes;
. Académicos y estudiantes en áreas relacionadas con el desarrollo de proyectos y soluciones tecnológicas para ciudades digitales y ciudades inteligentes;
. Arquitectos;
. Ingenieros;
. Diseñadores;
. Profesionales de las tecnologías de información y con relación a el área de tecnología.
REQUISITOS BÁSICOS
- Conocimiento básico de Rhinoceros
- Inglés medio
*Disponibilidad de un intérprete español.
PRECIO y Tarifa especial
El cuesto del taller es de 500€.
También hay facilitacióno en caso de Inscripciones de grupo: para cada grupo formado por 5 inscriptos, que paguen en un única solución, el costo total será de 4 miembros y no 5 (una persona gratis)
DONDE
Emwesoft Sevilla S.L.N.E C/ Monte Carmelo 21, 41011 – Sevilla (España)
Teléfono: +34 (955) 224 524
Email: info@emwesoft.com
Internet: www.emwesoft.com …
t. So here we go!
1. Honeybee is brown and not yellow [stupid!]...
As you probably remember Honeybee logo was initially yellow because of my ignorance about Honeybees. With the help of our Honeybee expert, Michalina, now the color is corrected. I promised her to update everyone about this. Below are photos of her working on the honeybee logo and the results of her study.
If you think I'm exaggerating by calling her a honeybee expert you better watch this video:
Thank you Michalina for the great work! :). I corrected the colors. No yellow anymore. The only yellow arrows represent sun rays and not the honeybee!
2. Yellow or brown, W[here]TH Honeybee is?
I know. It has been a long time after I posted the initial video and it is not fun at all to wait for a long time. Here is the good news. If you are following the Facebook page you probably now that the Daylighting components are almost ready.
Couple of friends from Grasshopper community and RADIANCE community has been helping me with testing/debugging the components. I still think/hope to release the daylighting components at some point in January before Ladybug gets one year old.
There have been multiple changes. I finally feel that the current version of Honeybee is simple enough for non-expert users to start running initial studies and flexible enough for advanced users to run advanced studies. I will post a video soon and walk you through different components.
I think I still need more time to modify the energy simulation components so they are not going to be part of the next release. Unfortunately, there are so many ways to set up and run a wrong energy simulation and I really don’t want to add one new GIGO app to the world of simulation. We already have enough of that. Moreover I’m still not quite happy with the workflow. Please bear with me for few more months and then we can all celebrate!
I recently tested the idea of connecting Grasshopper to OpenStudio by using OpenStudio API successfully. If nothing else, I really want to release the EnergyPlus components so I can concentrate on Grasshopper > OpenStudio development which I personally think is the best approach.
3. What about wind analysis?
I have been asked multiple times that if Ladybug will have a component for wind study. The short answer is YES! I have been working with EFRI-PULSE project during the last year to develop a free and open source web-based CFD simulation platform for outdoor analysis.
We had a very good progress so far and our rockstar Stefan recently presented the results of the work at the American Physical Society’s 66th annual DFD meeting and the results looks pretty convincing in comparison to measured data. Here is an image from the presentation. All the credits go to Stefan Gracik and EFRI-PULSE project.
The project will go live at some point next year and after that I will release the Butterfly which will let you prepare the model for the CFD simulation and send it to EFRI-PULSE project. I haven’t tried to run the simulations locally yet but I’m considering that as a further development. Here is how the component and the logo looks like right now.
4. Teaching resources
It has been almost 11 months from the first public release of Ladybug. I know that I didn't do a good job in providing enough tutorials/teaching materials and I know that I won’t be able to put something comprehensive together soon.
Fortunately, ladybug has been flying in multiple schools during the last year. Several design, engineering and consultant firms are using it and it has been thought in several workshops. As I checked with multiple of you, almost everyone told me that they will be happy to share their teaching materials; hence I started the teaching resources page. Please share your materials on the page. They can be in any format and any language. Thanks in advance!
I hope you enjoyed/are enjoying/will enjoy the longest night of the year. Happy Yalda!
Cheers,
-Mostapha
…
st shortest path. The guiding splines would work like a forcefield so that paths are "drawn" towards them with a user defined strength and radius of influence.Since each path is basically independent, it should be relatively straight forward to multithread. I downloaded the C# code for the pathfinding node and have to see if I'm up to it.
Would also be interesting to know how far away the first beta of a multithreaded GH 2 is.
I also had some hopes when "Fabric Engine" showed a demo of a Rhino exporter, since its "Canvas" is an extremely optimized node system that's fully multithreaded and optionally uses the GPU, which could be interesting to explore for some heavy lifting if they for instance would attach it to GH. But I guess it does not make much sense for them as a target.
Above image uses 20000 random points. In Softimage XSI ICE this would not be much, since it's nodes are fully multithreaded and optimized for huge numbers of particles and point deformation. In GH, with anything above 500 points, things get rather "meditative".
Illustrator takes up to half an hour after each and every change to colour, line style, blending mode etc. I have one even more complex file with over 3 GB size and there Illustrator (CS6 x64) goes into some kind of trance and after some hours of thinking moves on to some advanced psychotic, catatonic state to never fully return... ;-)So usually I run it in the background while doing something else...
I recently tried different other vector graphics apps (Inkscape, Affinity Designer, Xara) but they were even worse if they were able to open the files at all. Maybe I should give Corel a try too.
Cheers and thanks for your offer! Your work is a major inspiration for me while learning Grasshopper!
Tom…
complicated than it seems as I have an event and a subscriber method receiving data from a serial port.
In the code below, the strings received within myReceivedLines appear when connecting with the serial port (when connecttodevice is true). However they disapear when I launch another command (when homeallis true).
As you recommended in your reply, I have added the field called myReceivedLineswithin the class so that I could use the method String.Add() to all the feedback received and commands sent.
Why does the feedback dispear when a command is sent? Is the string going to myReceivedLine disappearing because they happen within a subscriber method or is it related to the DA.SetDataList() method used to assign myReceivedLinesto the output?
Many thanks!
public class SendToPrintComponent : GH_Component { //Fields List<string> myReceivedLines = new List<string>(); SerialPort port; //subscriber method for the port.DataReceived Event private void DataReceivedHandler(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; while (sp.BytesToRead > 0) { try { myReceivedLines.Add(sp.ReadLine()); } catch (TimeoutException) { break; } } } protected override void SolveInstance(IGH_DataAccess DA) { //Opening the port if (port == null) { string selectedportname = default(string); DA.GetData(1, ref selectedportname); int selectedbaudrate = default(int); DA.GetData(2, ref selectedbaudrate); //Assigning an object to the field within the SolveInstance method() port = new SerialPort(selectedportname, selectedbaudrate, Parity.None, 8, StopBits.One); //Enables the data terminal ready (dtr) signal during serial communication (handshaking) port.DtrEnable = true; port.WriteTimeout = 500; port.ReadTimeout = 500; } //Event Handling Method bool connecttodevice = default(bool); DA.GetData(3, ref connecttodevice); if (connecttodevice == true) { if (!port.IsOpen) { port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); DA.SetDataList(0, myReceivedLines); port.Open(); } } else if (port.IsOpen) { port.DataReceived -= new SerialDataReceivedEventHandler(DataReceivedHandler); port.Close(); } if (port.IsOpen) { DA.SetData(1, "Port Open"); } //If the port is open do all the rest if (port.IsOpen) { bool homeall = default(bool); DA.GetData(5, ref homeall); //Home all sends all the axis to the origin if (homeall == true) { port.Write("G28" + "\n"); myReceivedLines.Add("G28" + "\n"); DA.SetDataList(2, myReceivedLines); } } else { DA.SetData(1, "Port Closed"); } }}…