├── .github └── ISSUE_TEMPLATE.md ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── ladybug ├── __init__.py ├── geometry.py ├── output.py └── sunpathplus.py ├── plugin ├── copy_files.py ├── dyf │ ├── Analysis Period.dyf │ ├── Calculate HOY.dyf │ ├── Color Range.dyf │ ├── Construct Location.dyf │ ├── Deconstruct Location.dyf │ ├── Generate Colors.dyf │ ├── Import EPW.dyf │ ├── Import Location.dyf │ ├── Legend Parameters.dyf │ └── Sunpath.dyf ├── sampleFiles │ ├── 00_importEpw.dyn │ ├── 01_sunpath.dyn │ └── 02_genTestPts.dyn └── src │ ├── analysisperiod_node.py │ ├── colrange_node.py │ ├── constrloc_node.py │ ├── decnstrloc_node.py │ ├── gencolors_node.py │ ├── hoy_node.py │ ├── importepw_node.py │ ├── importloc_node.py │ ├── legendpar_node.py │ └── sunpath_node.py ├── resources ├── createpackage │ └── genDynamoPackage.py ├── genskymatrix │ └── definition.JPG ├── importEPW │ ├── Definition.png │ └── thumbnail.png ├── legendParameters │ ├── 001.PNG │ ├── 002.PNG │ ├── 003.PNG │ ├── 004.PNG │ ├── 005.PNG │ └── definition.PNG ├── packageFileStructure.JPG ├── radiationAnalysis │ ├── 001.JPG │ └── definition.JPG ├── sunlighthoursAnalysis │ ├── 03_sunlighthours_MAR_21.JPG │ ├── 06_sunlighthours_JUNE_21.JPG │ ├── 12_sunlighthours_DEC_21.JPG │ ├── definition.JPG │ ├── sunlightHoursAnalysis.gif │ ├── sunlighthours_Dec_21_01.JPG │ ├── sunlighthours_Dec_21_02.JPG │ └── sunlighthours_colorful.JPG └── sunpath │ ├── annualSunpath.JPG │ ├── annualSunpathRotated.JPG │ ├── dailySunpath.JPG │ ├── definition.PNG │ ├── hourlySunPath_08.JPG │ ├── hourlySunPath_09_1.JPG │ ├── hourlySunPath_10.JPG │ ├── hourlySunPath_11.JPG │ ├── hourlySunPath_12.JPG │ ├── hourlySunPath_13.JPG │ ├── hourlySunPath_14.JPG │ ├── hourlySunPath_15.JPG │ ├── hourlySunPath_16.JPG │ └── sunpath.gif └── update_doc.bat /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Hello! Thank you for helping us by reporting bugs or requesting for improvements. Before posting your issue, please quickly review the notes below to ensure opening an issue is the right choice for your case. 2 | 3 | - If this issue is **not** a bug report or improvement request, please check the [Ladybug Tools forum](http://discourse.ladybug.tools), and start a topic there to discuss your issue. If you don't have an account on our forum, you can ask for one as noted in [this post](http://discourse.ladybug.tools/t/welcome-to-ladybug-tools-forum/8). 4 | 5 | - If this issue is related to the Ladybug + Honeybee legacy plugins for Grasshopper, please post it to the repositories for legacy versions: [Ladybug](https://github.com/mostaphaRoudsari/ladybug), [honeybee](https://github.com/mostaphaRoudsari/honeybee). If you're not sure whether you are using the legacy Ladybug + Honeybee, see [here](http://www.ladybug.tools/about.html#14). 6 | 7 | - If this issue is for any of the new Plus plugins, please ensure this is the correct repository for your issue. Issues that are specific to the plugin interface should be posted to the correct plugin repository. For example issues related to the Honeybee plugin for Dynamo should be posted to [honeybee-dynamo](https://github.com/ladybug-tools/honeybee-dynamo/) repository and not [honeybee](https://github.com/ladybug-tools/honeybee/). 8 | 9 | - Finally, if you haven't done it already, please do a quick search of our existing issues and ensure that the issue has not already been posted. 10 | 11 | If you passed all the checks above, feel free to post your issue and please respect these guidelines: 12 | - Be clear about the error and include related information about how to re-create the issue. 13 | - If possible, share an example file or example code for us to recreate the issue. 14 | 15 | Thank you again for opening an issue. This will benefit all our users! ALSO DO NOT FORGET TO REMOVE ALL THESE NOTES BEFORE POSTING YOUR ISSUE. 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.backup -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | Contributor Covenant Code of Conduct 2 | ========================================= 3 | 4 | This project follows Ladybug Tools contributor covenant code of conduct. See our [contributor covenant code of conduct](https://github.com/ladybug-tools/contributing/blob/master/CODE-OF-CONDUCT.md). 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Contributing 2 | ------------ 3 | We welcome contributions from anyone, even if you are new to open source we will be happy to help you to get started. Most of the Ladybug Tools developers started learning programming through developing for Ladybug Tools. 4 | 5 | ### Code contribution 6 | This project follows Ladybug Tools contributing guideline. See [contributing to Ladybug Tools projects](https://github.com/ladybug-tools/contributing/blob/master/README.md). 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ladybug-dynamo 2 | 3 | Ladybug-dynamo is the ladybug plugin for Dynamo to import and visualize weather data from and EnergyPlus Weather file ([EPW](https://www.energyplus.net/sites/default/files/docs/site_v8.3.0/InputOutputReference/07-WeatherData/index.html)). 4 | 5 | ![sunlighthours analysis](https://raw.githubusercontent.com/ladybug-analysis-tools/ladybug-dynamo/master/resources/sunlighthoursAnalysis/definition.JPG) 6 | 7 | Ladybug-dynamo is developed in IronPython and uses [Revit API](https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/Revit-API/files/GUID-F0A122E0-E556-4D0D-9D0F-7E72A9315A42-htm.html) and [Dynamo libraries](https://github.com/DynamoDS) to take inputs from Revit model or create geometrical outputs. For core functionalities it uses [ladybug core libraries](https://github.com/ladybug-tools/ladybug) which is developed in Python 2.7. 8 | 9 | ## Installation 10 | You must install [Dynamo with Revit or Dynamo Studio](http://dynamobim.org/download/) to use this plugin. The Revit specific nodes won't work in Dynamo Studio. For the plugin itself you can always download the latest stable version from [Dynamo's package manger](http://dynamopackages.com/#). Once you install it from Dynamo package manager it sould be ready to use. 11 | 12 | 13 | ## Example files and tutorials 14 | There are [several example files](http://hydrashare.github.io/hydra/?keywords=ladybugdynamo) on Hydra to get yourself started with ladybug for Dynamo. There is a YouTube video associated with some of the examples which can also be found at [this link](https://www.youtube.com/playlist?list=PLkjfDmSc5OryQ0FD9vUVNU6dQaIM4RPDD). 15 | 16 | ![sunpath](https://raw.githubusercontent.com/ladybug-analysis-tools/ladybug-dynamo/master/resources/sunpath/sunpath.gif) 17 | 18 | ## API Documentation 19 | Latest API documentation is available at [this page](http://ladybug-tools.github.io/ladybug-dynamo/doc/index.html). [Let us know](https://github.com/ladybug-tools/ladybug-dynamo/issues/) if you find any mistakes in the documentation. 20 | 21 | ## Road Map 22 | - [x] First release for proof of concept. 23 | - [x] Second release with enhanced performance. 24 | - [ ] Improve Revit integration (e.g. load data based on Revit location, etc.). 25 | - [ ] Add visualization components. This is dependant on Dynamo's features for visualization 26 | 27 | ## dependencies 28 | [ladybug](https://github.com/ladybug-tools/ladybug). ladybug-core is licensed under GPLV3. 29 | -------------------------------------------------------------------------------- /ladybug/__init__.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | # This is a variable to check if the library is a [+] library. 4 | setattr(sys.modules[__name__], 'isplus', True) 5 | -------------------------------------------------------------------------------- /ladybug/geometry.py: -------------------------------------------------------------------------------- 1 | try: 2 | import clr 3 | clr.AddReference('ProtoGeometry') 4 | import Autodesk.DesignScript.Geometry as dg 5 | except ImportError: 6 | pass 7 | 8 | 9 | def point(x, y, z): 10 | """Point 3d by x, y ,z.""" 11 | return dg.Point.ByCoordinates(x, y, z) 12 | 13 | 14 | def origin(): 15 | """Origin point.""" 16 | return dg.Point.Origin() 17 | 18 | 19 | def arc(start_point, mid_point, end_point): 20 | """Arc by 3 points.""" 21 | spt = dg.Point.ByCoordinates(*start_point) 22 | mpt = dg.Point.ByCoordinates(*mid_point) 23 | ept = dg.Point.ByCoordinates(*end_point) 24 | arc = dg.Arc.ByThreePoints(spt, mpt, ept) 25 | spt.Dispose() 26 | mpt.Dispose() 27 | ept.Dispose() 28 | return arc 29 | 30 | 31 | def plane(pt, normal): 32 | """Plane by center (x, y, z) and normal (x, y, z).""" 33 | dg.Plane.ByOriginNormal( 34 | dg.Point.ByCoordinates(*pt), dg.Vector.ByCoordinates(*normal)) 35 | 36 | 37 | def line(start_point, end_point): 38 | """Line by start and end point (x, y, z).""" 39 | spt = dg.Point.ByCoordinates(*start_point) 40 | ept = dg.Point.ByCoordinates(*end_point) 41 | ln = dg.Line.ByStartPointEndPoint(spt, ept) 42 | spt.Dispose() 43 | ept.Dispose() 44 | return ln 45 | 46 | 47 | def circle(center_point, radius): 48 | """Circle from center_point and radius.""" 49 | cenpt = dg.Point.ByCoordinates(*center_point) 50 | cir = dg.Circle.ByCenterPointRadius(cenpt, radius) 51 | cenpt.Dispose() 52 | return cir 53 | 54 | 55 | def curve(points): 56 | """Curve from collection of points.""" 57 | pts = tuple(dg.Point.ByCoordinates(*pt) for pt in points) 58 | crv = dg.NurbsCurve.ByPoints(pts, True) 59 | for pt in pts: 60 | pt.Dispose() 61 | return crv 62 | 63 | 64 | def sphere(center_point, radius): 65 | """Sphere by center point and radius.""" 66 | cenpt = dg.Point.ByCoordinates(*center_point) 67 | sp = dg.Sphere.ByCenterPointRadius(cenpt, radius) 68 | cenpt.Dispose() 69 | return sp 70 | 71 | 72 | def vector(x, y, z): 73 | """Vector by x, y, z.""" 74 | return dg.Vector.ByCoordinates(x, y, z) 75 | 76 | 77 | def trim(geometry, plane, pt): 78 | """Trim curve by plane.""" 79 | return dg.Geometry.Trim(geometry, plane, pt) 80 | 81 | 82 | def trim_curve_by_plane(geometry, plane, pt): 83 | """Trim curve by plane. 84 | 85 | All the inputs should be Dynamo geometry. 86 | """ 87 | 88 | curves = dg.Geometry.Trim(geometry, plane, pt) 89 | # Dynamo trim doesn't work as expected 90 | # or I don't know how it is supposed to work so I check the curves 91 | selected_curves = [] 92 | for curve in curves: 93 | # find mid point 94 | mid_par = (curve.EndParameter() + curve.StartParameter()) / 2 95 | mid_pt = curve.PointAtParameter(mid_par) 96 | if mid_pt.Z >= 0: 97 | selected_curves.append(curve) 98 | else: 99 | curve.Dispose() 100 | 101 | if len(selected_curves) == 1: 102 | analemma_curve = selected_curves[0] 103 | else: 104 | try: 105 | # join curves 106 | analemma_curve = selected_curves[0].Join(selected_curves[1:]) 107 | except Exception: 108 | analemma_curve = selected_curves 109 | 110 | return analemma_curve 111 | -------------------------------------------------------------------------------- /ladybug/output.py: -------------------------------------------------------------------------------- 1 | """Collection of methods for dealing with outputs in Dynamo.""" 2 | try: 3 | # import Dynamo libraries 4 | import clr 5 | clr.AddReference("DSCoreNodes") 6 | from DSCore import Color as DSColor 7 | except ImportError: 8 | pass 9 | 10 | 11 | def wrap(input): 12 | """Replicate method for Grashopper library. 13 | 14 | This is a workaround to use th exact same code in bot libraries. 15 | """ 16 | return input 17 | 18 | 19 | def list_to_tree(input): 20 | """Replicate method for Grashopper library. 21 | 22 | This is a workaround to use th exact same code in bot libraries. 23 | """ 24 | return input 25 | 26 | 27 | def color_to_color(colors): 28 | """Convert a ladybug color into Dynamo color.""" 29 | if not hasattr(colors, '__iter__'): 30 | colors = (colors,) 31 | try: 32 | return tuple(DSColor.ByARGB(255, col.r, col.g, col.b) for col in colors) 33 | except AttributeError as e: 34 | raise AttributeError('Inputs must be of type of Color:\n{}'.format(e)) 35 | -------------------------------------------------------------------------------- /ladybug/sunpathplus.py: -------------------------------------------------------------------------------- 1 | """Methods for drawing sunpath geometry.""" 2 | try: 3 | import clr 4 | clr.AddReference('ProtoGeometry') 5 | import Autodesk.DesignScript.Geometry as adg 6 | except ImportError: 7 | pass 8 | 9 | 10 | def analemma_curves(suns, origin, radius): 11 | """Create analemma curves. 12 | 13 | Args: 14 | suns: A list of lists of sun positions. 15 | origin: Sunpath origin. 16 | radius: Sunpath radius. 17 | Returns: 18 | A generator of analemma curves. 19 | """ 20 | origin = adg.Point.ByCoordinates(*origin) 21 | for hour in suns: 22 | try: 23 | pts = tuple( 24 | adg.Point.Add( 25 | origin, 26 | adg.Vector.Scale( 27 | adg.Vector.ByCoordinates( 28 | sun.sun_vector.x, sun.sun_vector.y, sun.sun_vector.z), 29 | -radius)) 30 | for sun in hour) 31 | except AttributeError: 32 | # no sun poistion / all night 33 | continue 34 | else: 35 | # create the analemma curve and send it back 36 | yield adg.NurbsCurve.ByPoints(pts) 37 | 38 | 39 | def base_curves(origin, radius, north_angle): 40 | origin = adg.Point.ByCoordinates(*origin) 41 | inner_circle = adg.Circle.ByCenterPointRadius(origin, radius) 42 | middle_circle = adg.Circle.ByCenterPointRadius(origin, 1.02 * radius) 43 | outter_circle = adg.Circle.ByCenterPointRadius(origin, 1.08 * radius) 44 | 45 | base_curves = [] 46 | # create North Arrow 47 | start_vector = adg.Vector.Scale(adg.Vector.YAxis(), radius) 48 | start_pt = adg.Point.Add(origin, start_vector) 49 | end_vector = adg.Vector.Scale(adg.Vector.YAxis(), 1.12 * radius) 50 | end_pt = adg.Point.Add(origin, end_vector) 51 | north_arrow = adg.Line.ByStartPointEndPoint(start_pt, end_pt) 52 | # draw it for the 4 direction 53 | for angle in range(0, 360, 90): 54 | base_curves.append(north_arrow.Rotate(adg.Plane.XY(), 55 | angle + north_angle)) 56 | 57 | # create mid curves 58 | end_vector = adg.Vector.Scale(adg.Vector.YAxis(), 1.08 * radius) 59 | end_pt = adg.Point.Add(origin, end_vector) 60 | short_arrow = adg.Line.ByStartPointEndPoint(start_pt, end_pt) 61 | # draw it for the 4 direction 62 | for angle in range(0, 360, 30): 63 | if angle % 90 != 0: 64 | base_curves.append( 65 | short_arrow.Rotate(adg.Plane.XY(), angle + north_angle) 66 | ) 67 | return [inner_circle, middle_circle, outter_circle] + base_curves 68 | 69 | 70 | def daily_curves(suns, origin, radius): 71 | """Create daily sunpath curves.""" 72 | origin = adg.Point.ByCoordinates(*origin) 73 | for day, is_arc in suns: 74 | pts = tuple( 75 | adg.Point.Add( 76 | origin, 77 | adg.Vector.Scale( 78 | adg.Vector.ByCoordinates( 79 | sun.sun_vector.x, sun.sun_vector.y, sun.sun_vector.z), 80 | -radius)) 81 | for sun in day) 82 | if is_arc: 83 | yield adg.Arc.ByThreePoints(*pts) 84 | else: 85 | if pts[2].Z > 0: 86 | yield adg.Circle.ByThreePoints(*pts) 87 | 88 | 89 | def sun_geometry(suns, origin, radius): 90 | """Get sun geometries as points.""" 91 | origin = adg.Point.ByCoordinates(*origin) 92 | return tuple( 93 | adg.Point.Add( 94 | origin, 95 | adg.Vector.Scale( 96 | adg.Vector.ByCoordinates( 97 | sun.sun_vector.x, sun.sun_vector.y, sun.sun_vector.z), 98 | -radius)) 99 | for sun in suns) 100 | -------------------------------------------------------------------------------- /plugin/copy_files.py: -------------------------------------------------------------------------------- 1 | import os 2 | import shutil 3 | 4 | 5 | def copy_files(src, dst, dyf=True, nodesrc=True, hbsrc=True): 6 | os.chdir(src) 7 | 8 | # copy definitions 9 | if dyf: 10 | dyfs = (f for f in os.listdir('plugin\\dyf') if f.endswith('.dyf')) 11 | for f in dyfs: 12 | shutil.copy(os.path.join(src, 'plugin\\dyf\\%s' % f), dst + '\\dyf') 13 | 14 | # copy source files 15 | if nodesrc: 16 | srcs = (f for f in os.listdir('plugin\\src') if f.endswith('.py')) 17 | 18 | for s in srcs: 19 | shutil.copy(os.path.join(src, 20 | 'plugin\\src\\%s' % s), dst + '\\extra\\nodesrc') 21 | 22 | # ladybug source code 23 | if hbsrc: 24 | files = (f for f in os.listdir('ladybug') if f.endswith('.py')) 25 | 26 | for f in files: 27 | shutil.copy( 28 | os.path.join(src, 'ladybug\\%s' % f), 29 | dst + '\\extra\\ladybug' 30 | ) 31 | 32 | 33 | if __name__ == '__main__': 34 | src = r'C:\Users\Mostapha\Documents\code\ladybug-tools\ladybug-dynamo' 35 | dst = r'C:\Users\Mostapha\AppData\Roaming\Dynamo\Dynamo Revit\1.3\packages\Ladybug' 36 | 37 | copy_files(src, dst) 38 | -------------------------------------------------------------------------------- /plugin/dyf/Analysis Period.dyf: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | -------------------------------------------------------------------------------- /plugin/dyf/Calculate HOY.dyf: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /plugin/dyf/Color Range.dyf: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | -------------------------------------------------------------------------------- /plugin/dyf/Construct Location.dyf: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | -------------------------------------------------------------------------------- /plugin/dyf/Deconstruct Location.dyf: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | -------------------------------------------------------------------------------- /plugin/dyf/Generate Colors.dyf: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | -------------------------------------------------------------------------------- /plugin/dyf/Import EPW.dyf: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | -------------------------------------------------------------------------------- /plugin/dyf/Import Location.dyf: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | -------------------------------------------------------------------------------- /plugin/dyf/Legend Parameters.dyf: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | -------------------------------------------------------------------------------- /plugin/dyf/Sunpath.dyf: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | -------------------------------------------------------------------------------- /plugin/sampleFiles/00_importEpw.dyn: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ..\..\..\..\..\..\..\..\EnergyPlusV8-6-0\WeatherData\USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw 8 | C:\EnergyPlusV8-6-0\WeatherData\USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | -------------------------------------------------------------------------------- /plugin/sampleFiles/01_sunpath.dyn: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ..\..\..\..\..\..\..\..\EnergyPlusV8-6-0\WeatherData\USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw 24 | C:\EnergyPlusV8-6-0\WeatherData\USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw 25 | 26 | 27 | 28 | True 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 8 59 | 60 | 61 | 62 | 8 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /plugin/sampleFiles/02_genTestPts.dyn: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | -------------------------------------------------------------------------------- /plugin/src/analysisperiod_node.py: -------------------------------------------------------------------------------- 1 | # assign inputs 2 | _startMonth_, _startDay_, _startHour_, _endMonth_, _endDay_, _endHour_, _timestep_ = IN 3 | analysisPeriod = hoys = dates = None 4 | 5 | try: 6 | import ladybug.analysisperiod as ap 7 | import ladybug.output as output 8 | except ImportError as e: 9 | raise ImportError('\nFailed to import ladybug:\n\t{}'.format(e)) 10 | 11 | anp = ap.AnalysisPeriod( 12 | _startMonth_, _startDay_, _startHour_, 13 | _endMonth_, _endDay_, _endHour_, _timestep_) 14 | 15 | if anp: 16 | analysisPeriod = anp 17 | dates = output.wrap(anp.datetimes) 18 | hoys = output.wrap(anp.hoys) 19 | 20 | # assign outputs to OUT 21 | OUT = analysisPeriod, hoys, dates -------------------------------------------------------------------------------- /plugin/src/colrange_node.py: -------------------------------------------------------------------------------- 1 | # assign inputs 2 | _index = IN[0] 3 | colors = None 4 | 5 | try: 6 | import ladybug.color as col 7 | import ladybug.output as output 8 | except ImportError as e: 9 | raise ImportError('\nFailed to import ladybug:\n\t{}'.format(e)) 10 | 11 | _index = _index or 0 12 | cs = col.Colorset() 13 | colors = output.color_to_color(cs[_index]) 14 | 15 | 16 | # assign outputs to OUT 17 | OUT = (colors,) -------------------------------------------------------------------------------- /plugin/src/constrloc_node.py: -------------------------------------------------------------------------------- 1 | # assign inputs 2 | _name_, _latitude_, _longitude_, _timeZone_, _elevation_ = IN 3 | location = None 4 | 5 | try: 6 | import ladybug.location as loc 7 | except ImportError as e: 8 | raise ImportError('\nFailed to import ladybug:\n\t{}'.format(e)) 9 | 10 | location = loc.Location(_name_, '-', _latitude_, _longitude_, _timeZone_, _elevation_) 11 | 12 | # assign outputs to OUT 13 | OUT = (location,) -------------------------------------------------------------------------------- /plugin/src/decnstrloc_node.py: -------------------------------------------------------------------------------- 1 | # assign inputs 2 | _location = IN[0] 3 | name = latitude = longitude = timeZone = elevation = None 4 | 5 | try: 6 | import ladybug.location as loc 7 | except ImportError as e: 8 | raise ImportError('\nFailed to import ladybug:\n\t{}'.format(e)) 9 | 10 | if _location: 11 | # in case someone uses the input from an older version of ladybug 12 | location = loc.Location.from_location(_location) 13 | name = location.city 14 | latitude = location.latitude 15 | longitude = location.longitude 16 | timeZone = location.time_zone 17 | elevation = location.elevation 18 | 19 | # assign outputs to OUT 20 | OUT = name, latitude, longitude, timeZone, elevation -------------------------------------------------------------------------------- /plugin/src/gencolors_node.py: -------------------------------------------------------------------------------- 1 | # assign inputs 2 | _values, legendPar_ = IN 3 | colors = None 4 | 5 | try: 6 | import ladybug.legendparameters as lpar 7 | import ladybug.output as output 8 | except ImportError as e: 9 | raise ImportError('\nFailed to import ladybug:\n\t{}'.format(e)) 10 | 11 | if _values: 12 | legendPar = legendPar_ or lpar.LegendParameters() 13 | colors = output.color_to_color(legendPar.calculate_colors(_values)) 14 | 15 | 16 | # assign outputs to OUT 17 | OUT = (colors,) -------------------------------------------------------------------------------- /plugin/src/hoy_node.py: -------------------------------------------------------------------------------- 1 | # assign inputs 2 | _month_, _day_, _hour_, _minute_ = IN 3 | hoy = doy = date = None 4 | 5 | try: 6 | import ladybug.dt as dt 7 | except ImportError as e: 8 | raise ImportError('\nFailed to import ladybug:\n\t{}'.format(e)) 9 | 10 | datetime = dt.DateTime(_month_, _day_, _hour_, _minute_) 11 | hoy = datetime.hoy 12 | doy = datetime.doy 13 | date = datetime 14 | 15 | 16 | # assign outputs to OUT 17 | OUT = hoy, doy, date -------------------------------------------------------------------------------- /plugin/src/importepw_node.py: -------------------------------------------------------------------------------- 1 | # assign inputs 2 | _epwFile = IN[0] 3 | location = dryBulbTemperature = dewPointTemperature = relativeHumidity = windSpeed = windDirection = directNormalRadiation = diffuseHorizontalRadiation = globalHorizontalRadiation = directNormalIlluminance = diffuseHorizontalIlluminance = globalHorizontalIlluminance = totalSkyCover = liquidPrecipitationDepth = barometricPressure = modelYear = None 4 | 5 | try: 6 | import ladybug.epw as epw 7 | import ladybug.output as output 8 | except ImportError: 9 | raise ImportError('\nFailed to import ladybug:\n\t{}'.format(e)) 10 | 11 | if _epwFile: 12 | epw_data = epw.EPW(_epwFile) 13 | location = epw_data.location 14 | dryBulbTemperature = output.wrap(epw_data.dry_bulb_temperature.values) 15 | dewPointTemperature = output.wrap(epw_data.dew_point_temperature.values) 16 | relativeHumidity = output.wrap(epw_data.relative_humidity.values) 17 | windDirection = output.wrap(epw_data.wind_direction.values) 18 | windSpeed = output.wrap(epw_data.wind_speed.values) 19 | directNormalRadiation = output.wrap(epw_data.direct_normal_radiation.values) 20 | diffuseHorizontalRadiation = output.wrap(epw_data.diffuse_horizontal_radiation.values) 21 | globalHorizontalRadiation = output.wrap(epw_data.global_horizontal_radiation.values) 22 | directNormalIlluminance = output.wrap(epw_data.direct_normal_illuminance.values) 23 | diffuseHorizontalIlluminance = output.wrap(epw_data.diffuse_horizontal_illuminance.values) 24 | globalHorizontalIlluminance = output.wrap(epw_data.global_horizontal_illuminance.values) 25 | totalSkyCover = output.wrap(epw_data.total_sky_cover.values) 26 | liquidPrecipitationDepth = output.wrap(epw_data.liquid_precipitation_depth.values) 27 | barometricPressure = output.wrap(epw_data.atmospheric_station_pressure.values) 28 | modelYear = output.wrap(epw_data.years.values) 29 | 30 | # assign outputs to OUT 31 | OUT = location, dryBulbTemperature, dewPointTemperature, relativeHumidity, windSpeed, windDirection, directNormalRadiation, diffuseHorizontalRadiation, globalHorizontalRadiation, directNormalIlluminance, diffuseHorizontalIlluminance, globalHorizontalIlluminance, totalSkyCover, liquidPrecipitationDepth, barometricPressure, modelYear -------------------------------------------------------------------------------- /plugin/src/importloc_node.py: -------------------------------------------------------------------------------- 1 | # assign inputs 2 | _epwFile = IN[0] 3 | location = None 4 | 5 | try: 6 | import ladybug.epw as epw 7 | except ImportError as e: 8 | raise ImportError('\nFailed to import ladybug:\n\t{}'.format(e)) 9 | 10 | if _epwFile: 11 | ep = epw.EPW(_epwFile) 12 | location = ep.location 13 | 14 | # assign outputs to OUT 15 | OUT = (location,) -------------------------------------------------------------------------------- /plugin/src/legendpar_node.py: -------------------------------------------------------------------------------- 1 | # assign inputs 2 | _domain_, _cType_, _colors_ = IN 3 | legendPar = None 4 | 5 | try: 6 | import ladybug.legendparameters as lpar 7 | import ladybug.color as col 8 | except ImportError as e: 9 | raise ImportError('\nFailed to import ladybug:\n\t{}'.format(e)) 10 | 11 | legendPar = lpar.LegendParameters( 12 | legend_range=_domain_, number_of_segments=11, 13 | colors=_colors_, chart_type=_cType_ 14 | ) 15 | 16 | # assign outputs to OUT 17 | OUT = (legendPar,) -------------------------------------------------------------------------------- /plugin/src/sunpath_node.py: -------------------------------------------------------------------------------- 1 | # assign inputs 2 | north_, _location, _hoys_, _centerPt_, _scale_, _sunScale_, _annual_ = IN 3 | vectors = altitudes = azimuths = sunPts = analemma = compass = daily = centerPt = hoys = datetimes = None 4 | 5 | try: 6 | from ladybug.sunpath import Sunpath 7 | import ladybug.geometry as geo 8 | except ImportError as e: 9 | raise ImportError('\nFailed to import ladybug:\n\t{}'.format(e)) 10 | 11 | if _location: 12 | 13 | daylightSavingPeriod = None # temporary until we fully implement it 14 | _hoys_ = _hoys_ or () 15 | 16 | # initiate sunpath based on location 17 | sp = Sunpath.from_location(_location, north_, daylightSavingPeriod) 18 | 19 | # draw sunpath geometry 20 | sunpath_geo = \ 21 | sp.draw_sunpath(_hoys_, _centerPt_, _scale_, _sunScale_, _annual_) 22 | 23 | analemma = sunpath_geo.analemma_curves 24 | compass = sunpath_geo.compass_curves 25 | daily = sunpath_geo.daily_curves 26 | 27 | sunPts = sunpath_geo.sun_geos 28 | 29 | suns = sunpath_geo.suns 30 | vectors = (geo.vector(*sun.sun_vector) for sun in suns) 31 | altitudes = (sun.altitude for sun in suns) 32 | azimuths = (sun.azimuth for sun in suns) 33 | centerPt = _centerPt_ or geo.point(0, 0, 0) 34 | hoys = (sun.hoy for sun in suns) 35 | datetimes = (sun.datetime for sun in suns) 36 | 37 | # assign outputs to OUT 38 | OUT = vectors, altitudes, azimuths, sunPts, analemma, compass, daily, centerPt, hoys, datetimes -------------------------------------------------------------------------------- /resources/createpackage/genDynamoPackage.py: -------------------------------------------------------------------------------- 1 | """Until Dynamo team find a better solution this file creates a pkg.json file for Ladybug.""" 2 | import json 3 | import os 4 | 5 | def createPkg(definitionsPath): 6 | ladybugData = {"license":"GPL.V3", 7 | "file_hash":None, 8 | "name":"Ladybug", 9 | "version":"0.0.1", 10 | "description":"Ladybug is an environmental analysis plugin.", 11 | "group":"Ladybug Analysis Tools", 12 | "keywords":["ladybug","environmental","analysis","sunpath", "radition", "solar"], 13 | "dependencies":[], 14 | "contents": "", 15 | "engine_version":"0.9.1.3872", 16 | "engine":"dynamo", 17 | "engine_metadata":"", 18 | "site_url":"https://www.facebook.com/LadybugAnalysisTools", 19 | "repository_url":"https://github.com/ladybug-analysis-tools/ladybug-dynamo", 20 | "contains_binaries":False, 21 | "node_libraries":[]} 22 | 23 | contents = [] 24 | #each definition should go as 25 | # " name - description" separated by ," 26 | files = os.listdir(definitionsPath) 27 | for f in files: 28 | _fullpath = os.path.join(definitionsPath, f) 29 | if not os.path.isfile(_fullpath): continue 30 | with open(_fullpath, "rb") as dyf: 31 | l = dyf.readline() 32 | name = l.split('Name=')[-1].split("Description")[0].strip()[1:-1] 33 | description = l.split('Description=')[-1].split("ID")[0].strip()[1:-1] 34 | contents.append(" " + name + " - " + description) 35 | 36 | ladybugData["contents"] = ",".join(contents) 37 | 38 | with open(os.path.join(definitionsPath + "\\pkg.json"), "wb") as pkg: 39 | json.dump(ladybugData, pkg) 40 | 41 | path = r"C:\Users\Administrator\Desktop\Dynamo Backup\0.9\definitions" 42 | createPkg(path) 43 | -------------------------------------------------------------------------------- /resources/genskymatrix/definition.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/genskymatrix/definition.JPG -------------------------------------------------------------------------------- /resources/importEPW/Definition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/importEPW/Definition.png -------------------------------------------------------------------------------- /resources/importEPW/thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/importEPW/thumbnail.png -------------------------------------------------------------------------------- /resources/legendParameters/001.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/legendParameters/001.PNG -------------------------------------------------------------------------------- /resources/legendParameters/002.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/legendParameters/002.PNG -------------------------------------------------------------------------------- /resources/legendParameters/003.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/legendParameters/003.PNG -------------------------------------------------------------------------------- /resources/legendParameters/004.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/legendParameters/004.PNG -------------------------------------------------------------------------------- /resources/legendParameters/005.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/legendParameters/005.PNG -------------------------------------------------------------------------------- /resources/legendParameters/definition.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/legendParameters/definition.PNG -------------------------------------------------------------------------------- /resources/packageFileStructure.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/packageFileStructure.JPG -------------------------------------------------------------------------------- /resources/radiationAnalysis/001.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/radiationAnalysis/001.JPG -------------------------------------------------------------------------------- /resources/radiationAnalysis/definition.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/radiationAnalysis/definition.JPG -------------------------------------------------------------------------------- /resources/sunlighthoursAnalysis/03_sunlighthours_MAR_21.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunlighthoursAnalysis/03_sunlighthours_MAR_21.JPG -------------------------------------------------------------------------------- /resources/sunlighthoursAnalysis/06_sunlighthours_JUNE_21.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunlighthoursAnalysis/06_sunlighthours_JUNE_21.JPG -------------------------------------------------------------------------------- /resources/sunlighthoursAnalysis/12_sunlighthours_DEC_21.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunlighthoursAnalysis/12_sunlighthours_DEC_21.JPG -------------------------------------------------------------------------------- /resources/sunlighthoursAnalysis/definition.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunlighthoursAnalysis/definition.JPG -------------------------------------------------------------------------------- /resources/sunlighthoursAnalysis/sunlightHoursAnalysis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunlighthoursAnalysis/sunlightHoursAnalysis.gif -------------------------------------------------------------------------------- /resources/sunlighthoursAnalysis/sunlighthours_Dec_21_01.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunlighthoursAnalysis/sunlighthours_Dec_21_01.JPG -------------------------------------------------------------------------------- /resources/sunlighthoursAnalysis/sunlighthours_Dec_21_02.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunlighthoursAnalysis/sunlighthours_Dec_21_02.JPG -------------------------------------------------------------------------------- /resources/sunlighthoursAnalysis/sunlighthours_colorful.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunlighthoursAnalysis/sunlighthours_colorful.JPG -------------------------------------------------------------------------------- /resources/sunpath/annualSunpath.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/annualSunpath.JPG -------------------------------------------------------------------------------- /resources/sunpath/annualSunpathRotated.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/annualSunpathRotated.JPG -------------------------------------------------------------------------------- /resources/sunpath/dailySunpath.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/dailySunpath.JPG -------------------------------------------------------------------------------- /resources/sunpath/definition.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/definition.PNG -------------------------------------------------------------------------------- /resources/sunpath/hourlySunPath_08.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/hourlySunPath_08.JPG -------------------------------------------------------------------------------- /resources/sunpath/hourlySunPath_09_1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/hourlySunPath_09_1.JPG -------------------------------------------------------------------------------- /resources/sunpath/hourlySunPath_10.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/hourlySunPath_10.JPG -------------------------------------------------------------------------------- /resources/sunpath/hourlySunPath_11.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/hourlySunPath_11.JPG -------------------------------------------------------------------------------- /resources/sunpath/hourlySunPath_12.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/hourlySunPath_12.JPG -------------------------------------------------------------------------------- /resources/sunpath/hourlySunPath_13.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/hourlySunPath_13.JPG -------------------------------------------------------------------------------- /resources/sunpath/hourlySunPath_14.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/hourlySunPath_14.JPG -------------------------------------------------------------------------------- /resources/sunpath/hourlySunPath_15.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/hourlySunPath_15.JPG -------------------------------------------------------------------------------- /resources/sunpath/hourlySunPath_16.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/hourlySunPath_16.JPG -------------------------------------------------------------------------------- /resources/sunpath/sunpath.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladybug-tools/ladybug-dynamo/dd9d264e2cae8753ce6aef0b253ad2f9d07f74bf/resources/sunpath/sunpath.gif -------------------------------------------------------------------------------- /update_doc.bat: -------------------------------------------------------------------------------- 1 | c:\Python27\python.exe C:\Python27\Scripts\pdoc --all-submodules --html --html-dir ./doc --overwrite ladybug 2 | pause --------------------------------------------------------------------------------