attaching some screenshots which will help me explain the problem and the surface itself.
In step 1, the grid works just fine.
In step 2, when I try to trim the grid, it's missing two points (red circles).
If I graft the ptTrim component Gd input, I get a proper result with two missing panels (bottom screen shot)
In step 3, when I try to move/offset the trimmed grid it seems like it doesn't understand in which direction to move the grid.
Please help? …
all the normals using the 4 surrounding points of one point (it's a quad-based mesh).
But the points that are exported from the NakeEdge function are not well sorted, they are seemingly randomly organized over the mesh.
Is there a function that can sort them in a better way? I tried Sort Pt but that resulted in a similar 'random' pattern.
For comparison, using SDivide you can create a points and normals grid on a surface. I would like to do the same thing with a mesh.
By the way, the MeshEdit Extract Attributes function didn't extract anything. Maybe this function could help?
Thanks for any help! Fernano…
ld be the best UI.
I think difference is made by 'Slider = 10' vs 'Slider = 10.000' more than by simple input/component initialization so, why to stop when it could be even more powerful?
Slider = 0 To 5 --- Slider in [0, 5]
Slider = {3; 0 To 5}
Slider = {3;0;5}
Slider = 3;0;5
Slider = 3 0:5
Slider = 3,0,5
Slider = 3 0 5 --- Value and range (min max)
3 0.0 5 --- 3.0 0.0 5.0
3 0 5.0 --- 3.0 0.0 5.0
3.0 0 5 --- 3.0 0.0 5.0
-1 0 5 --- 0 0 5 (-1 -1 5)
6 0 5 --- 5 0 5 (6 0 6)
Slider = 0:2:6 --- Even numbers: 0, 2, 4, 6.
Slider = 1:2:7 --- Odd numbers: 1, 3, 5, 7.
0:2:5 --- 0:2:4 (or 0:2:6)
3:2:8 --- 3:2:7 (or 3:2:9)
3 1:2:7 --- 1 3 5 7 (value 3)
Bang! = 7 --- 7 outputs
Merge = 5 --- 5 inputs
What's your opinion about Bang! = 7? As it's setting number of inputs, should it use different format? Bang! 7? Bang! (7)? Bang! i7?
+ * - / \ % ^ & | ! = > --- Addition, Multiplication, Subtraction, Division, Integer Division, Modulus, Power, AND, OR, NOT, Larger than, &c.
= could be a problem.
\ Integer division or Set difference?
! could be NOT but also Factorial.
| could mean intersection.
& could mean concatenate.
1+ --- Addition: input A = 1
2* --- Multiplication: input A = 2
+{0,1,1} --- Addition: input B = {0,1,1}
0-, 1/, 2^, 10^, e^ have their own components
Flatten = {7} or Flatten = 7 --- Input P = {7} (off-topic: Why can’t P be a list?)
Pt = {1, 2, 3} --- Point XYZ, X = 1, Y = 2, Z = 3.
Swatch = 129,239,231 (102)
Swatch = 129 139 231 102
F2 = "x^2+y"
"List Length" and "List Insert" don't work properly: "Value List" is choosen. Why? What's the reason to this choice? Well, I'd like to know how the whole thing (search by keywords) works, David.
Name and nickname can be now used as keywords. "Larger" works for ">" but "greater" doesn't. Could it be improved? Could synonyms be used? Could a short description even be used (I know this could be a bit weird)?
more than --- >
more or less --- Similarity
more less --- Similarity
red green --- Sets.List components should be showed
lightning --- Split Tree
What about use Curve.Analysis or Math.Boolean to display those Tab.Panel components? Param, Math, Sets, Vector? Primitive, Special, Util? Tab, Panel, and Tab.Panel as keywords.
At the moment that I write this, I check that ignoring accents in keywords has almost been included (0.8.0009): p`anel, pañel, pánel --- panel (almost)
Shouldn’t 'Dom2' work for Dom²?
What about nested search? You type some keywords (say 'Params' or 'Params.Geometry', or 'red green', or 'lst') and then you make a fine-tunning search over previous results/keywords. Tab.Panel and/or nested geometry could be useful when search by plug-in is desired or when you want to search among .ghuser components (first 'ghuser' or 'Extra.MyPlugIn' or 'lst' keyword and then fine-tunning, specific, search).
Is 'list length' performing this nested search right now ('lst' > 'length')? Anyway, I am thinking about UI (graphical) changes; successive searches.
As I said, description (and even words from the help info) could be used to search. What about "some kind of tags"? I mean that if 'list l' to finally choose List Length has been used for a while, that could be learned. Eventually, an XML file could store these tags, so you could even edit them. That could implement description, name, nickname, help info, Tab.Panel, .ghuser, synonyms (lots of them), tags/shortcuts or wathever.
How could flatten/graft/reverse be used? Initialize graft+Simplify or graft+Bang! could be really useful.
What about expressions? I don't how could it be done properly: would Slider = x^2 (expression) work? I mean, aren't expressions parsed when initializing?
Is Panel somehow doing this? 'panel = wathever' always suppose that wathever is a string, so you can't use 'panel = <pi>'. Sets.Strings components also do this.
I've been about to write several paragraphs about height/width (resizable components: Panel, Graph Mapper, Slider, &c.), input/output names (Scripts, F components; or any component with editable input/output names), orientation (Scribble), type hint and access option, nickname, &c. but, to sum up: being able to set any property when initializing would be really useful. I'd like to know the best choice of syntax but I'm sure that, David, you're closer to the answer. What do you think about this?
Slider: 3 0 5 "MySlider" "Slider^2"
Panel: "This is the content" "This is the title"
VB: "N" List Integer 7 "r" Item Double
Addition: A 1 B 2
I guess that any unified syntax would be elegant and useful, but additional ad hoc syntax (per component) could be even better (cleaner).
What about use lists of values? I'm not sure about format: panel = ("Hello", "Bonjour", "Hola")? If any valid format/syntax is found, maybe more sophisticated fetaures could be achieved: panel = {0;0} ("A", "B", "C") {0;1} ("1", "2", "3") How would you like this to be implemented?
There is a much simpler and interesting feature that would be useful, in my opinion: being able to initialize more than one component. I mean say 7xSlider = 10.0 and get 7 sliders and I also mean multiline (multi-component) initialization: Ctrl+Intro when you want to start a new line and Intro (or even some Accept/Cancel buttons when you activate multiline mode) to initialize (every line/component), for example. I mean:
3 x Slider = 1
Panel
Mass addition
Panel
And the whole bunch of components that were in mind (pre-thinked definition) is initialized. It speeds up the workflow, making more dynamic to add components that are only available via the drop-down panels.
Should this multiplier be something like a text box adjacent to search field more than '7x'?
These are some of my thoughts about intitializing. Please let me know your opinion :]
…
e we here to eat pasta or kill them all? That's the big philosophical question of the day.
3. Struts that are smallish (I.e the part "engulfed" by the top/bottom cables) they can't support the long ones (their "continuation"/extension towards the roof, that is) unless (a) they are fat (and ugly) as my mother in law (b) they are proper AND supported by cables: for each top pt (on roof level) connect with the north/south/east/west points that belong to the top tensegrity grid. You'll see what I mean rather soon. This is the reason that the strut is a 2 parts combo (in order to allow some "oops" moments at assembly time - the norm, that is).
4. That way (BTW: Adios "neatness" welcome real-life) the long struts are requested to sustain axial compression forces (yielding no bending torque) whilst the @$%$@ cables do what cables do (tension forces).
BTW: These cables have nothing to do with the ones used for the T truss system.
5. But whilst all the above are rather obvious ... the thing that IS NOT is what is actually required on the roof level in order to allow the real-life alignment ("planarization") of the roof panels. But if we combine that "mini beam grid" (see Jansen-Viss hybrid facade/roof systems) with proper planar glazing "ultra cheapo" (kinda) SS 306 brackets (not to be confused with structural glazing, mind) > yes > that could cut the mustard properly (I.M.Pei do you agree?).
That said the ONLY way to get rid of stationary pockets of dirty rain water (in min slope roofs) is a planar glazing system - other wise the whole thingy is kinda the 3rd marriage.
More soon …
brand's exceptional quality and effectiveness. Known for their versatile haircare solutions, It's a 10 offers products that simplify beauty regimens, delivering remarkable results with minimal effort. Consumers praise their leave-in conditioners and styling products for transforming hair health, making them a staple in many households. Overall, the emphasis on reliable and high-quality ingredients ensures that It's a 10 remains a trusted name in personal care.
…
based on an input pt. I then use Rotate Plane and feed those into an Orient component. I have a closed curve as the geometry to orient with the area centroid as the base plane for orientation. In 0.6.0059 the closed curves are oriented to the rotated planes vertically. In 0.7.0030 they seem to be arrayed about the origin, with some foul play from the base plane position. I literally copied the point and curve I had drawn in rhino into a new rhino instance running 0.6.0059. I also copied the GH def from 0.7.0030 to the other one running 0.6.0059 and got a totally different (expected) result.
(def attached)
2. mesh face component is broken in 0.7.0030. Same copy/paste test as above.
3. Copying and pasting one addition component in 0.7.0030 results in something being focused on the 0,0 of the canvas causing the canvas view to go there. No addition component is copied. All we get is a fun ride to 0,0. This was noticed when copying and pasting a set of components... I noticed the addition component was not copied. When I tried with one, I found the nice transit to 0,0.
**Clarification. On a clear canvas, place one addition component...give a and b a single numerical input. copy and Paste the component. Select the two components, copy and paste them. Select the THREE (not 4 as there should be) and copy and paste... you will notice that only the original is copied and not the other instances.
There are workarounds for all of those, but they seem to be things that you might want to know about if you did not already know.
Anyways, I am liking the 0.7.x series! There are a few things still keeping me with 0.6.0059 around, but as i use 0.7.x more I am finding these things. First I find them. Then I think, hmm, I must be doing something dumb. Eventually I run into it enough that I think to put it here. These are three things eventually got to me...
luis…
elivering their latest workstation and graphics technology.
Intensive computing and exceptional graphics technology will deliver generative modeling and computing to its next level.
Participants will learn the ease of use of Grasshopper within Rhinoceros, so they could start creating their own generative design.
Who should attend:
1. Professionals in design and engineering industry who would like to gain more knowledge and productivity
2. Students who would like to extend their knowledge to the next level
3. Supporting IT who would like to provide even more efficient tools for engineers and designers
4. Engineering and Design Enthusiasts
Participants should send an email to fani@m3kom.co.id, to receive an invitation and its detail.
For further technical information about the event, feel free to ask Rendy (tihe.tihe@gmail.com).
This event will consist of the sneak preview of most anticipated real-time rendering for Rhinoceros: V-Ray RT for Rhino.
Hopefully, this will also initiate the establishment of Indonesia's generative modeling designers community in Indonesia.…
ts attached one next to the other which all together make the self-sustined structure.
Honestly, I've no idea about how I can create such algorithm..but maybe it easier than I expect.
Could you suggest me sth? The main problem is the variable section of each plastic element.
Thanks in advance for your help!!
I attached 3 reference images of the pavilion.
…
surface between 2 cross-listed series of points which happen to be "Divides" of the edges of the 3D surface (some kind of planar geodesics if you want).
To do so, I am extracting the intersections between the 3D surface and a series of planes that are rotated (with an angular increment defined as precision) around an axis defined by the straight line between the points.
Hence I end up with a bunch of planar curves. I need to extract them and order them into lists (1 list per pair of points) to extract the shortest curve between each pair of points.
If the first list of point is numbered: 1, 2, 3, 4..... & the second list is lablelled a, b, c, d.....
I can't find a way to extract the shortest point curve of the list between
1 and a, and between 1 and b, and between 1 and c, ... and between 2 and a, and between 2 and b, ...
I think the problem would be fairly easy to solve if I could use VB or Python or any code but I dont know how to code and I am in quite a rush to hand the project in..
Also, I have been using a Python component downloaded from this forum which evaluates if a point is on a curve and returns the point. I modified the code so that it returns the Curve instead of the pt.
If you guys have an idea how to solve this, you would clearly be my saviour :)
Here are a 3dm, the gh and the python component. I have also been using the Kangaroo component that kills duplicate curves..
…
using some simple vector math and RhinoCommon (basically, to check if a point is above a plane: Calculate the dotproduct between the plane Z-Axis and a vector from the plane origin to the point. If this is negative you're below, else above the plane).2) The cost of inputting/outputting large lists of objects can be very expensive (see this thread for tips). Best way to get around this is to encapsulate the logic inside your GHPython components as much as needed and not input/output more than you have to. Alternatively you can wrap the data from one component to the next in something which won't expose the data to GH. A third option is to use the PointCloud class or even the Volvox pointcloud. Both should severely speed this up.3) Of course multithread it once it you find the best solution for you (if it's still too slow ;)Attached a file exemplifying some of this..Edit: Didn't see Daniel's answer, using Plane.ValueAt(pt) method will be even faster than calculating it yourself via Python.…