Search
  • Sign In

Grasshopper

algorithmic modeling for Rhino

  • Home
    • Members
    • Listings
    • Ideas
  • View
    • All Images
    • Albums
    • Videos
    • Architecture Projects
    • Installations
    • Add-ons
  • Download
    • Rhino 7 w/Grasshopper
    • Add-ons
  • Forums/Support
    • Current Discussions
    • Legacy Forum
  • Learn
    • Getting Started
    • Online Reference
    • API documentation
    • Video Tutorials
    • Common Questions
    • Scripting and Coding
    • Books and Articles
  • Attend
  • My Page

Search Results - 🐞加🍌line:sammibaby🍌了解腹肌腰帶有用嗎🚌ems黑科技健身ptt🐌肩頸酸痛神器操捏😜收腹带🥜星期減肥食譜🍌做什麼小生意最賺錢🔸腹部健身🔹ems腰帶有用嗎

Blog Post: Geco for Grasshopper 07 released


Added by to] at 4:05pm on September 3, 2010
Comment on: Topic 'Setting the value of Bounds.X, Bounds.Y, etc.'
So it's not true that Bounds.X is only a getter. However it does behave as though it is. This is because RectangleF is a Value Type instead of a Reference Type. When you assign a variable of one value type to another variable of the same type, you always assign a copy of the first value. So when you request the Bounds from an attributes class, what you get is a copy of the actual bounds. Changing the X on this copy would be a useless operation which is why Visual Studio catches this mistake. Let's assume that Dog is a class (a reference type) and it has a get/set property for fur type. Then, if I type: Dog A = new Dog(); A.Coat = Long; Dog B = A; B.Coat = Short; At the end of these lines, both A and B have a short coat, because the act of assigning A to B (line 3) means that both A and B now point to the same instance of Dog in memory. In effect, A and B are the same. If Dog were a struct (a value type), then at the end of this code A and B would have different coats, because assigning A to B means creating a copy of A. Any changes made to B will not affect A. The one place where this causes annoying situations is exactly where you ran into it. If a property returns a value type then it's typically not useful to call properties and methods on that returned data, as it would only affect the copy of the actual data instead of the original data. That's why, if you want to change the Bounds of an attribute, you need code like this: RectangleF box = Bounds; box.X +=10; Bounds = box; On to the second problem, which is that doing it this way won't help you one bit. Laying out a component is a difficult job and the size of the Bounds depends on many things:  The display mode of the component (icon or text). The size of the text (depending on which Font to use). The maximum number of input and output parameters. The maximum width of the longest input/output parameter name. The maximum number of state icons to draw on the input/output parameters. Changing the Bounds after the layout has occurred will basically just invalidate the parameter layout, resulting in parameter names and grips being drawn in the wrong places. If you want to affect the size of the Bounds for a GH_Component class, you're going to have to dive in and do the laying out yourself. As mentioned before, this is not trivial. There are static methods on GH_ComponentAttributes which are helpful when doing this, have a look at: LayoutComponentBox() LayoutInputParams() LayoutOutputParams() LayoutBounds() Unfortunately they are undocumented. -- David Rutten david@mcneel.com…
Added by David Rutten at 1:39pm on January 31, 2014
Topic: New example files - Mesh tools 1
but rather than keep everyone waiting, I've decided to share some as they become ready. This also has the advantage that questions about components can be more easily grouped under the relevant post - so please do add any questions / comments / bugs / suggestions about these examples below. So today I am posting some examples of the mesh utilities that come with the new release. While these are not directly physics based, many of the forces and types of relaxation in Kangaroo are designed to work with meshes, and in the process of development I've ended up adding a number of simple utilities to make working with them a little easier. I recommend also installing Weaverbird which has many more subdivision functions and other useful tools for working with meshes in Grasshopper. Also Plankton, Turtle, MeshEdit and Starling extend these possibilities still further. Diagonalize This component replaces every edge of a mesh with a new face. The new faces will always be quads, except for along the boundaries, where they will be triangles. It can be used to easily create diagrids. The input mesh can contain any mix of triangles and quads. When treating the edges of a quad mesh as springs, diagonalizing it will often significantly change its physical behaviour. If you are trying to planarize a quad mesh, diagonalizing may sometimes allow you to stay closer to a target shape if it matches the curvature directions better. diagonalize.gh Checkerboard This component assigns the faces of a mesh into a checkerboard pattern. The output is a list of 1s and 0s (which could represent black/white or true/false) which can be used to dispatch the faces into 2 lists, where no pair of adjacent faces have the same colour. One nice application I found for this is applying alternating clockwise and counter-clockwise rotations as shown below. Also, on occasion you may want to planarize a quad mesh, but have some constraints on the shape and grid that prevent this, and triangulating only alternating quads to give a hybrid quad/tri mesh can sometimes be a good compromise, allowing a bit more freedom. Note - Not all meshes can be assigned a checkerboard pattern! As a simple example, take a mesh with 3 quads around one vertex - If we assign one black face, then both the neighbouring faces should be white, but then we have 2 white faces adjacent to one another, which violates the checkerboard condition. Generally, we can say that if a mesh has any internal vertex with an odd number of faces around it, then we cannot apply a consistent checkerboard pattern to it (although not having any odd valence vertices is not in itself an absolute guarantee that a mesh is 'checkerboardable'). checkerboard.gh WarpWeft This sorts the edges of a quad mesh into 2 lists of line segments, which are like the warp and weft directions of a fabric. They can also be seen as a sort of mesh equivalent to the u and v isocurves on a NURBS surface. This can be useful if you want to control the shape of a tension structure, because it allows you to assign different stiffnesses in the 2 directions. As with the checkerboard component, not all meshes can be consistently assigned warp/weft directions. It follows a similar rule - all internal vertices should have an even number of adjacent faces. With a bit of care, it is usually possible to model the initial mesh in such a way as to allow this. This component also has an output telling us whether or not each line is on a boundary of the mesh, as we will often want to treat these differently. Same mesh relaxed with different warp/weft stiffness: warpweft.gh MeshCorners This one is hopefully fairly self explanatory. In many simulations we want to anchor the corner points of a mesh. This saves us having to pick them manually in Rhino. It works on quad meshes, and looks around the boundary vertices for any which do not have exactly 3 connected edges. corners.gh That's all for now. Coming soon - a "mesh tools 2" post explaining more of the components.…
Added by Daniel Piker to Kangaroo at 10:09am on December 17, 2013
Blog Post: THE SOLAR DANCE

Some months ago we started to think about a "simple" question!

How to increase total solar radiation on future development and at same time decrease its impact on…

Added by Igor Mitrić Lavovski at 6:15pm on March 18, 2015
Comment on: Topic 'VB.net: method for trim and detect the intersection'
you will need to deal with all of the curves that intersect the boundry curve, but you will also need to sort through all of the circles inside because the planar surface algorithm won't sort those out for you. The good news is that because you are using circles and linear segments, you can use "pure" geometry equations for some of these intersections instead of relying on NURBS curve "physical" intersections. In the end this means faster and also "more" reliable intersections (especially with the circles). Method 1: Dealing with everything as a phyisical curve... First things first, i guess the "easiest" way to do this would be to translate everything into an OnCurve derived class, and then use the IntersectCurve method to find the intersections. You will need to sort through the resulting ArrayON_XEVENT to find the parameter of each intersection. There should always be 2 intersections, and you're always going to be interested in the intersections of the circle not the boundry curve. To trim the curves, you'll want to use the Split method along with one of the parameters on the curve that you retrieved from the intersection. The only issue is that the split method gets a bit complicated when using it on closed curves. You could either split at both parameters that you retrieved from the intersection results, then sort through the 3 resulting curves to join the two that you need. Or move the start point of the circle to where one of the intersection points happened, translate the other intersection point to the new curve parameter (ie the parameter will be a different number, but it will be physically in the same place), then split with that new curve parameter. Method 2: Try and work with the circles as circles Because you can tell if a circle intersects something by seing if the distance to its center point is less than the radius of the circle, this might be a quicker way to go. If you have the boundry curve as an OnCurve derived class, then you can use the GetClosestPoint method and use all of the center points for each of the circles. The nice thing is that after the 3Dpoint in, and the parameter on the curve that you'll get out, you have the option of supplying a maximum distance. If you do supply that value (use the radius of the circles), then you'll only get a result when the distance is less than or equal to that value. In which case there will be an intersection. To go even further, you can treat the segments of the boundry curve each as a line, and find the closest point/distance to that. That's maybe more complex than your looking to go, but speed wise, it might just be worth it. Take a look at the following link for more code/discussion on the subject. http://www.codeguru.com/forum/showthread.php?t=194400 Part 2: Circle-Circle intersections If you're going to want to make a planar surface out of those circes and the boundry curve, then you'll need to resolve all of the intersections that you have there. Again this is probably something that would be best taken care of by doing some distance tests between the center points of all the circles and seeing if that distance is less than the radius your using. After you've found circles that intersect, you can be try intersecting the curves using the same method mentioned above, or even manually generating the intersection with some trig, but ultimately creating a final result might take a bit of work, especially where you have more than two circles intersecting. The "lazy" way out of this is what's used by the curve boolean command, which is to take each individual curve, make a planar surface from that individual curve, and use standard Rhino booleans to get the result. Luckily you're looking for the union of all those areas, which will be the easiest to create and deal with. After you create the planar surface of each one (RhUtil.RhinoMakePlanarBreps), you can use either RhUtil.RhinoBooleanUnion or the more specialized version, RhUtil.RhPlanarRegionUnion. Note that RhPlanarRegionUnion only takes 2 breps at a time and needs the plane of the intersection.…
Added by Damien Alomar at 11:46am on June 6, 2010
Comment on: Topic 'How to "put" any pattern on the waved surface'
ou will see all of the available components on a ribbon at once so there is no need to keep clicking drop down menus. It's all about discoverability with GH. What if you're a beginner and don't know about the Create Facility (dbl click canvas) how can you find Extr? Even if you hover over every component or use the drop down lists you will not see the name Extr appear anywhere. Sure it makes sense that Extr is short for Extrude but it's also the Nick Name of Extrude to Point component So you can easily miss the fact that one has a Distance Input verses a Point Input. I think I made the move to Icons around about the move from version 0.5 to 0.6, possibly before. I initially thought that I would go back to text because I loved the mono chromatic look of the text but I soon realised that Icons were the way forward. The greatest benefit is speed. You don't need to digest and decipher every component (which is written 90 degrees to the norm). I'm not saying you should move to Icons forthwith but at least consider that once you have a better knowledge and understanding of GH, Icons will set you free. My top ten tips that I would highly recommend to anyone wanting to better themselves with GH. 1) Turn on Draw Icons  2) Turn on Draw Fancy Wires 3) Turn on Obscure Components 4) Use the Create Facility like a Command Line eg "Slider=-1<0.75<2" or "Shiftlist=-1" 5) Use Component Aliases to customise your use of the Create Facility eg giving the Point XYZ component an alias of XYZ will bring it up as the first option on the Create Facility as opposed to the other possibilities. 6) Try to answer other people's questions even if it's not relevant to your own area. By looking into solving a problem outside of your comfort zone and then posting your results it is very rewarding but it also lets you see the other approaches that get posted in a new light. 7) Take the time to understand Data/Path structures.  8) Buy a second monitor - There is nothing that can compare to real estate when working in Grasshopper. 9) Read Rajaa Issa's Essential Mathematics 10) Pick a panel in a tab on the ribbon and get to know every component inside and out and then move on. Start with the Sets Tab > List Panel…
Added by Danny Boyes at 9:13am on August 1, 2012
Comment on: Topic 'Radiation Analysis - GenDayMtx. Error'
Ladybug + Honeybee: (Follow steps 0-4 for basic functionality and 0-9 for full functionality) 0. If you have an old version of LB+HB, download the file here (https://app.box.com/s/ds96em9l6stxpcw8kgtf) and open it in Grasshopper to remove your old Ladybug and Honeybee version. 1. Make sure that you have a working copy of both Rhino and Grasshopper installed. 2. Open Rhino and type "Grasshopper" into the command line (without quotations). Wait for grasshopper to load. 3. Install GHPython 0.6.0.3 by downloading the file at this link (http://www.food4rhino.com/project/ghpython?ufh) and drag the .gha file onto the Grasshopper canvas. 4. Select and drag all of the userObject files (downloaded with this instructions file) onto your Grasshopper canvas. You should see Ladybug and Honeybee appear as tabs on the grasshopper tool bar. (If you are reading this instruction on github you can download them from http://www.food4rhino.com/project/ladybug-honeybee) 5. Restart Rhino and Grasshopper. You now have a fully-functioning Ladybug. For Honeybee, continue to the following: 6. Install Radiance to C:\Radiance by downloading it from this link (https://github.com/NREL/Radiance/releases/download/4.2.2/radiance-4.2.2-win32.exe) and running the exe. 7. Install Daysim 4.0 for Windows to C:\DAYSIM by downloading it at this link (http://daysim.ning.com/page/download) and running the exe. 8. Install EnergyPlus 8.1 to C:\EnergyPlusV8-1-0 by going to the DOE website (http://apps1.eere.energy.gov/buildings/energyplus/energyplus_download.cfm), making an account, going to "download older versions of EnergyPlus, selecting 8.1 and running the exe. 9. Copy falsecolor2.exe (http://pyrat.googlecode.com/files/falsecolor2.exe) and evalglare.exe (http://www.ise.fraunhofer.de/en/downloads-englisch/software/evalglare_windows.zip/at_download/file) to C:\Radiance\bin 10. You now have a fully-working version of Ladybug + Honeybee. Get started visualizing weather data with these video tutorials (https://www.youtube.com/playlist?list=PLruLh1AdY-Sj_XGz3kzHUoWmpWDXNep1O). After I've done all the above I followed this video  https://vimeo.com/96155674 And everything works well. …
Added by Canhui Chen at 12:37am on May 10, 2015
Comment on: Topic 'Help creating a smart loop for repetitive solid unions'
el becomes complex. After an hour or two it gives a good result though. The Rhino interface becomes very sluggish though even with the Grasshopper solver disabled in the menu, so I have to use the Rhino command GrasshopperUnloadPlugin. It seems the preview itself is causing the problem. Turning off Grasshopper preview after baking frees Rhino up too. The result is two pieces which Rhino cannot Boolean union, so one bad step snuck through. This may be related to the error I saw above but my script failed to retain the tail instead of leaving it there. Python will not readily afford stepwise preview updates, so combining Python with Anenome makes sense actually except that one of the reasons it may be slow is that it's generating preview meshes. Let's turn that off to see if LLXXZZ's script runs faster.... Not a big difference actually. Replacing the Grasshopper Boolean Union with my little pairwise non-looping Python script shows that the Python is much slower (3.5X) actually, and it's not overhead, but the actual Boolean union line I can disable to get the time down to 10ms: breps_union = Rhino.Geometry.Brep.CreateBooleanUnion(bs,0.01) # The number is tolerance. Ah, it's just the tolerance settings, and a much lower tolerance matches the speeds, namely 0.0001 instead of 0.01: Further reduction in tolerance only makes it a few ms faster. For the first 100 balls from the bottom: Full Python internal looping script with internal loop: 1 minute. Original Anenome script with preview meshing off: 1 minutes 25 seconds. So there is some overhead in the large Grasshopper script. Running the entire ~400 balls via looping Python script: ONLY 4.7 MINUTES! Oh, this is much better than Anenome. And with the new tolerance setting, it's a complete piece, with seemingly *no* rejects?! That's just bizarre, but the new tolerance settings seems to afford that: The final Python preview doesn't slow down Rhino either. I wonder if the Python multi-threading feature could first union pairs in parallel? I'll see if there's a way to create at least a counter progress output from Python, if not a full preview. The way Grasshopper works makes this ambiguous since Grasshopper only thinks in single solution waves whereas Python is doing things within a single solution that Grasshopper wasn't designed to accommodate. Some lead a timer component into Python and use a global variable to connect each cycle. Ugh. …
Added by Nik Willmore at 5:04am on February 17, 2016
Topic: Cytoskeleton
cells was determined by a network of tubules that he termed the cytoskeleton (the name comes from Cyto- meaning cell or hollow vessel) This is another wireframe thickening tool, intended for 3d printing use. In contrast to exoskeleton (which works on general line networks), this works exclusively on lines which form the edges of meshes. The additional connectivity information present in this case makes it possible to produce an output with all quads, and moreover, a quad mesh with all even valence vertices. Because it works on a Plankton mesh, the input can be made of ngons. We can also input a triangular mesh, apply the dual operation, and then thicken the edges of the resulting polygon mesh. This works well in combination with the remeshing script I posted here, for getting approximately equal edge lengths. This can be used to quickly turn any closed mesh into a lightweight hexagonal (mostly - with a few pentagons and heptagons for curvature) frame structure. The even valence quad mesh property of the resulting thickened mesh means we can also use the mesh direction-sorting and directional-subdivision tools from Kangaroo (described here). When combined with Weaverbird's Catmull-Clark subdivision, this allows us to smooth the mesh, while also having control over how much 'webbing' occurs at the nodes: from left to right we see: 2 levels of Catmull-Clark with no directional subdivision 1 level of directional subD, then 2 Catmull-Clark 2 levels of directional subD, then 2 Catmull-Clark One could even combine the resulting surfaces with all sorts of relaxation, or developable strip unrolling... The code is there for you to read, so feel free to experiment and make adjustments to it. Hopefully it is fairly self explanatory. Please feel free to ask any questions or suggest improvements, or just show off anything you create using this. and yes - because the input and output are both meshes, you can apply it recursively! This script references version 0.3.0 of Plankton, which you can download here: https://github.com/Dan-Piker/Plankton/releases/tag/v0.3.0 …
Added by Daniel Piker to Plankton at 6:46am on January 30, 2014
Topic: Move Object to points along curve
egree. 2.1 To move a copy to the position on the roof in z-axis (lines beween points, that I allready did). 2.2 The truss should be scaled to match the line length.2.3 Then crossed one over another (according to the direction of existing lines from roof) How can I do this in simple solution! I'm desperate, have tried everything, but unfortunately not successful. Have searched throughout the Internet for similar problem without success. See also my post from 24/05/2017. Br. Noureddine …
Added by casanouri at 4:28am on June 8, 2017
  • 1
  • ...
  • 921
  • 922
  • 923
  • 924
  • 925
  • 926
  • 927
  • ...
  • 932

About

Scott Davidson created this Ning Network.

Welcome to
Grasshopper

Sign In

Translate

Search

Photos

  • Parametric Bench

    Parametric Bench

    by Parametric House 0 Comments 0 Likes

  • Kirigami Kangaroo

    Kirigami Kangaroo

    by Parametric House 0 Comments 0 Likes

  • Kangaroo Pavilion

    Kangaroo Pavilion

    by Parametric House 0 Comments 0 Likes

  • Attractor Bricks

    Attractor Bricks

    by Parametric House 0 Comments 0 Likes

  • Tensile Structure

    Tensile Structure

    by Parametric House 0 Comments 1 Like

  • Add Photos
  • View All
  • Facebook

Videos

  • Parametric Bench

    Parametric Bench

    Added by Parametric House 0 Comments 0 Likes

  • Kirigami Kangaroo

    Kirigami Kangaroo

    Added by Parametric House 0 Comments 0 Likes

  • Kangaroo Pavilion

    Kangaroo Pavilion

    Added by Parametric House 0 Comments 0 Likes

  • Attractor Bricks

    Attractor Bricks

    Added by Parametric House 0 Comments 0 Likes

  • Tensile Structure

    Tensile Structure

    Added by Parametric House 0 Comments 0 Likes

  • Circle-Pack facade

    Circle-Pack facade

    Added by Parametric House 0 Comments 0 Likes

  • Add Videos
  • View All
  • Facebook

© 2025   Created by Scott Davidson.   Powered by Website builder | Create website | Ning.com

Badges  |  Report an Issue  |  Terms of Service