ing curve vertically, taken the end points of my now two curves and built a surface from four points
D) Used the Surface to define a plane to which I am applying 3D text
C) Projected the resulting text back to the original surface.
It seems to be working OK, however:
1) It currently only sets the plane in X/Y - Z is always taken as real world Z (so cant project to horizontal surfaces) *note I tried dividing the surface and fitting a plane but the plane was waaaay offset from the surface; and
2) Subject to the way the surface is oriented, the text can be upside down/back to front and I have to fiddle with rotating planes to make it right (so it wont work to bake text onto multiple planes at once). See below:
Top row are letters i baked manually (adjusting angles as i went). Bottom row is all applied at the same time.
I wanted to cast out for suggestions on how I might be able to rectify this so that Z+ is automatically taken as 'up' but text can be applied to horizontal surfaced to - and 'In/Out' somehow be defined to make it easier to set which angle the text should be legible from.
Grasshopper script is attached. Any suggestions are welcome, I will have a crack and update progress as I go.
Note: I have used FabTools for creating and baking the text in the attached .GH.
Thanks
LJ…
this to the “activation” input. You can see your activation number by putting your cursor on the output. Send the number to (info@parametrichouse.com) or the blue chat icon below this page.
Key: We will send you your activation key by email. After receiving your key you can use it for all the laser cut files.
MD: Connect MD sliders so you can change the point attractors position. You can connect as much as you need!
X: The width of the rectangle
Y: The height of the rectangle
D: Distance from the edge of the rectangle. This is useful if you want the patterns to be located from an offset of the borders.
1: number of rectangles in x-direction
2: number of rectangles in y-direction
Min: minimum scale factor (from 0.1 to 1)
Max: maximum scale factor (from 0.1 to 1)
More info :https://parametric3d.com/en/lasercut-designs/panel-model-3245/…
protected override void SolveInstance(IGH_DataAccess DA) {
Brep myBrep= null;
if (DA.GetData<Brep>(0, ref myBrep))
{
int U = 0;
int V = 0;
if (!DA.GetData(1, ref U)) { return; }
if (!DA.GetData(2, ref V)) { return; }
Point3d[,] colec = new Point3d[U + 1, V + 1];
double paramU = 0.0;
double paramV = 0.0;
BrepFace mySrf = myBrep.Faces[0];
mySrf.SetDomain(0, new Interval(0.0,1.0));
mySrf.SetDomain(1, new Interval(0.0,1.0));
for (int j = 0; j <= U; j++){
paramU = j * (1.0 / U);
for (int k = 0; k <= V; k++) { paramV = k * (1.0 / V); colec[j, k] = new Point3d((mySrf.PointAt(paramU, paramV).X), (mySrf.PointAt(paramU, paramV).Y), (mySrf.PointAt(paramU, paramV).Z)); }
}
.....
I have been able to reproduce this inside a C# Script component without problems. Any clue?
Thank you!…
by joining 2 Breps, each of which is a Loft surface made from 11 plane curves rotated by different amounts. The first BRep looks like this
and the second one is the same geometry, but with the curve rotations reversed (x * (-1)):
Apparently performing the curve rotation using reversed values causes the resulting surface normals to be reversed also. I've tried numerous methods (including mesh operations) to reverse them back, but nothing seems to actually do that. So I am hoping that someone here can point me in the direction of how to do this successfully.
My overall objective is to print parts that look like the old fashioned faceted cut glass bowls and trays.
…
Added by Birk Binnard at 1:46pm on September 12, 2016
hat differ in shapes, sizes and height the facade would be a mess. Some spaces need some light while other can't have any. I would like to have full freedom of creation inside the building, to make it as functional as possible. Thats why i decided the parametric "skin" solution would be best. Since the location has industrial past (factories made of brick) i decided that brick would give interesting result.
I tried creating the definition on my own but since i lack skill in GH i got some problems (especially multiplication of bricks and the diffrence between each "level" (half a brick on y axis) caused problems for me.
I post my simple sketch explaining the idea of definition i would like to create (sorry about quality):
1 - Brep - I would like to use 25x12x6cm (classic brick) but as well experiment with diffrent shapes - like the one on the right with hole inside - that would give more light. Thats why i think the best solution would be using brep for this definition.
2- Multiplication - biggest problem for me - I don't know how tall the wall would be, what will be the final shape of Brep (brick) and that's why i would like to manipulate this with sliders as well. All the walls are flat (maybe it would be easier to use surface?). As i managed to multiply the bricks easy way i don't know how to gain control over height of the wall - for example that it is 30 bricks high, but has each second row moved on x axis by the distance of 1/2 brick. I tried using Series but with no success. Could you help me with that please?
3 - Rotation - i would like to use image sampler for that so i can "paint" where i want more sun and where i dont need it at all (black and white). The rotation has to be limited to 180 degrees as well. Obviously i didn't get here yet, but i never used image sampler so if you could give me some advice how to use component and how to create such images i would be really grateful.
4 - More of a concept thing - since the connection angles differ from 90 degrees i will have to figure out how to connect the parts of the wall at sides ;).
I would like to ask you for help with the defintion, since i am totally stuck at step 2. I post what i came up with so far. Thank you for your time and help!
PS. I post an image that is pretty similar to one of options i would like to check for my building.
…
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
…
B. It implements 2 algorithms, the first one being the recursive maze solver described here and the other one the A* search algorithm described here. I took the pseudocodes on the 2 links stated before and implemented them in C#. Further more I had to adapt the code so that it works in R3 (3d space) since they were all designed to solve problems in R2 originally. The maze is represented by a grid of points. The obstacles of the maze are also described by points. More precisely, the component takes the following data as input:
- list of Point3d objects representing the maze grid
- list of Point3d objects representing the obstacles
- start point as Point3d object
- end point as Point3d object
- grid dimensions i,j and k as int objects
Based on this input the solver stores the points into a 3-dimensional array of dimension i x j x k and performs the calculations. The component seems to work quite well as you can see on the screenshot below with mazes of small dimensions (the green balls are valid nodes for a path and the pipe is the actual path). With small dimensions I mean not more than 3375 grid points (i,j,k <= 15).
Now here comes my problem. For my work it would be really interesting to apply the solver to much larger mazes. I'm talking about dimensions of 1'000'000 (i,j,k <= 100). However my Rhino Installation suffers a spectacular collapse if I go beyond 3375 grid points.
I'm assuming that the worst case complexity of the maze solver for a 2d maze is O(n*log(n)). The one of A* is O(n log n + m), however I'm not sure what m is in this case. Since I'm dealing with another dimension here I guess the complexity is larger by one order of magnitude.
To all computer science savy people here, do you think there Is a way to tackle this problem? Is it possible to adapt the program that it works more efficiently? Should I only feed numeric data instead of Point3d objects? (I'm assuming that only references are passed but not actually the point objects but correct me if I'm wrong).
I would be very greatful for hints and help. In this sense I would like to open an inspiring discussion about the topic, any ideas welcome! Also please feel free to use the component for whatever purpose you might find useful and to develop it further...
Thanks and Best
Hjalmar
…
proxy). However I decided to use the Human plug-in and scatter them as block instances, this allows me to add some reference lines in a different layer to have a better visual reference of the proxies, and have a lighter work environment in Rhino. (If you have the blocks on a layer and the proxies inside in a different layer, the proxies will render even if their layer is off and they are not showing in the viewport)
The definition has two parts: the bottom part scatters 3 grass primitives on a circle surface and is mostly an updated version of Manuel's definition, I hope he doesn't mind (you can replace the circle with any surface if you want a small patch of grass), you then bake this geometry, create one or several proxies in Rhino and create the blocks; the top part scatters a block on either a Surface, Brep or Mesh.
The definition populates the base surface/brep/mesh with points, then offsets the edges with the circle radius and pulls the points outside that boundary to it, so the circles don't fall outside the surface. (this part was the one that gave most troubles and it still fails sometimes, maybe someone could help me with that)
It also autoflips the normals if they're not up, and aligns the X axis of the target planes to a set direction (so you can have some wind or gravity effect if you want).
I used, and you probably need to make it work: Rhino 5 sr11 64bits, V-ray 2.0, grasshopper 0.9.0076, and Human (3-17-2014)
In my examples I scattered 3 blocks each with its own material, but you can have proxies with multiple materials.
If you make your own grass primitives don't forget to map the textures before scattering.
I'm posting some example renders and sharing the vray materials and proxies I used (I was experimenting with vray2sidedmats and a second diffuse layer with yellow noise mapped to world coordinates)
I'd like some help to get some cooler and different ideas for grass materials and proxies.
If you get some bugs let me know...
Eduardo
…
Added by Eduardo A at 11:54am on September 14, 2015
yyy
(2) x.xxxx, y.yyyy
{1}
(0) x.xxxx, y.yyyy
(1) x.xxxx, y.yyyy
(2) x.xxxx, y.yyyy
I would like to use a VB script component to spit out a list of strings in the following format so I can save them in a CSV file:
0, x.xxxx, y.yyyy
0, x.xxxx, y.yyyy
0, x.xxxx, y.yyyy
1, x.xxxx, y.yyyy
1, x.xxxx, y.yyyy
1, x.xxxx, y.yyyy
I've searched around the discussion board and found the following code snippet:
Private Sub RunScript(ByVal x As DataTree(Of Object), ByVal y As DataTree(Of Object), ByRef A As Object) Dim zones As New List(Of String) Dim table As New List(Of Int32) For i As Int32 = 0 To x.BranchCount - 1 Dim path As Grasshopper.Kernel.Data.GH_Path = x.path(i) If (table.Contains(path(0))) Then Continue For table.Add(path(0)) For j As Int32 = 0 To x.DataCount 'DataCount returns all items in tree?! zones.Add(path(0).ToString()) Next Next A = zones End Sub
I modified it a bit by nesting another for-next loop to spit out the repeating path index. I was hoping that x.DataCount would return the number of items in that particular path, but it appears to return the total number of items in the tree.
The question: How do I return the number of individual entities in a particular path?
Is there a simpler way, perhaps without scripting?
And, in general, where's a good go-to to find a list of GH classes and their methods as well as explanations. If I saw it all in one place, it might be easier for me to understand how this is all structured, rather than seeing little bits here and there...
Thanks!
Rhino v5x64
GH 0.8.0066…