). forgive me if Iam wrong, but Iam partially colorblind so I cant see which axis is red/green :)
(Probably) plane with given z vector (normal plane) gets x and y axis by looking for world coordinate system, and so it can differ respectively to normal vector direction...
I preassume that .normalAt(u,v) works same as in surface divide component, which generates correct normal vectors (vector field ;))...
I'am also quite sure that David will add a new component which will be more flexible in planes generation (he wrote some time about it)...
"What is the best way to get 'smooth' transitioning normals across a row of points?" IMO the best, but not perfect :
evaluate reparametrized surface e.g. at uv = (0.5,0.5) (point A)
then evaluate it at uv (0.6,0.5) (u+0.1, v) (point B)
now you have 2 points, make vector -> (AB)
next use this vector + normal vector do define properly oriented normal plane (origin, normal vector as x axis, ab vector as y axis)
…
h", "yada yada", "cat", "sub") End Sub Public Overrides ReadOnly Property ComponentGuid As System.Guid Get Return Guid.NewGuid End Get End Property Protected Overrides Sub RegisterInputParams(pManager As Kernel.GH_Component.GH_InputParamManager) pManager.AddBooleanParameter("Boolean", "B", "Turn the component on or off", GH_ParamAccess.item) pManager.AddTextParameter("String", "N", "New Parameters", GH_ParamAccess.item) pManager.AddTextParameter("String", "I", "Input file path", GH_ParamAccess.item) pManager.AddTextParameter("String", "L", "Local copy path", GH_ParamAccess.item) pManager.AddTextParameter("String", "U", "User Name", GH_ParamAccess.item) pManager(2).Optional = True 'this doesn't work pManager(3).Optional = True End Sub Protected Overrides Sub RegisterOutputParams(pManager As Kernel.GH_Component.GH_OutputParamManager)
End Sub Protected Overrides Sub SolveInstance(DA As Kernel.IGH_DataAccess)
End SubEnd Class
Could it perhaps be that the component you're writing is not the same one that GH is loading? It's the only idea I have left at this point.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
Could there be a generic number input (or several using the little 'plus' buttons) to allow a variable (or variables) to be used in the component (x,y etc similar to evaluate function). I've seen workarounds for this which bypass the PM altogether, but it would be so much neater to contain it all in one? Could make it all powerful?
2) Medium
Disconnection and navigation:
a) Disconnecting a/several component(s) using just a straight drag onto a blank section of canvas. (Right click disconnect is a bit clunky if more precise when dealing with multiples, obviously retain this).
b) 'Charging' - when connecting two components that are miles away from each other, the hold-down and drag-pan approach can be tedious. Could charge-hold a connection (maybe a mouse-click + modifier) then be free to navigate to the target and 'discharge' the connection into it. A useful global zoom All and single click zoom back in shortcut could help with this. (think Mac Desktop: mission control)
3) Hard:
Ability to click GH geom in the Rhino viewport and highlight the corresponding component in GH. Where GH geom is overlapping, employ similar 'list-pick' to rhino; perhaps use with auto zoom/pan to relevant components in GH on highlight in list.
Keep up the good work
R
…
Added by Ralph Parker at 12:15pm on December 15, 2014
result VS something etc etc.
2. Unfortunately my Ball Pivot C# is classified strictly as internal. Reason is obvious: it's a pro tool and as such it would never see the lights of publicity (as any pro tool to be honest).
3. But I can provide a very simple piece of C# code that "distorts" Lists of objects (meshes or breps). Study the cases Something1 and Something2 to get the gist of the necessity of a Ball Pivot based solution (but you can use Mesh Machine as Plan B).
4.That said creating a "valid" (overlaps/self intersections etc etc) distorted mesh/brep that way ... well ... it's a bit more complex (done in the internal version of the def attached).
Load Rhino file first.
Here's some "distorted" stuff:
…
y to heaven (or hell) is full of pain,frustration and tears. In plain English: if you are not totally committed (and willing to pay the heavy price) ... well ... what about forgetting all that freaky stuff? (the best option, trust me)
Note: 99% of beginners dream to learn programing in order to make geometry. But the truth is that this is the least (and rather the most insignificant) that you can achieve especially when working in teams with lot's of CAD/MCAD apps (and verticals) in the practice of tomorrow (bad news: tomorrow is already yesterday).
Anyway: How to go to Hell in just 123 easy steps
Step 1: get the cookiesThe bible PlanA: C# In depth (Jon Skeet).The bible PlanB: C# Step by step (John Sharp).The bible PlanC: C# 5.0 (J/B Albahari) > my favoriteThe reference: C# Language specs ECMA-334The candidates:C# Fundamentals (Nakov/Kolev & Co)C# Head First (Stellman/Greene)C# Language (Jones)Step 2: read the cookies (computer OFF)Step 3: re-read the cookies (computer OFF)...
Step 122: re-read the cookies (computer OFF)Step 123: Open computer > burn computer > computers are a bad thing (not to mention the Skynet trivial thingy).May The Force (the Dark Option) be with you.
…
a "flattish" polysurface where sectioning (in 1/2 directions) could yield a meaningful grid (then you can calculate all ccx events and "sort" the points etc etc). But work with a doughnut and things are not that simple.
On the other hand testing "suitable" brepfaces is not that simple: even attempting to "auto" transpose the underlying surfaces requires several lines of coding. See these 2 cases:
Both derived from a test blob (made with TSplines - dead by now but still handy):
The bad news are that most solutions (or "solutions") on that matter are rather far and away from the scope of this Forum and therefore I doubt if someone would be willing to provide any working one.
On the other hand using Plan B ... i.e. meshing a Brep and attempting to relax the mesh (and going from tri to quad faces: Google that one) and then "sorting" them (a kind of topological sort) ... but that's another animal.…
tive: I want to calculate annual lighting energy consumption and annual illuminance value because of electric lighting and daylight.
2. To do this, I make my own lighting schedule based on simple supposed-to-be 'lux sensor'. The scheduling will be stored in "S_T_(something)" number component (picture A).
Based on daylighting of certain points, if the illuminance at the point don't reach 300 lux then the luminaire will be 'On' (1 because I use only manual switch). Some luminaire will be turned on if one of the two points doesn't meet 300 lux (thus the need of 'OR' gate).
The rest is just usual addition and multiplication to obtain the annual energy consumption (picture B).
3. For the annual illuminance, based on scheduling, the illuminance value of daylighting and electric lighting ("T_[something]" number component) will be added (picture C). Then we get the annual illuminance value.
Some say the clustered one makes it more heavier to compute. Is there another way I don't ned to use Cluster? (Picture C)
*By the way, all the calculation need to be matched with Occupancy value (it will be computed only when Occupancy is "1").
***
Where do you think it can be simplified even more? I think the expressions makes the calculation a bit heavy, but I don't how to simplify it even more. I suspect making the whole canvas as script will be more efficient, but I don't have any clue in programming language.
I will be waiting for your great replies!
…
r reference, I uploaded a testfile with labels A to F that shows this issues.
When selecting some objects and pressing the middle mouse button, a button for clustering appears. The inputs and outputs of clusters created with this immense useful function cannot be tagged.
1.
Set up a cluster like in A with inputs/outputs, tag the inputs/outputs with double click, cluster it, the inputs of the clusters B are correctly labeled.
double-click the cluster to edit it, double-click the input to edit the label, edit, save-and-close cluster - the new label doesn't appear at the input. Maybe I'm doing something wrong?
2.
select the objects to be clustered like in C, middle-mouse-button, cluster selection, the result can be seen in D. Again, double-click the cluster to edit it, edit the labels - nothing happens.
3.
This has to do with the visibility of clustered components. E shows two clusters that cannot be displayed, no matter if they are set to visible or not (it's the same component imported from my library, copied, disentangled and made inside visible one time). I believe I created it like method C.
I tried different cases (that's why there are so many differently visible variations in the file), but cannot reproduce this error.
best regards, Laurenz…
sible due to its protection level (line 109)
How can i solve this?
public static OpenTK.Vector2d TopologyReaction(Rhino.Geometry.Curve riverinput, OpenTK.Vector2d parentPt, OpenTK.Vector2d newPt) { double hightDiff = _fctHDiff(parentPt, newPt); double slope = _fctSlope(parentPt, newPt); double a, b = new double(); bool nulltest = false; //Curve street = Curve.CreateInterpolatedCurve(<pointList>, 0); Curve cv = new Curve(); //Line street = new Line(); //streetcv = NurbsCurve.CreateFromLine(street); //OpenTK.Vector2d parentPtnew = new OpenTK.Vector2d(parentPt.X, parentPt.Y); //OpenTK.Vector2d newPtnew = new OpenTK.Vector2d(newPt.X, newPt.Y); //street = new Line(parentPtnew, newPtnew); Rhino.Geometry.Intersect.CurveIntersections ci; ci = Rhino.Geometry.Intersect.Intersection.CurveCurve(riverinput, street, 0.001, 0.001); if(ci[0].PointA == null) { nulltest = true; } if(nulltest == false) { if ((slope > 2) || (newPt.X == -1.1111 && newPt.Y == -1.1111)) { // -- only return this if there is no future option for finding a valip position! return new OpenTK.Vector2d(-1.1111, -1.1111); // theses coordinates stands for null, since Vector2d is not nullable } else return newPt; } else if(nulltest == true) return parentPt; }
…
Added by Vinzenz Rauch at 1:09pm on December 5, 2016
etra -UNESCO world heritage sites. The course includes technical software tutorials in cutting-edge software, a design component, and guest lecture series.
The Visiting school is an extraordinary travel, learning and networking experience as well as a credential for graduate studies and career opportunities. The course is focused on speculating architecture for MARS, the Wadi Rum desert is resemblant of Martian landscapes, where Ridley Scott's 'The Martian' was filmed starring Matt Damon. The course will focus on novel techniques in design and fabrication at multiple scales: material, architectural and urban.
Contact jordan@aaschool.ac.uk visit www.aavsjo.com for registration and details. Accommodation is available at Antika Hotel for shared twin rooms with other participants at a discounted rate of 300$ for the entire course including breakfast and wifi (June 23 to July 4). The hotel is in Jabal Amman within walking distance to our venue.
Instructors:
Kais Al-Rawi
Julia Koerner
Marie Boltenstern
Mazen AlAli
Barry Wark
Andreas Körner
Guest Speakers:
Rob Mueller, NASA | Swampworks
Julia Koerner, JK Design | UCLA AUD
Full Guests to be announced.
Past Keynote Speakers:
Ross Lovegrove
Ben Aranda
Mark Foster Gage
…