m now enrolling in a research-based subject which its requirement is to investigate and write 5000 words of report or essay on topics such as arch history, sustainable arch , urban design and architectural computing.
As i am teaching myself GH , i have proposed to the unit chair of the subject whether it's possible to investigate and do a research on GH and use it as part of the unit assessment, and he is ok with the idea.
As I have never done this sort of research-based unit before , and never have a chance to sit down and talk the scope of works with him (unit chair). I am now a bit lost and need to come up with something, directionwise, before tomorrow night which is the last day to withdraw the subject.
It's impossible to contact my unit chair during the weekend and I would like you guys( which i think some of you are academic people or lecturers) to suggest me on
1. What's scope of work should my research cover , it's a 10 weeks and 5000 words projects , in my case it could be less given my result would be some images as well as the report ?
2. My initial thought of the topic and the result of this research would be
what is GH
how to use it......go through some basic operation ?
the result , create and illustrate the complex form that GH can produce , images of model
other application .....
3. I am interested in voronoi diagram , is it possible to investigate this and maybe come up with some voronoi forms for my final submission , is 10-11 weeks enough ?, given that i've only known GH for 2 months and never learnt voronoi before. It's too ambitious isnt it.
4. Given that my resource would be mainly from internet , what is the possibility of this project get done in 10 weeks ?
5. Any suggestion.
Thank you very much
Punkhead…
ly minimizing the number of operations needed to get to something, it helps a great deal.
This doesn't just mean reducing the number of components on the canvas, because each component doesn't consume the same amount of processing. For instance a simple number addition component is a zillion times lighter than a morph component that is propagating one polysurface object onto a complex degree 3 surface 5000 times (say a facade). All mathematical operations/objects (+,-,/,*,lines/circles/vectors/planes, etc etc) consume far less memory than any geometric operation/object.
I have used a pony with 1gb ram, 1 core, 32 bit, 2.something GHz to run things, and have also been fortunate enough to use a 8 core, 12gb, 3.something Ghz monster, and they have both managed to run out of memory.…
思った感じになりません。
balls の代わりにplanarカーブを直接入れてみましたがエラーが出ます。
ファンクションにしてみたところ、forループので作った数値が反映されていません。
ファンクションのインスタンス?を出力していないと思い上記のようにしましたがエラーが出てしまいます。
以上の事から自分の認識が正しいのかよくわからなくなりました・・・
python自体の深いところをわかっているわけではないので余計こんがらがりました。
そこで、for b in ballsはどのような条件または使い方であれば使えるのでしょうか?
そして、上記のように別のオブジェクトに対しての使い方はどのようにすればできるのでしょうか?
2:同じファンクション内のdist = rs.Distance(self.pos,b.pos)についてですが
この文章も for b in balls によってbはBallのインスタンスであると定義?されたためb.posがbの位置であると分かるのでしょうか?
pythonは定義しなくても動いてしまうのでどのような時に使えるのか文章見ただけではよくわかりません・・・
大変細かいことかもしれませんが、よりpythonをしっかりと理解するためにも、どなたかわかる方ご教授いただけると幸いです。…
hed). Maybe I can export it in Cad in polylines and then it in Rhino...
But I will contemplate all options, so I will look for SVG files.
It is a long-term project and I dont know clearly what is better. Maybe I can work in Arcgis to put all the information, which they will be points which represents buildings, built or not, and each building will have like 20 informations (architect, year, characteristics, etc).
And them export the points into Rhino-Grasshopper to build schemes and represent graphically the answer to questions like "Where was the origin of this architectonic style?", "How and where did it spread in its first 10 years?" or "Where did German architects build this style?" or "I can see where there are buildings with a monumental door". Now I have like 2000 buildings, and i think I will use 5000 for building the spatial data base.
I will write here if I find some easy way to get that or ask for help if I find a cul-de-sac way
Thank you,
Daniel
…
d 5000 stiffness it usually works quite well but some overlap. If you put it much higher than 5000, it freaks out and explodes.
2. In order to make the spring network, it must create a spring between every circle and every other circle. This is a lot of springs. With 121 initial points, you have 7260 springs! On my old laptop, anything more than 200 points runs very slow.
3. You can swap between random and gradient radii with the toggle. See the note about swapping between large radii in center vs small radii at center.
Random Radii Start
Random Radii End
Large Radii at Center Start
Large Radii at Center End
Small Radii at Center Start
Small Radii at Center End
…
k because although it generated the diagrid, it looks messed up and it isn't aligned with the imported revit floors. I've tried looking into the 'Structural tubes' cluster inside the GH definition however, it's certainly too advanced for me.
Could someone explain how the input parameters work? (and maybe how the convoluted cluster works). I also don't get why the ring beams are oval-shaped when all the diameters are set to 5000.
The diagrid I'm trying to create is just a simple circle with the same diameters at every level. They're also slightly offset from the edge of the slab.
-----
Or maybe is there is there a way to create the diagrid independently of the revit floors? (e.g. based on a cylinder).
Thanks.
…
sive:
It is using up all or a lot of the cycles on the app UI thread. So there's no computing power left over to handle mouse events, keyboard events and paint events.
It is using up more memory than the computer physically has, so Windows starts paging (i.e. using the hard-disk as a memory space). Since disc read/write access is orders of magnitude slower than RAM read/write speed, this will slow down everything.
Some other application is using a lot of computing power/memory and Windows deems that app more important than Rhino.
8GB might not be enough if Rhino needs more than 5GB or so to run. Windows will take up ~2, other apps will take up ~1 unless they are also doing heavy lifting, so you have about 5 left over for Rhino+Grasshopper+++. It is not difficult to make Grasshopper use lots of a memory, but its also not demanded. If you generate 5000 complicated Brep objects, they are going to have to be stored somewhere.
However I cannot comment from here about whether your problem is processor or memory related, or both.
…
ny Agents are within it after each iteration and their centroid attract Agents). So, I basically came up with a small .dll where I wrote classes for Agent, ZOne, Cell and SystemSetting. I reference this .dll into my VB component but then the majority of the functions and subs that describe this system interaction are written directly in this VB component.
The system works fine, but I cannot achieve the effect of having the system to redraw after each iteration. For example :
'''////////////////////////////////////'''
Call InitializeEverything()
For i=0 to 19 'say, Iwant to run my system for 20 times
Call UpdateZones() 'updates attractor values of Zones
Call RelocateAgents() 'say, code that does all the evolutionary job
Dim agentSrf As New List (Of OnNurbsSurface) 'want to collect the surface_
representation of all agents and visualize it
For j= 0 to agents.count-1
agentSrf.Add(agents(i).MySurface() 'collect the Agent representations
Next
A=agentSrf
Next
'''////////////////////////////////////'''
So, in this case I will only see the surfaces of the agents after this last iteration. I was trying to use timer and target my VB component but I have my initialization function there as well so it just reruns everything from the very beginning. Or I tried to:
A=agentSrf
System.Threading.Thread.Sleep(5000)
but this didn't give me much either.
I'm sure that there is a relatively simple solution to that but I cannot find it.
Would you please give me your thoughts on that?
Thanks A lot,
Dima…
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)…