own use and added the command line port LPT1 port dump.
I found a couple of strange things in your code:
# Changes the model units to inches, but does not scale model.rs.UnitSystem(unit_system=8, scale=False)
Why did you change the model units here? HPGL units are 40 per mm (which is also 1016 per inch) staying in mm units in your model will be fine if your step scaling in right.
And doing this seems strange for a cutting program:
allCurves = rs.ObjectsByType(4)for curve in allCurves: if (rs.CurveDegree(curve) == 2 or rs.CurveDegree(curve) == 3) and rs.IsPolyCurve(curve): rs.ExplodeCurves(curve, True)allCurves = rs.ObjectsByType(4)
Cutting usually needs a closed curve to produce a nice clean removable piece from the material. Your approach results in a bunch of line/curve segments instead of closed polycurves/polylines. As this simulation shows the 'O's and 'R' are cut as a collection of curve segments - not closed polycurves:
I just removed this step from the code.
As this simulation shows every part of the font is cut in one cut action - exactly what I needed:
I saw your RVB code on the RhinoScript site too - was way more detailed than I needed - my vinyl cutter only has one 'pen' - the cutting blade. I just needed a really basic way of getting polycurves into HPGL format and firing it out to a printer port.
Thanks for your help on this little project - I'm very stoked at the result! Let me know if I can help with your cutter project.
Cheers
DK…
this was about some boring building I wouldn't respond ... but here we are talking sardines.
Here's my take on that matter:
1. The 4 C# first create/use a nurbs, then define some random planes (and transformations) and then (a) either they place some humble stripes or ... er ... (b) sardines as instance definitions (NOTE: Load Rhino file first).
2. All important decisions are the ones in yellow groups.
3. You control what you get via this (priority on stripes or sardines? that's the 1M Q):
4. If you decide for sardines (the right thing to do) then you must ENABLE the Sardiniser(C)(tm)(US patent pending) as follows:
5. The vodkaFactor on that Sardiniser C# adds some spice in the sardine placement (it does that by altering the priority on the "composite" transformation in use: first randomly rotate then planeToPlane .... or the other thing?).
6. Only the finest Da Morgada sardines are used in this definition:
7. Spot the WARNING in the filter related with what sardine to choose > do it wrong and no hard disk on your workstation > no risk no fun > sorry Amigos, he he.
8. 1M question for you all: why placing sardines (it's real-time you know) is WAY faster than creating these humble stripes?
9. Although the sardines are placed in real time as regards your CPU ... the critical factor is your GPU (display mode: rendered).
10.Still WIP (dancing sardines in the next update).
have some sardine fun, best, Lord of SardineLand…
t ''Morph'' turns Red saying ''Cannot morph from a degenerate box'' (image 2),
that's because every curve generates a box (image 3).
After what i check the Option ''Union'' box to make only one box for all the curves (image 4).
However, the result is aleatory and not accurate at all ... :/ (see image 6).I know you are developing Pufferfish and not ''Morph'' component, but recently you publish on instagram a video where i believe you could morph and Twist with success a collection of curves (please see image 7 and 8)...If you could give me a hint how that can be achieved, it would be awesome.(Piping/Meshing the curves with very small diameter will perhaps work and help for visualisation purposes, but i actually just need morphing Raw curves for fabrication purposes).Hope to read you very soon...Ghali,…
asshopper via the user datagram protocol (UDP) was to effectively speed up communication between programs without the use of each program writing and reading a text file. This investigation was begun to open up Grasshopper to the outside world and eventually use it to drive physical associations via arduino and other interfaces. Processing was used initially as it is a very simple platform to used to test communication to and from Grasshopper. The first objective of the investigation was to eventually connect up with a custom plugin which Shajay Bhooshan has been developing.
On the Maya side, Shajay is controlling and augmenting this already vast platform with custom C++ API Nodes. His work can be seen on We Work 4 Her. This particular ‘fluid_UDP_Node’ transmits fluid data per voxel over UDP. Shajay has also taken advantage of the Open Frameworks, leveraging some of the code within the Maya plugin.
On the Rhino Grasshopper side, I have developed a very simple UDP receiver component in vb.net. The data is transmitted as one long string of comma separated values. Currently Shajay can send me fluid density and velocity information per voxel, but really, any type of information could be sent out. This information is parsed in the GH component and used to visualize the fluid as a Surface. As with the rest of the UDP experiments, Giulio Piacentino’s “The Engine” (http://www.giuliopiacentino.com/grasshopper-tools/) component made the refreshing of the Grasshopper canvas possible.
As you can tell, running all of these applications (including screen capturing) start to have an effect on this single processor machine. Maya can effectively optput the data between 8 - 12 frames per second depending on how many applications are running. The promising aspect of using UDP is that data can be sent from one computer to another via a network. This could effectively distribute the workload of complex combinations of processes to many devices.…
s with Rhino & Grasshopper and Cinema 4d(rendering).
I found this two good laptops!
Hp Elitebook Windows® 7 Professional autentico 64Processor Intel® Core™ i7-720QM (1,60 GHz, 6 MB L3 di cache)8 GB di SDRAM DDR3 a 1333 MHzSATA II da 500 GB a 7200 rpmScheda grafica NVIDIA Quadro FX 2800M con 1 GB di memoria video dedicata GDDR3
Price 2.200 Euro
SONY VPCF12S1EWindows® 7 Professional autentico 64Processore Intel® Core™ i7-740QM8 GB di SDRAM DDR3 a 1333 MHzSerial ATA da 500 GB a 7200 rpmScheda grafica NVIDIA® GeForce® GT 330M con 1 GB di memoria video dedicata GDDR3Price 1.400 Euro
Looking at the price, I would buy the second one…but I would ask you one thing....Considering that using Grasshopper I will create really complex works, using a GeForce instead a Quadro processor could it be a problem??…
this workshop is to materialize a chair designed with help of generative algorithms via robotic fabrication. To design the form of the chair we will go through an intensive course of generative design techniques, k-means clustering, structural analysis and optimization done with the help of Anemone, Galapagos, Millipede and other plugins. Finally we will employ a 6-axis robot with custom tooling to fabricate the chair via robotic rod bending. No prior experience with Grasshopper or robotic fabrication is required, although basic knowledge in 3d modelling would be an asset. // APPLICATION The deadline for application is 13.03.2017 Apply by sending email titled ‘workshop_chair’ to workshops@aan1.net // INFO If you have any more questions check the www.aan1.net website or contact us with email workshops@aan1.net // FEE We have special pricing for students, as well as an early bird offer. Check the Eventbrite list to get more details. Please bear in mind that a limited amount of seats is available (minimum 8 people, maximum 16). ORGANIZERS: Maria Smigielska, Mateusz Zwierzycki, AAn+1 TUTORS: Maria Smigielska, Mateusz Zwierzycki PRICES: Early Bird Student 280 E Early Bird Pro 320 E Regular Student 300 E Regular Pro 350 E…
sent a 3D shape without any ambiguity. If the shape you're trying to convey falls outside the scope of existing standards, then it can't be done, but this is a problem of standards, not an intrinsic shortcoming of pencils.
[...] with the computer theoretically acting as a decision maker.
The computer makes no decisions on it's own. It's a fully deterministic machine, meaning that any output is the result of applying a set of rules to some pre-existing data. Humans make the rules. At no point can you blame the computer for coming up with a bad answer, it's always some human who is responsible.
[...] it seems to often be split between Computerization, and Computation.
I'm willing to concede there exist cases that are unambiguously one or the other, but there's a gradient in between these two extremes, they are not separate categories. If I draw a box by specifying the 8 corner points as XYZ coordinates then computation can be said not to be involved. If I draw a box by specifying 2 opposite corners then the computer has to compute the other 6 coordinates and we're already on our way towards the other extreme. If I draw a box by specifying a width, height and a required volume, more computation is needed. If I specify a box by a width, a volume and the requirement is doesn't cast too much shadow on some other shape, more computation is needed. At what point do we say "now it qualifies as computation/solving"?
--
David Rutten
david@mcneel.com…
Added by David Rutten at 7:22am on November 28, 2013
be due to memory issues, but I did see the run time go from, no kidding, 5-1/2 hours down to 1.5 minutes; as this logic simply removes duplicate curves in groups, and then runs it again to further remove duplicates, should not be missing any curves. I haven;t tested it extensively, but results were the same for a straight curve removal (5.5 hours) and the 'page swapped' method outlined (1.5 minutes). So called page swapped, as it is one of the old methods used by intel and others to manage memory on slow processors, from the 1970's.
This method also works to cure the "region union" bug, again coming up with an outline curve from your tree definition. Not only was it fast (45 seconds) it actually worked! on a large curve set (3,000 + curves).
Is it a generic method? Don't know. worked well in these two cases though, and is both 2 orders of magnitude faster, and embarrassingly idiot simple; so simply that I was actually not sure if I should show it, as I do not want the group to think I have the skills of an 8 year old (actually that used to be an insult; with today's kids, might be a compliment)
I am interested to hear if it work in other cases.
Oh! I left out the last line in the sequence, the last component should be a repeat of the duplicate lines command without partition the set so indeed not to miss any curves. Same for a 'region union" sequence
By the way, your scripts, tools and examples are fantastic! - I and others have used them as starting points for various projects.
here is the full sequence
…
Added by mark zirinsky at 9:03pm on October 22, 2017
to make the script perform the command for me. The problem is that the rhinoscriptsintax command doesn't look to be working. Even the code from the example when I substitute the lines with selected curves:
import rhinoscriptsyntax as rs
curve0 = rs.GetObject("curve 0",4)
curve1 = rs.GetObject("curve 1",4)
rs.AddFilletCurve( curve0, curve1 )
The error give is :
Message: Unable to add curve to document
Traceback: line 215, in AddFilletCurve, "C:\Users\Vincenzo\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rhinoscript\curve.py" line 8, in <module>, "C:\Users\Vincenzo\AppData\Local\Temp\TempScript.py"
And this even for two simple curves created in the document. It only works if the two curves are actually touching one another with one end, but this is not the situation I am into.
So if this command cannot work with two separate curves (can it?) what I thought was to use a rhino.command in order to get the _Fillet command out to rhino. But I couldn't find a way to select the two curves not manually but through the script:
rs.Command("_Fillet")
rs.SelectObject(curve0)
rs.SelectObject(curve1)
doesn't work because the rs.select runs only after the previous one has been processed completely.
Of course I cannot select manually all the curves which are generated by the script, do you have any suggestion?
Thank you a lot in advance
Vincenzo…
"flow" into which adjacent faces (as opposed to having abrupt angles displayed between the two faces). In Maya, if I recall, they do a similar thing with "flags". I've been trying to figure out the corresponding mechanism in Rhino meshes and I'm beginning to believe that you just have to repeat vertices to make "creases" between faces. So the Rhino box has 24 "vertices" which, is apparently because each vertex is repeated for each face it belongs on - 6 faces times four vertices per face is 24 vertices. Is that really the case? It seems wasteful. I'm assuming that if you only had 8 vertices that the display would be attempting to make the edges "blend together". This means that the cube is really just six conveniently placed squares. Does Rhino even know that these six squares form a closed mesh? I know there is an "IsClosed" property on meshes. I assume it's returning false for boxes?
Aha! I was going to ask how Rhino still "knew" that the three vertices were actually one so when you dragged it you would drag "that single" vertex instead of one of three but now that I actually construct a box and drag, I see that Rhino in fact, doesn't know that and you do in fact drag one of three so that seems to back up my assumptions here.
Is this really the only way to make "creases" in 3D meshes? I just want to make sure before I spend a lot of time making my meshes based on this assumption.
I'll attach my (apparently incorrect) code FYI. It's a grasshopper plugin. Just trying to learn how to code in this system.
Thanks!
Darrell Plank…
Added by Darrell Plank at 6:53pm on December 18, 2014