.. then you put (or drill) rather "canonical" patterns that formulate the inner/outer skin (or both).
2. The above approach hits 3 walls: (a) very slow response (Rhino is a surface modeller) (b) booleans/fillets potential issues (Rhino is a surface modeller) (c) a potential aesthetic antithesis between the liberty of the "whole" VS the "strict" rules of the "details".
3. Since you opt to work with Rhino It could be worth considering playing his own game: deforming surfaces that is ... by working against control points or via the Morph methods. Then join them and get the decorative thingy as "solid".
Images below are from a C# that actually gets the control points of Surfaces in Lists and "deforms" them according a gazillion of options (a) via any "on-the-fly" defined pattern (Take or skip this control point: shift branches/items that is) (b) using any number of attractors in any push/pull mode (c) using chaotic vector values (d) using ... well too many ways to list them here.
Imagine what the Alien cuppa def does (modifies "diagonally" control points) ... multiplied by 1000.…
ard to find example...
I do not know how to load windows form and send data to object in form.vb...using grasshopper sdk.
it is the same,, when I try to use dll(class) with VB component in grasshopper.
may be I have to make two class (class1, form1) but,
when I send data to class1, form1 can not receive class1 data because form 1 made new class1 and both class1, class1(from form1) is different session?
for novice programer,, for me it is very hard.
load class1,
class1 load form1
send data from grasshopper to form1. x
and button click
couldn't calculated,... result was always "0"
and tried many other methods,, but it failed...
may be some known technic but it is hard to find books...
Please...help me.
if possible would you tell me how to load form1 using grasshopper sdk and ""send data "" to form1
or form1 could use data from grasshopper?
Thank you....
for ex)
'(in class.vb)
Public Class Class1 Private Shared fl As Form1 Public Sub fload() If fl Is Nothing Then fl = New Form1 fl.Show() End If End SubEnd Class
'(in form1.vb)
Public Class Form1 Public x, y As Double Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ab(x, y) MsgBox("hi" & y) End Sub Sub ab(ByRef a As Double, ByRef b As Double) b = a * 2 End SubEnd Class
'(in Grasshopper VB.component)
Dim cl As ClassLibrary1.Class1 If cl Is Nothing And f = True Then cl = New Class1 cl.fload() End If Dim fr As ClassLibrary1.Form1 If fr Is Nothing Then fr = New Form1 End If fr.x = x a = fr.y…
e options are).
1) I wish there were better search features included in the double-left-click "enter a search keyword" option, which only brings up icons/components by name in relation to what's typed but doesn't help users understand what that icon's/component's function is. I wish every keyword in the full text that is already included as each component's function description (which appears when you hover over it with the mouse, below the component name) were included in the search keywords, not just the name of the component. That would amount to searching by the function needed, not just by the name of a component (which might not help someone who has never heard of the component to know its function).
example/rephrased: if I double-left-click and type "create a point" the components that appear under "create" in the list are "create set" (or "create material", "create branch" or "create complex", but no point). To get the "create a point" component, you have to know to type "point" but then you also have to check out every point component by inserting it and hovering over it to see if one of them creates a point. However, the "Point XYZ" component's description when i hover over it says "Create a point from xyz coordinates". I wish the description text for every component was part of the searchable content, so that de facto that component would appear as an option in the list when i type "create a point."
2) All along I wished there were an online index/dictionary for all grasshopper components, downloadable and searchable, that could be organized and searchable in order by user preference, including component name, component function (both general categories like "verb" - see below - as well as its specific function) and finally with a brief description/definition of what the component is good for. I imagine categories like "verbs" (someone learning a foreign language the first time gets a list of major verbs) where all the "action functions" like graft, flatten, extrude, etc. are viewable in a single list. This way when i want to make something happen, but don't know what component to choose, i have a way to read about what's possible without going through the 250+ pages of the manual (which isn't a searchable pdf when downloaded, from what i see, and doesn't have an index).
Thanks!
Christina…
he process. The last one is there because fixing it would cause another problem, which we feel is more serious. Solutions may well be forthcoming in the future though.
1. Grasshopper curves and points are drawn more towards the camera than they really are. This is a conscious decision. Often Rhino geometry and Grasshopper geometry exist in the same place. If we would draw the Grasshopper preview in place, then there's no telling whether you'd see the Rhino curve or the Grasshopper curve. We feel it's important that you always see the Grasshopper curve on top. This is why we draw all curves and points slightly towards the camera. However we don't do this for meshes. This results in something akin to the image below. The eye represents the location of the viewport camera, the shaded box represents the actual location of the geometry and all the thick black lines represent the edges of the geometry moved towards the camera. As you can see, the red lines will be visible, even though they should be behind the shaded box. This effect can get very strong when the camera is close to some geometry relative to the size of the boundingbox of all geometry.
2. Wires behind the camera are sometimes visible. This is a bug I don't know how to solve. We'll get around to it eventually. When an object is behind the camera the display transform sometimes makes it visible in front of the camera in some weird inverted perspective mode.
3. Meshes are not z-sorted prior to display. This means that the order in which they are drawn is not back-to-front, but fairly arbitrary. This means that a transparent mesh may appear to punch a hole in the mesh behind it. If this is annoying you to no end, you can use Ctrl+F on the Grasshopper components that contain the meshes that are punching holes and then press F5 to recompute. The draw order should now be different. Of course sometimes it will only 'fix' it for a specific camera angle.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
that aren't relevant anymore or if there are any I missed please let me know. Maybe we can get a list like this in a better place as well.
Thank you.
Right Mouse - When wiring, plugs wire into multiple inputs.Shift+Click - Pick component aggregate.Shift+Clicking - Place component aggregate.Alt+Left - Click Split canvas tool.Ctrl+Q - Preview toggle.Ctrl+E - Enable toggle.Ctrl+Left - Navigate upstream.Ctrl+Right - Navigate downstream.Ctrl+M - Mesh Edge display toggle.Ctrl+1 - No previewCtrl+2 - Wireframe preview.Ctrl+3 - ShadedCtrl+Alt+Shift+Click - Save image of canvas.Ctrl+Alt and Shift+Ctrl+Alt - Highlights components on the canvas and component palette.Ctrl+Shift - Rewire component input/output.Double Click - Find/SearchAlt+Drag - Copy component on canvas.Ctrl+Tab - Document cycling.Ctrl+Shift+P - PreferencesCtrl+N - New fileCtrl+O - Open fileCtrl+S - Save file.Ctrl+Shift+S - Save as.Ctrl+Alt+S - Save backup.Ctrl+W - Close open document.Ctrl+Z - Undo copy.Ctrl+Y - RedoCtrl+X - CutCtrl+C - CopyCtrl+P - PasteCtrl+Alt+V - Paste in placeCtrl+Shift+V - Paste in centerCtrl+A - Select allCtrl+D - DeselectCtrl+Shift+I - Invert SelectionCtrl+Shift+A - Grow SelectionCtrl+Shift+Left Arrow - Grow UpstreamCtrl+Shift+Right Arrow - Grow DownstreamCtrl+Left Arrow - Shift upstreamCtrl+Right Arrow - Shift downstreamCtrl+G - Group selectionF3 - FindF4 - CreateF5 - RecomputeCtrl+B - Send to backCtrl+F - Bring to frontCtrl+Shift+B - Move backwardsCtrl+Shift+F - Move forwardsInsert - Bake selectedCtrl+Q - Toggle previewCtrl+E - Toggle enabled selected
…
t in a number of curves, offset them and then make a union of those. This should give me the curve on which the center of the next particle that collides with the cluster lays.
[See attached picture]
Here's my problem. At first I got an awfull lot of error messages due to my inexperience with coding in VB and/or GH. After alle those were taken care of I have two scripts that do the job. I want to be able to do it in one script but I can't get the array of curves into the Curve.CreateBooleanUnion(x). If I set thoses curves as output and as input [hint: curves] in the next VB script, then Curve.CreateBooleanUnion(x) does work.
I guess I'm doing something terribly wrong in stating my variables, but I have no clue how to solve this.
Thanks for taking the time to look at my problem.
Reinier
Script 'offset'
Private Sub RunScript(ByVal x As Curve, ByRef A As Object) Dim z As array z = x.Offset(plane.WorldXY, 0.5, 1, 2) A = z(0)End Sub
Script 'union'
Private Sub RunScript(ByVal x As List(Of Curve), ByRef A As Object)A = Curve.CreateBooleanUnion(x)End Sub…
instance points). Since this list needs to be accessible for all my components it needs to be stored in some class that is accessible for all components. This class should provide for the components to check values or to append/ assign them from within their SolveInstance domain.
Apart from storing their coordinates I would like to keep track of their 'numbers'. These numbers should be assigned automatically and the way this is done can be expressed in the following pseudo code:
input = somearrayofpoints
for each point in input:
check = checkifcoordinatesexist(point) (true is yes, false is no)
if check == True:
nr= getLastNr() (returns last item from some record database)
store as string (nr + point)
else:
nr = getNrAt(point.coords) (returns the node number at given coordinates in record database)
store as string (nr + point)
How would I go about setting some structure like this up?
I have tried a following simpler set up using a Singleton class where I have a public class that basically returns the value of a number. Then I have a Grasshopper component that just counts the amount of points it gets and add it to the recorded amount of points like:
int counter = points.Count;
SingletonClass singleton = SingletonClass.getInstance(); singleton.getValue += counter;
No multiple of these components 'add' their counts together but with every run they keep increasing. So I need to in this set up I need to clear the data for every run.
So two questions:
1. is this a good start to achieve the above mentioned result, if not any suggestions? references?
2. if so, ho do I deal with the Grasshopper runtime and clear the data send to the Singleton class? Can I use event handlers for solver events for this?
Any suggestion would be greatly appreciated!
(I have attached the singletonclass.cs class and the counter.cs component for reference)
…
ystem to support it from the back.
ELEVATIONPLAN
What I need to do is create a mesh network that is composed of straight segmented pieces. To start, I contoured the surface at 500mm segments in the X and Y axis, getting a mesh grid [below]
Then, I wrote a simple grasshopper script to segment the contour lines, but when I run it, the segments in the X direction and the Y direction do not intersect like I need them to.
I understand why this happened and I understand what I need to do (in concept) but I can't seem to figure out how to implement it.
I'm pretty sure that I need to take the original contours and find the intersecting points and include it in my set of points from DivLength command. My problem is that in the list, the numbers get all jostled up and when I Pline the list of points, it goes a bit crazy. My questions are:
1. Is this the best method of going about this process of creating the segmented mesh?
2. How do I reassemble the list of the two point groups I added?
Thanks in advance!
Best,
Issac
…
thing about how to use Grasshopper to break up the unit modules as parameterization. Is there any Grasshopper Master could help me? The result i want is looks cool and easy to build.
Reference:
https://vimeo.com/98518748 Video link
http://www.designboom.com/architecture/robotically-fabricated-landesgartenschau-exhibition-hall-06-25-2014/
The question:
1,In the video,How to process parametric form?(kangaroo?)
2,After make all the things on the round surface, how to change the Tangency circle into flat polygon?
3, at last ,how to link every unit module?
…
for metadata on the Grasshopper installation but can't seem to find a reliable way to do this.
Issue #1 - Checking for an installation of Grasshopper
a) I can check to see if Grasshopper has been installed by searching the Windows registry, but it's not reliable. It seems that Grasshopper no longer has an individual uninstall package (can't find in Add/Remove...), and rather is uninstalled if you uninstall Rhino. However, the registry keys for Grasshopper do not appear to be cleaned on a Rhino uninstall, so my installer can get spoofed into thinking that there is a Grasshopper installed when it's not.
b) It appears that not every Grasshopper install creates a registry entry in HKEY_LOCAL_MACHINE. On my machine, for instance, I can search for the Grasshopper key and return the directory of the .rhp file, and then verify that the file does in fact exist. On other machines, however, I have found that there is no key in the HKEY_LOCAL_MACHINE, and the registry entry in HKEY_CURRENT_USER does not include the path to the .rhp file, so I can't verify whether it does in fact exist or if the registry is out of date.
c) I could brute-force search for the .rhp file, but I haven't found the most reliable parent director(ies) to search in order to be exhaustive and accurate.
Issue #2 -- Checking the Grasshopper Version
I would like to be able to trigger an update programmatically to a network installer (firm-sanctioned GH version) if the existing version is older than specified.
In some cases, if I can find the rhp through the HKEY_LOCAL_MACHINE key, I could theoretically parse the file path, which appears to contain the text representing the version. This seems hacky, though, and I have to learn Gentee programming language to do it (trying to avoid that). Also, as I said before, I am not guaranteed to have this path location if I am only able to find the HKEY_CURRENT_USER key. Perhaps if I could reliably find the .rhp through a brute force file search, this would be my best option.
Just thought I would put this out there to see if you have any thoughts (David?). :) If I don't hear anything from the community, I'm going to try to do the brute force search and parsing method...
Thanks,
Marc
…