Firefly_firmata into my Arduino UNO board;
3. I wrote a definition with open port component and serial read (with timer) component, feeding the correct COM number and opening the port in the right time.
All components are grey, but when I connect a panel component I can't see anything but a list of nosense numbers (see attached image).
What am I doing wrong? I also downloaded files from this youtube video, but nothing...
https://www.youtube.com/watch?v=RNoAYWtky6g
I really hope in your help :) thank you in advance…
f 15 points and my teacher said to me afterwards: "Chris, you know that the one point was a sympathy point don't you ?" ... so baby steps but i'm catchin up ..
to help me follow the breadcrumbs through the patch could you maybe dumb it down extremely for me and just list a couple of steps how the system functions, sth like. 1) define string gauge- 2) draw neck liine 3) calculate spacing or sth like that, like a super high level overview. it's great that you have grouped, named and colored everything (many many thx for that !) this helps a lot for my understanding but you are using so many components i have never used that it's a bit difficult at the moment to follow the logical flow.
BUT: everything pans out now and spacing is perfect and all is centered ... with this one can build guitars :-)
…
end points always have to be on the curve)The 3D measurements have to be checked with a wooden template(see picture). In this case it's a front window for a yacht. 3 mm MDF is curved on a frame made of 15 mm thick plywood. All the recesses that have to be made in the plywood (see picture) to slide the parts into each other, I'm trying to automate also with grasshopper in the future.
After I created the developed surface, I put on the small open curves (separator between glass and rebate). So the curve is always planar.
This is what I'm trying to do. Hope this clarifies something for you.…
Added by Robert van Es at 6:35am on December 14, 2014
ate the "base" ... load Rhino file fist.
2. This greatly reduced demo creates a Del Mesh "in real-time" (it's a very complex project that I'm after these days: 10 C# scripts work together to do ... something, he he) AND finds convex hull points as well, So it works "twice" but still is fast. In fact it's about 15 times faster than the very same thing that I did with Generative Components.
3. Again: NOT for your case but good fun (I believe). Obviously doing this for a couple of surfaces of yours ... it could yield also a real-time solution.…
nside' the OnLine variable. It is instead stored somewhere else in memory, and the OnLine variable only contains the address of this chunk of far-away memory. In other words, it contains not the value, but a reference to the value.
So when I say:
Dim ln As New OnLine()
then the computer creates a new OnLine instance (the 6 numbers) somewhere deep down in the RAM, and ln merely holds the address of this instance.
When I call a function that takes an OnLine as an input, it is in fact given an address, meaning that any changes to the OnLine from within the function can have far reaching effects:
Dim ln As New OnLine()
ln.From = New On3dPoint(10, 10, 0)
ln.To = New On3dPoint(15, 20, 3)
...
...
Public Sub FlattenLine(ByVal line As OnLine)
Dim project As New OnXForm()
project.PlanarProjection(OnPlane.World_xy)
line.Transform(project)
End Sub
This function changes the line parameter, and since OnLine is a Reference Type, it also affects every other variable that points to the same memory.
to be continued >>>…
Added by David Rutten at 6:10am on September 9, 2010
an external test suite.
We have a lot of parameters we want to test with, so doing so in Rhino is cumbersome.
To this end, we've experimenting to run Rhino/Grasshopper with a number of ways:
- 1) Using the COM interface, to create Rhino, load grasshopper then run tests
- 2) Exposing Rh/Gh internals using WCF via a Rhino command, which starts off WCF, then run tests
- 3) Exposing Rhino/Grasshopper internals using .Net remoting, again via a Rhino command
We've tried -1) that seems to be a dead end, limited access to Rh/Gh
We've tried -2) that works but raises an error in the WCF server stating that RhinoCommon is not available (see attached image). I've tried copying dll's from the Rhino installation to the running wcf directory, but that does not help.
Todo -3) We've still got to try this method.
I've googled similar entries in the forums:
http://www.grasshopper3d.com/forum/topics/how-can-i-use-grasshoper-externally
http://developer.rhino3d.com/api/rhinoscript/introduction/external_access.htm
Does anyone know why -2) wcf fails or if .net remoting will work successfully.
Or indeed if there are other options to address our use case?
Many thanks,
Milan…
s meios acadêmicos e profissionais do Estado de Santa Catarina em parceira com a Escola de Design ELISAVA de Barcelona.
Metodologia: Mediante um exercício prático os participantes poderão ter em primeira mão uma aproximação às técnicas mais avançadas de design e fabricação digital.
Web: http://santacatarina.elisava.net/
e-mail: secretaria@sc.asbea.org.br
As atividades estão divididas em 3 etapas.
1ª etapa: Roadshow (Ciclo de Conferencias)
Palestrantes:
Affonso Orciuoli, arquiteto, professor da Escola de Design ELISAVA de Barcelona, Univesitat Ramon Llullp.d. As conferencias do Prof. Orciuoli serão através de videoconferência desde Espanha
Regiane Pupo, arquiteta, professora da UFSC, Florianópolis
As conferencias da Prof. Pupo são presenciais.
Datas:
Lages 01/11Chapecó 03/11Caçador 04/11Criciúma 07/11Baln. Camboriú 08/11Blumenau 09/11Joinville 10/11Florianópolis 11/11
Horário: 18:00 horas
Conferencia: Arquiteturas disruptivas. Design e fabricação na era digital.
Palestrante: Prof. Arq. Affonso Orciuoli | Professor ELISAVA | Barcelona
2ª etapa: Curso on-line de Rhinoceros
Durante o Roadshow será apresentado o curso on-line de Rhinoceros (http://www.rhino3d.com/).
Entre 01 e 22 de novembro serão subministrados tutoriais a todos os estudantes e professores participantes, a título de se prepararem para o workshop, ver sessão ”downloads”
3ª etapa: Workshop E-luminárias
Entre 23 e 27 de novembro de 2011, das 8:00 às 18:00 h (10 horas por dia)
Workshop Internacional (50 horas)
Diretor: Affonso Orciuoli
Professores: Regiane Pupo | Ernesto BuenoLocal: InovaLab | Sapiens Parque | Florianópolis | Santa CatarinaInvestimento: R$ 150 (estudantes) e R$ 300 (professores & profissionais)Vagas: 50Obs.: Materiais para a fabricação incluídos.
Objetivo: reunidos em grupos de 3 participantes, se desenvolverá um projeto completo de uma luminária, utilizando plataforma CAD. Posteriormente os participantes, com a ajuda dos instrutores, deverão preparar os arquivos para a fabricação na máquina fresadora e laser. Por último as luminárias serão montadas e expostas em conjunto.
Cada participante deverá trazer um laptop com os programas instalados (“demos” do Rhinoceros, RhinoNEST, outros programas de CAD também poderão ser utilizados). Todos estes programas estarão disponíveis para serem baixados a partir do site da Escola de Design ELISAVA de Barcelona.
Equipamentos presentes no workshop e à disposição dos participantes:
Máquina CNC tipo fresadora de 3 eixos
Máquina de corte a laser
Máquina de impressão 3D (a título de demonstração)…
both my plotter/cutter and wide format printer. I had been running the plotter from my main work laptop - a Win10 machine via the plotters USB port. As it turns out you can't get Win XP drivers for this USB connection so I needed another solution.
I tried to use the plotters DB25 serial port connection using an old DB9 to DB25 modem cable I had in my collection = no luck the plotter wouldn't talk. A bit more research and it turns out these plotters need a 'null modem' cross over cable to operate. I found a pic of the correct wiring online and made up my own with some cable and connectors from the local electronics hobby shop.
With this hooked up and using Hyperterminal I was able to fire some codes to the plotter directly and get a response back - winning!
At this point I got my original code working with the 'net use' redirect from LPT1 to COM1.
HOWEVER - being that the plotter was now on a COM port there are a few more interesting things you can do with it - one is being able to read the paper size/cut area from the printer.
So what I needed to to was find a way to send and receive data to/from the plotter using the serial port.
A bit of research into .NET's serial port interface and using a bunch of small pieces of test code I have manged to completely re-jig this driver.
Upgrades include:
- Direct Serial Port comms using Null Modem cable (a USB to serial adaptor + null modem should also work)
- Plot area read from the plotter - a rectangle the size of the plot area is placed on a separate layer and coloured red
- Testing to see if selected plotting curves are both closed and inside of the cutting area - with errors shown and exiting if they are not right.
- After plot 'parking' of the plot head at the end of the cut items + an adjustable offset (currently requires manual resetting of origin on the plotter before for next cut)
Great thing is it is now 100% running within Rhino Python - no DOS command line calls = no flashing up of the CMD wind. Also no temp files needed on the HDD and no limit to number of curves that can be plotted - tested with 200 or so with no issues.
Overall very happy with whole project - have learnt a LOT about Python and .NET interfacing AND ended up with a very handy/useful tool.
Cheers
DK
# This code is a WIP # It plots directly to a DGI Plotter# via the serial port
import System.IO.Ports as Portsimport rhinoscriptsyntax as rsimport time
#Some setup valuescom_port = 'COM1' #change to match plotter port baud_rate = 9600 #change to match plotter settingplotter_step = .025 #mmfinsh_offset = 10 #mm
#Delete old cutting area and cut objectsif rs.IsLayer('Cutting Area'): rs.PurgeLayer('Cutting Area')if rs.IsLayer('Cutting Objects'): rs.PurgeLayer('Cut Objects')
#Setup Serial PortMyport = Ports.SerialPort(com_port)Port_Write = Ports.SerialPort.WriteMyport.BaudRate = baud_rateMyport.ReadTimeout=5000 #5 secsMyport.Close()Myport.Open()
#Setup PlotterPort_Write(Myport, 'PU;PA0,0;IN;\n')Port_Write(Myport, 'SP1;\n')Port_Write(Myport, 'PA;\n')time.sleep(2)
#Read the Paper size from PlotterPort_Write(Myport, 'OH;') #HPGL read limits codetime.sleep(2)
return1 = ''papersize = ''count = 0char_in_buffer = 0chars_in_buffer = Ports.SerialPort.BytesToRead.GetValue(Myport)
if chars_in_buffer == 0: print 'Plotter not ready' Myport.Close() exit()
while (count < chars_in_buffer): return1 = Myport.ReadChar() papersize = papersize + chr(return1) count = count + 1
papersize = papersize.split(",")rect1 = (float(papersize[2])*plotter_step)rect2 = (float(papersize[3])*plotter_step)
print 'Cutting area = ' + str(rect1) + 'x' + str(rect2)
#place cutting area curve on its own layer, make it red and lock itplane = rs.WorldXYPlane()cutting_area = rs.AddRectangle( plane, (rect1), (rect2))rs.AddLayer (name='Cutting Area', color=(255,0,0), visible=True, locked=True, parent=None)rs.ObjectLayer(cutting_area, 'Cutting Area')
#get plotting objects
allCurves = rs.GetObjects("Select curves to plot", rs.filter.curve)
#test to see if these are closed curves - exit if not
for curve in allCurves: test_closed = rs.IsCurveClosed(curve) if test_closed == 0: print "One or move of these curves are not closed" Myport.Close() exit()
#test to see if these are inside cutting area - exit if not
for curve in allCurves: test_inside = rs.PlanarClosedCurveContainment(curve, cutting_area)
if test_inside==0 or test_inside==1: print "One or more of these curves are outside of cut area" Myport.Close() exit()
#All ok - convert to points and send data to printer
rs.AddLayer (name='Cut Objects', color=(0,255,0), visible=False, locked=True, parent=None)
for curve in allCurves: Port_Write(Myport, 'PU;PA;SP1;\n') polyline = rs.ConvertCurveToPolyline(curve,angle_tolerance=5.0, tolerance=0.025, delete_input=False, min_edge_length=0, max_edge_length=0) points = rs.CurveEditPoints(polyline) rs.ObjectLayer(polyline, 'Cut Objects')
# PU to the first point x = points[0][0] y = points[0][1] Port_Write(Myport, 'PU' + str(int(x / plotter_step)) + ',' + str(int(y / plotter_step)) + ';\n') # PD to every subsequent point i = 1 while i < len(points): x = points[i][0] y = points[i][1] Port_Write(Myport, 'PD' + str(int(x / plotter_step)) + ',' + str(int(y / plotter_step)) + ';\n') i += 1
Port_Write(Myport,'PU;\n')
#find the far end of the cutbox = rs.BoundingBox(allCurves)far_end = str(box[1])far_end = far_end.split(",")far_end = far_end[0]far_end = float(far_end)/plotter_stepfar_end = (int(far_end))+ finsh_offsetfar_end = str(far_end)print (far_end)
#return plotter home and close portPort_Write(Myport, 'PU;PA' + far_end + ',0;IN;\n')Port_Write(Myport, 'SP1;\n')Port_Write(Myport, 'PA;\n')Myport.Close()time.sleep(10)…
e once > be a happy bunny > stay away > ...
2. I've already explained why this 90 (or whatever) > 15 (or whatever) happens ... but ... er ... due to some communication "noise" (he he) I've added a flag that does smart (distinct) and stupid (!distinct) stuff. Visually inspect both ways and enjoy the art of pointless.
3. This wish of yours (duplicates) ... er ... hmm ... are you after fabricating data? (BTW: this is The Noblest of Arts, he he).
Lord of Darkness
…
errors:
When I made my surfaces, I created a separate surface at each intersection. For example, Wall A intersects Wall B and I created Wall C which represents the intersection of the zone. Wall C was assigned as its own surface in the assemblage of zones.
1. The simulation has not run correctly because of this severe error: ** Severe ** GetSurfaceData: Potential "OtherZoneSurface" is not matched correctly:
2. The simulation has not run correctly because of this severe error: ** Severe ** GetSurfaceData: Construction AIR WALL of interzone surface DH_EAST_2/3 does not have the same number of layers as the construction EXTERIOR FLOOR of adjacent surface DH_FLOOR3. The simulation has not run correctly because of this severe error: ** Severe ** GetSurfaceData: Adjacent Surface not found: DH_FLOOR_SRFP_0 adjacent to surface DH_EAST_2/3_DUP_DUP_SRFP_0
…