rhino 3d apprendre,rhino 3d assembly,rhino 3d animation tutorial,rhino 3d aide,rhino 3d axonometric view,rhino 3d archicad,rhino 3d autosave location,rhino 3d blocks,rhino 3d buy,rhino 3d book,rhino 3d blog,rhino 3d basics,rhino 3d boat,rhino 3d bongo,rhino 3d boolean union fail,rhino 3d bed,rhino 3d buildings,rhino 3d.com,rhino 3d crack download,rhino 3d car,rhino 3d cnc,rhino 3d camera,rhino 3d car modeling,rhino 3d calculate volume,rhino3d/net 4,rhino 3d crack mac,rhino 3d.c,rhino 3d çizim,rhino 3d download crack,rhino 3d demo,rhino 3d download free,rhino 3d ddl,rhino 3d dimensions,rhino 3d design,rhino 3d draw on surface,rhino 3d download mac,rhino 3d dwg,rhino 3d version d'essai,rhino 3d etudiant,rhino 3d emploi,rhino 3d export,rhino 3d extrude along curve,rhino 3d extension,rhino 3d export to illustrator,rhino 3d english,rhino 3d extract curve from surface,rhino 3d extrude surface,rhino 3d export jpg,rhino e stampa 3d,differenza tra rhino e 3ds max,rhino 3d étudiant,rhino 3d version d'évaluation,rhino 3d o que é,rhino 3d forum,rhino 3d for mac crack,rhino 3d for pc,rhino 3d for android,rhino 3d for mac,rhino 3d flamingo,rhino 3d for architecture,rhino 3d format,rhino 3d for linux,rhino 3d facebook,rhino 3d gratuit,rhino 3d grasshopper,rhino 3d gratuit mac,rhino 3d grasshopper tutorials,rhino 3d gold,rhino 3d gear generator,rhino 3d guitar,rhino 3d gear,rhino 3d guitar tutorial,rhino 3d glass,rhino 3d g code,rhino 3d help,rhino 3d history,rhino 3d how to,rhino 3d hack,rhino 3d hull modeling,rhino 3d heart,rhino 3d hal,rhino 3d human model free download,rhino 3d human,rhino 3d hardware requirements,rhino 3d icon,rhino 3d images,rhino 3d insert image,rhino 3d ipad,rhino 3d import image,rhino 3d interface,rhino 3d install,rhino 3d interior design,rhino 3d import formats,rhino 3d ipad pro,i rhino 3d app,i rhino 3d for android,i rhino 3d,rhino 3d jobs,rhino 3d jewelry,rhino 3d jewelry tutorial,rhino 3d jewelry design,rhino 3d join curves,rhino 3d jewelry free download,rhino 3d jobs uk,rhino 3d jewelry jobs,rhino 3d jewelry models,rhino 3d jungle,rhino 3d keygen,rhino 3d kickass,rhino 3d kangaroo,rhino 3d keyshot,rhino 3d key,rhino 3d knot,rhino 3d kaufen,rhino 3d keyboard shortcuts,rhino 3d kitchen,rhino 3d kayak,rhino 3d library,rhino 3d logo,rhino 3d livre,rhino 3d license,rhino 3d logiciel,rhino 3d license key,rhino 3d language,rhino 3d logo vector,rhino 3d landscape,rhino 3d model,rhino 3d mac crack,rhino 3d mesh,rhino 3d marine,rhino 3d mac tutoriel,rhino 3d manuel pdf,rhino 3d manuel,rhino 3d modeling,rhino 3d models free download,rhino 3d news,rhino 3d nurbs,rhino 3d neon,rhino 3d not responding,rhino 3d new version,rhino 3d non manifold edges,rhino 3d nesting,rhino 3d nuts and bolts,rhino 3d nz,rhino 3d network srf,rhino 3d objects,rhino 3d online course,rhino 3d open source,rhino 3d object download,rhino 3d online,rhino 3d origami,rhino 3d object free download,rhino 3d orient on surface,rhino 3d on surface pro,rhino 3d oculus rift,rhino to 3ds max,rhino to 3d studio,meglio rhino o 3ds max,meglio 3ds o rhino,o http //www.rhino3d.com/download/rhino/5.0/latest,solidworks o rhino 3d,rhino o …
it seems that was this. Now all is working fine !
Glad that it worked! But I am still a bit worried. Gismo components only modify the gdal-data/osmconf.ini file and no other MapWinGIS file. So your MapWinGIS installation files should not be compromised. The fact that you did not get the "COM CLSID" error message when running the "Gismo Gismo" component suggests that MapWinGIS has been properly installed. So I wonder if the cause for the permanent "invalid shapes" warning has again something with the fact that your system is again not allowing the MapWinGIS to properly edit the osmconf.ini. Maybe this problem will appear again, and again, and reinstallation of MapWinGIS every time can be somewhat bothersome.
- About the terrain generation, is it possible to have the texture from google or other provider mapped onto the terrain surface from gismo component ? (Same as using the ladybug terrain generator in fact). I try to used the image extracted by ladybug component and then applied it to the gismo terrain but the texture is rotated by 90°.
The issue with the rotation can be solved by swapping/reversing the U,V directions of the terrain surface. A slightly more important issue is that terrain surface generated with Gismo "Terrain Generator" component might have a bit smaller radius than what the radius_ input required. This stems from the fact that the terrain data first needs to be downloaded in geographic coordinate system, and then projected. Some projecting issues may occur at the very edges of the projected terrain, so I had to slightly cut out the very edges of the terrain which results in the actual terrain diameters being slightly shorted in both directions. This means that if you apply the same satellite image from Ladybug "Terrain Generator" component to Gismo "Terrain Generator" component the results may not be the same.I attached below a python component which tries to solve this issue by extending the edges of Gismo "Terrain Generator" terrain, and then cutting them with the cuboid of the exact dimensions as the radius_ input. Have in mind that this extension of the original terrain at its edges is not a correct representation of the actual terrain in that location. But rather just an extension of the isoparameteric curve of the terrain surface. So basically: some 0 to 10% (0 to 10 percent of the width and length) of the terrain around all four edges is not the actual terrain for that location, but rather just its extension.The python component is located at the very right of the definition attached below.
Also, if you would like to use the satellite images from Ladybug "Terrain Generator" component along with "OSM shapes", sometimes you may find slight differences in position of the shapes. This is due to openstreetmap data not being based on Google Maps (that's what Ladybug "Terrain Generator" component is using), but rather on Bing, MapQuest and a few others.
- About the requiredKeys_ input of OSM shapes, I understand what you mean and your advice, but in most cases I use it, the component was working fine even without input. I think it's better to extract all tags, values and keys of the selected area, instead of searching for specific ones as I try to find all data related to what I want after, isn't it ? To check what keys are present on the area also.
Ineed, you are correct.I though you were trying to only create a terrain, 3d buildings and maybe find some school or similar 3d building, for these two locations. The recommendation I mentioned previously is due to shapefiles having a limit (2044) to how many keys it can contain. This requires further testing of some big cities locations with maybe larger radii, which I haven't performed due to my poor PC configuration. But in theory, I imagine that it may happen that a downloaded .osm file may have more than 2044 keys. In that case shapefile will only record 2044 of them, and disregard the others. That was my point.But again 2044 is a lot of keys, and I haven't been checking much this in practice. For example, when I set the radius_ to 1000 meters, and use your "3 Rue de Bretonvilliers Paris" location I get around 350 something keys, which is way below the 2044.Another reason why one should use the requiredKeys_ input is to make the Gismo OSM components run quicker: for example, the upper mentioned 350 something keys will result in 350 values for each branch of the "OSM shapes" component's "values" output.Which means if you have 10 000 shapes, the "OSM shapes" component will have 10 000 branches with 350 items on each branch (values). This can make all Gismo OSM components very heavy, and significantly elongate the calculation process.With requiredKeys_ input you may end up with only a couple of tens of items per each branch.Sorry for the long reply.…
Added by djordje to Gismo at 8:57am on June 11, 2017
le of weeks. But if you are patient I think we will try to solve most of the issues.
For the TOF module, I find that no matter which inputs I provide, the optimalTilt is always 45 and the optimalAzimuth is always 180. I'm providing a weather file input and a north vector.
You are the second user who reported this which means that I was wrong in my assumption of setting a very low default value for the precision_ input, it should have been higher as more user friendly for beginners. Basically the TOF component results depend on the precision_ input. The best would be to set this value to 100, let your PC run the whole night, and in the morning you would get the most precise tilt and azimuth optimal angles. However, as some of us are using weaker PCs, and as sometimes the difference between results from precision_ = 100 and say precision_ = 30 is less than a degree, you can try using the precision_ = 30 for the start.
By default the precision_ is set to only 2. I will make sure this is increased in the next release of this component. Your topic definitively contributed to that!
Another thing I noticed is that "TOF" component does not support north_ inputs not equal to 0, in terms of graphical representation of results. It would probably take me some time to fix this. But the numerical results (which is what we need) are supported.
By looking at some other similar PV applications, I haven't seen the optimal tilt/azimuth graphical representation which supports change of north angle direction, so maybe this is not too much of an issue after all. The important thing is the numerical part, which is outputs correct results.
I'm then using the optimalTilt and optimalAzimuth outputs to supply the PV_SWH_SystemSize inputs for arrayTiltAngle and arrayAzimuthAngle - obviously this isn't actually doing anything useful at the moment as the outputs from the TOF are always 45 and 180.
It will make sence now, that you increase the upper precision_ input.
With the PV_SWH_SystemSize module, I'm having issues with the spacing it is providing between the rows of PV. I know it calculates this based on the sun position on a date based on the altitude of the location the weather file provides, but I think the spacing is far too large, especially for a rooftop array where the space is more like 1-2m normally. I'm trying to specify a summer date in the format the minimalSpacingDate output provides (15 NOV 15:00) so the calculated spacing is lower, but it just throws up an error whenever I do.
minimalSpacingPeriod_ input of the "PV SWH System Size" component accepts data from Ladybug "Analysis Period" component. But again, I apologize: as this is my mistake for not mentioning this in its docstring (that's the explanation you get when you hover your mouse over this input). I will make sure this gets added to the next release of "PV SWH System Size" component as well!
I also noticed a bug with "PV SWH System Size" component - at the moment the values it calculates are not correct if north_ input is not equal to 0. This is due to the component using another Ladybug developer's code which calculates sun position angles. For some reason this code does not support changing the north angle direction. I will contact the author to see how this can be solved.
So to be clear: it's not that all Ladybug Photovoltaics component do not support north_ inputs not equal to 0. It's that "PV SWH System Size" component currently does not due to the upper issue. And "Tilt and Orientation Factor (TOF)" component does not support for its graphical representation of results. I will see if at least the first one can be fixed.
Finally, it would be really useful to be able to get the PV_SWH_SystemSize component to actually produce the array it has created as Rhino geometry, so they can be viewed when rendered; is that possible? Also, is it possible to restrict the module so that it only creates rows with dimensions such that it fits within a surface you provide?
The PV_SWHsurface output of "PV SWH System Size" component contains Grasshopper geometry of all PV rows. Are you familiar with baking in Grasshopper?
I attached below an example of how to perform a shaded PV analysis. I rotated the whole context by 40 degrees so that the issue with "PV SWH System Size" component could be overlooked. When you determine your minimalSpacingPeriod_ input, we can internalize its "PV SWH System Size" output, rotate back your context and use "40" as a value for north_ input for all components.
Let me know if something was not clear, or if I replied vaguely to some of your questions.I apology in advance if it may take me a bit longer to answer to your next question. This spring period has really toughen my free time.…
This blog post is a rough approximation of the lecture I gave at the AAG10 conference in Vienna on September 21st 2010. Naturally it will be quite a different experience as the medium is quite…
Added by David Rutten at 3:27pm on September 24, 2010
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)…