= new Point3d(0, 0, 0); b = new Point3d(0, 0, l); Line x = new Line(a, b); Curve m = x.ToNurbsCurve();
if (x == null) return;
Point3d[] points; m.DivideByCount(50, true, out points);
//for (double itr = 0; itr < 50; itr = itr + 0.01) //{ double frac = 50 / 230; int itr = 0; foreach (Point3d point in points) { while (true) { double imtr = (50 - itr) / frac; itr++; Color colour = ColorFromHSV(imtr, 1, 0.5); int rgb = colour.ToArgb(); if (_hash.Contains(rgb)) continue;
_hash.Add(rgb); _points.Add(point); _colours.Add(colour); break; } //} } for (int i = 0; i < _points.Count; i++) cd.AddPoint(_points[i], _colours[i]); }
// <Custom additional code> private readonly HashSet<int> _hash = new HashSet<int>(); private readonly List<Point3d> _points = new List<Point3d>(); private readonly List<Color> _colours = new List<Color>();
/// <summary> /// This method will be called once every solution, before any calls to RunScript. /// </summary> public override void BeforeRunScript() { _hash.Clear(); _points.Clear(); _colours.Clear(); } public static Color ColorFromHSV(double hue, double saturation, double value) { int hi = Convert.ToInt32(Math.Floor(hue / 60)) % 6; double f = hue / 60 - Math.Floor(hue / 60);
value = value * 255; int v = Convert.ToInt32(value); int p = Convert.ToInt32(value * (1 - saturation)); int q = Convert.ToInt32(value * (1 - f * saturation)); int t = Convert.ToInt32(value * (1 - (1 - f) * saturation));
if (hi == 0) return Color.FromArgb(255, v, t, p); else if (hi == 1) return Color.FromArgb(255, q, v, p); else if (hi == 2) return Color.FromArgb(255, p, v, t); else if (hi == 3) return Color.FromArgb(255, p, q, v); else if (hi == 4) return Color.FromArgb(255, t, p, v); else return Color.FromArgb(255, v, p, q); }
Gives this error
1. Value was either too large or too small for an Int32. (line: 0)
…
this was about some boring building I wouldn't respond ... but here we are talking sardines.
Here's my take on that matter:
1. The 4 C# first create/use a nurbs, then define some random planes (and transformations) and then (a) either they place some humble stripes or ... er ... (b) sardines as instance definitions (NOTE: Load Rhino file first).
2. All important decisions are the ones in yellow groups.
3. You control what you get via this (priority on stripes or sardines? that's the 1M Q):
4. If you decide for sardines (the right thing to do) then you must ENABLE the Sardiniser(C)(tm)(US patent pending) as follows:
5. The vodkaFactor on that Sardiniser C# adds some spice in the sardine placement (it does that by altering the priority on the "composite" transformation in use: first randomly rotate then planeToPlane .... or the other thing?).
6. Only the finest Da Morgada sardines are used in this definition:
7. Spot the WARNING in the filter related with what sardine to choose > do it wrong and no hard disk on your workstation > no risk no fun > sorry Amigos, he he.
8. 1M question for you all: why placing sardines (it's real-time you know) is WAY faster than creating these humble stripes?
9. Although the sardines are placed in real time as regards your CPU ... the critical factor is your GPU (display mode: rendered).
10.Still WIP (dancing sardines in the next update).
have some sardine fun, best, Lord of SardineLand…
and Grasshopper. Recently I tried doing some test project just to see what can I do. My target is to design a small house for an atom family. Though as you might think - it'll be a parametric one. And I encountered exactly what's in the title. So here it goes: 1. Something is wrong with the measuring units in the complex profiles. I met this problem while making I-beam. In ArchiCAD it had 127/76 mm while in Grasshopper i had 127000/76200mm so a little bigger. 2. I'm unable to turn off the preview. I mean when I delete something in Grasshopper/Rhino it still exists in ArchiCAD. I have to unlock it and then delete it. 3. Coordinates for points seem broken. They have to be multiplied 1000 times to match. 4. Now one of the most important. Is it possible to somehow SHOW Grasshopper where are already made in ArchiCAD objects. Even if they'll remain still. For example I want to make a parametrical roof. Do I have to model whole building from scratch in Grasshopper or is there some fast way to "import" existing scene so I can limit my work with Grasshopper only to parametrical one. 5. Is it possible to make "points" as controlling points in AC? Like, if I'd like to make a beam in a desired place which I will mark by that point and then I will "show" Grasshopper that point and tell it to make an object in there so I can control it within grasshopper. I tried ti do this using AC Control Point but when I click "Send changes" button, Grasshopper and Rhino crush immediately. It only happens then, with control points. 6. It seems that "move" component won't work with "2D curve" component connected directly. It is possible that some of those problems are outdated. I was playing around in Grasshopper a few months ago, before summer break, but now I plan to try something new and it would be nice to know what to do. I appreciate any answer to any of those questions. Please help, you guys, are my only hope. Thanks in advance! Karol…
tangent lines don't, causing a data mismatch. So...
'Cull' all 'MCX' points that equal the origin, and apply the same cull pattern to the 'iA' list (light blue group).
Move the "Second Point" merge and 'Sort' by distance to earlier in the process.
Add a 4th point to the 'List Item' index list (0, 3, 5, 6).
Remove the tree hack nonsense.
Voila! Perfection. Now that is... persistence.
“Two percent is genius and ninety-eight percent is hard work.” -- Thomas Edison, April 1898
By the way, there is another way to do this kind of thing that doesn't require such deep knowledge as this method. Not considered as elegant because it doesn't apply in all cases, but it would work here. Create just one curve/pipe and rotate it 26 times.
…
ra Designer Pro 6, but Xara is pretty good at file compatibility so you can probably open them on many versions.
You are free to use and modify these vector graphics for any project, document or webpage that is associated with Grasshopper. You do not need to credit me, though it is not allowed to pass the work off as your own without modifications.
There are no fast and hard rules when it comes to the graphics style of Grasshopper icons, but I suggest you try and mimic line-weights, contrast, saturation and arrow and point symbols when designing your own icons.
Note that all icons must be 24x24 pixels and most icons in the original set leave a 2-pixel empty border around all edges. All icons with such an empty border have a drop-shadow with the following properties:
Blur = 2 pixels
Colour = black
Transparency = 65 out of 255 (roughly 25%)
Horizontal offset = 1 pixel to the right
Vertical offset = 1 pixel downwards
I apply drop-shadows as a post-process effect in a pixel-editor, as Xara is not good at pixel effects on very small images.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
that those side surfaces might trim a third, already defined surface. In this case, the green surface shown would offset to trim the red surface.
However, as noted by some others on these forums, offsetting trimmed surfaces in grasshopper seems to operate much differently in grasshopper than in rhino. To be clear, I don't actually require the offset surface itself, but rather the side surfaces that would connect the original and the offset surfaces. Additionally, the offset works okay within certain ranges, but does not work beyond a certain distance, whereas in rhino the commands work just fine with the same surfaces. I see two options (there may be other approaches I hadn't considered);
1) Find a workaround for offsetting the surface.
2) Find an analogue to "OrientCrv" in grasshopper. Use that to array lines on the surface normal at the edges. Sweep1 using normal-oriented lines as cross-section curves. Use swept surfaces to trim lower (red) surface.
Any thoughts or input are greatly appreciated, as I've been productively failing for the past 6 hours. I assure you, I've scoured forums and tried multiple work-arounds and custom components - It just seems that the offsetting of surfaces fails at a given distance for this surface.
Thanks!…
Added by brad thomas at 2:58pm on October 12, 2015
large scale prototyping techniques. The programme continues to build on its expertise on complex architectural design and fabrication processes, relying heavily on materiality and performance. Autumn DLAB brings together a range of experts – tutors and lecturers – from internationally acclaimed academic institutions and practices, Architectural Association, Zaha Hadid Architects, among others.
The research generated at Autumn DLAB has been published in international media – ArchDaily, Archinect, Bustler – and peer-reviewed conference papers, including SimAUD (Simulation in Architecture and Urban Design), eCAADe (Education and research in Computer Aided Architectural Design in Europe).
Autumn DLAB investigates on the correlations between form, material, and structure through the rigorous implementation of computational methods for design, analysis, and fabrication, coupled with analog modes of physical experimentation and prototype making. Each cycle of the programme devises custom-made architectural processes through the creation of novel associations between conventional and contemporary design and fabrication techniques. The research culminates in the design and fabrication of a one-to-one scale prototype realized by the use of robotic fabrication techniques, with the aim of integrating of form-finding, material computation, and structural performance.
The programme is structured in two stages:
PART 1 – participants are introduced to core concepts of material processes, computational methods and digital fabrication techniques. Basic and advanced tutorials on computational design and analysis tools are provided. The programme performs as a team-based workshop promoting collaboration, research and ‘learning-by-experimentation’.
PART 2 – participants propose design interventions based on the skills and knowledge gained during phase 1 and supported by scaled study models and prototypes. The fabrication and assembly of a full-scale architectural intervention with the use of robotic fabrication techniques will then unify the design goals of the programme.
Applications
1) A limited number of 10 places are available. To apply, please send a small portfolio (5MB) to the Visiting School Office.2) PARTIAL SCHOLARSHIPS ARE AVAILABLE. Please send a letter of intent and a small portfolio (5MB) to the Visiting School Office.3) As this programme has a limited number of places it requires a selection process, if you are offered a place on programme, the Visiting School Office will inform you of how you can complete the registration process.
The deadline for applications is 13 AUGUST 2021.
Eligibility
The workshop is open to current architecture and design students, PhD candidates and young professionals. Software Requirements: Adobe Creative Suite, Rhino 6. No prior knowledge of software tools is required for eligibility.
Fees
The AA Visiting School requires a fee of £975 per participant, which includes a £60 Digital Membership fee.Students need to bring their own laptops, digital equipment and model making tools.
…
Rubicon (ii.e. some programming language [I would strongly recommend C#] > the Dark Side > years of pain + tears > hell or heaven?).
Back to that pile or worms of yours (I hate "simple" cases, he he).
0. if you want rounded lips ... Styrofoam is the only solution (+ sanding [buy a mask and some decent cigars ... path is long and hilly]). if not > goto 5/6.
1. by what means you think that you can shape Styrofoam? Do you have access to some CNC foam cutter? Or the only tools that you have are ... 2 hands and a knife? (or a thermal cutter). Accuracy is a BIG issue here: chances are that panels won't "fit". Solution is available in the forthcoming V3.
2. male "protrusions" on Styrofoam is kinda 3rd marriage > AVOID at any cost > this would end up in tears.
3. female ones are safe ... thus we need a proper "insert stripe" that must be compatible with the Styrofoam adhesive and strong enough to hold the pieces until the glue cures (it takes time, there's no instant Styrofoam adhesives around). Maybe aluminum (hard to cut by hand) or balsa (very expensive) or plywood (best option).
4. Some CNC foam cutters they can't shape the female "crevices" > be prepared (a thermal tool may(?) cut the mustard).
Note: panels made with Styrofoam look miserable because reality and theory differ. They also look miserable as well (and kitsch and miserable).
5. making the panels with (marine) plywood ... well this yields far superior accuracy and therefor aesthetics but (a) yields max panel thickness constrains, (b) introduces max panel dimensions constrains (c) yields packing issues [waste material] and (d) requires a totally different "connection" approach: it doesn't make sense to do some female crevice ... unless the plywood is very thick (expensive + heavy).
Note: Designing (pro option) self supporting "rib" reinforced sandwich composite panels ... well this is a bit far and away from what you can handle at present time.
So ... I've suspended the male/female thingy until you decide the final policy: it's the material/detailing that should dictate the method(s) AND the whole design and not the other way.
This is what we call bottom-top design approach (dinosaur Architects follow the top-bottom: disastrous + naive + naive + naive + avoid).
6. Plan ZZTop: make a stand alone autonomous perimeter frame per panel (marine plywood: imagine "thickening" these abstract beams shown inwards per panel) then join these frames by means of bolts (easy) and fill the "gaps" with Styrofoam (hmm). Note: you can reinforce the frames by a variety of means (say: a secondary "beam" sub-structure) achieving a rather elegant all overall solution.
This is the best solution by roughly 666 miles.
…
able all the components from that group.I know it's slowing down a lot, but the rhino performance is really poor on layouts. In Rhino 6 WIP it's a lot better though.
For the issue with different amount of drill holes i made an example script, how i would go for a solution to this. It's just a suggestion.
1) Do a little script that catches those holes and bake them to a separate layer.In my example i just generated them with GH.
2) Use RhinoCount (is installed with FabTools) to name the curves in Rhino by clicking one after the other. But first diable the layers, with the other geometry, so you don't accidentally click on geometry which you don't want to count.
You have 2 counters 1 for the part the second for the holes on each object. Increment the object counter if you have counted all holes of 1 object. By clicking on each hole the counter increments all by itself. Take a look at this command!
1 Click creates 1 Dot and renames the Rhino object. You can turn on/off all specific features of RhinoCount with the checkboxes. (see settings above)
And....this should be the result after some clicks:
3) If counted, you can reference the counted geometry again to GH with the counting as Datatree. (See attached GH File).
Then estimate the maximum amount of holes on one object in your drawing.Create a template with the amount of detail views and do the process from the layout tutorial again. For all objects with less holes you will have to delete the detail view which didn't have a target point or you do a sort of grouping for the hole centers and estimate the center of that group. You can be creative ;-)
I hope this helps. Good Work,
FF…
Added by Florian Frank at 7:49am on January 21, 2016
he "return" is comment out as shown below?
After restarting Rhino and Grasshopper, I opened the outdoors_airflow demo file, and the first step of creating the case file is ok:
Then the blockMesh component gives the following error: seems I have to manually start OF first..
so, as the error message suggested, I open OF by Start_OF.bat:
Then come back to the blockMesh component, now it can be executed while the OF command line window is also openning:
... and the blockMesh finished successfully:
... so I proceeded to run snappyHexMesh, checkMesh and update fvScheme:
... up to the simpleFoam component, I got the error again:
The warning message is:
1. Solution exception: --> OpenFOAM command Failed!#0 Foam::error::printStack(Foam::Ostream&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #1 Foam::sigFpe::sigHandler(int) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #2 ? in "/lib64/libc.so.6" #3 double Foam::sumProd<double>(Foam::UList<double> const&, Foam::UList<double> const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #4 Foam::PCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #5 Foam::GAMGSolver::solveCoarsestLevel(Foam::Field<double>&, Foam::Field<double> const&) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #6 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #7 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #8 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libfiniteVolume.so" #9 Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #10 Foam::fvMatrix<double>::solve() in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #11 ? in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #12 __libc_start_main in "/lib64/libc.so.6" #13 ? in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam"
... and the command lines in the readMe! output are pretty long and it is saved in the text file attached here.
So, my questions are:
1. why I have to manually start OF first before I can use the blockMesh component? Should butterfly automatically start OF?
2. what might be the cause of the unsuccessful run of simpleFoam in the end?
Hope you can kindly advise! Thank you!
- Ji
…