Coder Social home page Coder Social logo

clockworkfordynamo's Introduction

Maintained Current version Node count Open issues Closed issues Commits since last release Contributions welcome CodeQL Follow me on LinkedIn for updates

Clockwork logo

Clockwork is a collection of custom nodes for the Dynamo visual programming environment. It contains many Revit-related nodes, but also lots of nodes for various other purposes such as list management, mathematical operations, string operations, geometric operations (mainly bounding boxes, meshes, planes, points, surfaces, UVs and vectors) and paneling. Currently it consists of some 450+ nodes of which a large portion was originally published in a number of separate packages.

Clockwork for Dynamo 2.x is currently developed in Dynamo 2.6.0 but also tested in newer 2.x versions which means it's compatible with Revit 2021 and later (and probably still working in Revit 2017-2020 as well).

Installation

Installation is simple - just use Dynamo's built-in package manager and search for Clockwork. Make sure you have the correct version of Clockwork installed that corresponds to your installed version of Dynamo (most likely 2.x). As of Revit 2023 you will need to install the package "DynamoIronPython2.7" (also from the package manager). Dynamo's workspace reference view extension will prompt you to install version 2.1 of that package. Don't do that! Instead install the latest version of that package.

Versions

The different versions are available as separate packages on the package manager. (So far each new major Dynamo version has introduced changes that prevented downward - and sometimes even upward - compatibility of nodes, hence the separate packages...)

Package name Supported Last version Revit versions Change log Docs Repository Deprecated nodes Samples
Clockwork for Dynamo 2.x 2.6.0 2017-24 Changes Docs Repo Deprecation Samples
Clockwork for Dynamo 1.x 1.34.0 2015-19 Changes Docs Repo Deprecation Samples
Clockwork for Dynamo 0.9.x 0.90.8 2015-17 Changes Docs Repo Deprecation
Clockwork for Dynamo 0.8.2 0.82.8 2014-16 Changes Docs Repo Deprecation
Clockwork for Dynamo 0.7.x 0.75.47 2014-16 Changes Docs Repo Deprecation Samples
Clockwork for Dynamo 0.6.3 0.63.3 2013-14 Docs Repo Deprecation Samples

Note that Clockwork version numbering follows the Dynamo version the package is currently maintained for, e.g. Clockwork for Dynamo 2.x v2.0.XXX is maintained in Dynamo 2.0.0 while Clockwork for Dynamo 2.x v2.3.XXX would be maintained in Dynamo 2.0.3 and Clockwork for Dynamo 2.x v2.30.XXX would be maintained in Dynamo 2.3.0...

Renamed, recategorized and deprecated nodes

During migration from one Dynamo version to the next, I regularly recategorize, relabel and rename a lot of nodes. These changes are documented in an excel sheet that contains a list of all nodes within the package.

Material on this repository

This repository contains the following:

  • Directory maintenance contains scripts that I use to keep Clockwork in shape, e.g. for creating the node documentation on the wiki, extracting Python scripts from custom nodes etc.
  • Directory nodes is the actual repository of the custom nodes that I use for versioning nodes in between publishing package updates to Dynamo's package manager - which means you will sometimes find nodes in here that haven't made it onto the package manager yet.
  • Directory package_samples contains simple examples for most of the nodes in Clockwork. I use them for occasional testing, but they should also help explain how to use each node. All samples are available for the current versions - sample support for older versions is patchy at best.
  • Directory workflow_samples contains some old sample workflows that I have published online somewhere before. I have also included some of the examples that I used to use for teaching Dynamo as well as some material presented at conferences. Almost all of these are available for Dynamo 0.7.x (as well as 0.6.3). They will not be updated to a current version.

Sponsoring?

This is free software. I've created and maintained it on my spare time for a number of years now. I don't do Patreon or GitHub Sponsors and I'm not planning to. However, if you are using this software or have done so in the past and it has increased your productivity, please consider giving something back nonetheless. If you're smart enough to use Dynamo, you're most probably smart enough to know climate change is real, too. And I'd like to believe you're already doing something to battle it at this point.

Do more.

Bad Monkeys logo

clockworkfordynamo's People

Contributors

andydandy74 avatar denizmaral avatar dimven avatar johnpierson avatar ksobon avatar redinkinc avatar thomas84 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

clockworkfordynamo's Issues

Filter.ByInstParamValue

In the CN, I've edited my local dyf to use A equal B instead of ==, it allows me to use object comparison (like phases). not tested any further with strings though....

Unmigrated nodes

Check if these make sense at all in 0.7:

  • Combine List With Nested List
  • Move XYZs From Plane To Plane

Multi-category filters for filtered element collectors

Several of the nodes using a filtered element collector might gain better performance from using a multi-category filter. Need to check whether this affects any workflows that expect lists of elements grouped by category. If feasible, implement for these nodes:

  • All Families Of Category
  • All Family Types Of Category
  • All View-Dependent Family Instances Of Category

List.ChopByLengths not taking lengths list with just one item.

The List.ChopByLengths node doesn't seem to like it when I put in a number instead of a list of numbers (part 1). Also it doesn't flatten the list when the length of the input list is equal to the given number (part 2).
Now you might wonder why I use this node then. That's because sometimes the the lengths input is, and sometimes it isn't, just one single number. Of course it does work when I put in several numbers, I would just like it to work with a single number out of the box, too. :)
image

Rework Room.DoorsOrWindows

  • Reconsider dividing this into two separate nodes or use a boolean switch instead of a category input
  • For processing multiple rooms this currently has to be used in conjunction with a List.Map node - not so comfy

View.Plane node

The View.Plane node doesn't regenerate when I hit run after I've moved a section in the Revit document. Is this intentional?

0.8 migration - Icons

Add an icon resource file as soon as this functionality becomes available for custom nodes...

Element.ParameterExists in 0.8.1

This node seems not working in Dynamo 0.8.1, I will go back to 0.8.0 since it's use in my daily work, just let you know the issue.
Thanks for your great works!

Source Code

Andy, If possible did you think about posting the source code for all nodes as well? I am talking especially about nodes that have custom Python nodes. It's just easier to contribute when one can see the code clearly instead of in context of a *.dyf file formatting.

Vertical Intersects dependent on start / end point order

This affects both DividedSurface.VerticalIntersectsByEndpoints and DividedSurface.VerticalIntersectsByEndpointsAndFunction. In some cases, depending on the order of start and end point, some of the refplanes cannot be created.

Cut panels for hexagon paneling

Paneling.Hexagonal currently only returns hexagonal panels. Any cut panels at the surface edges are being ignored. These should be computed as well and be returned through separate ouput ports (left / right / top / bottom) and receive options for reversing and shifting.

0.8 migration - Test Lacing for Python Nodes

The new lacing ability for custom nodes may also be interesting for Python-based nodes, i.e. it may mean that it is no longer necessary to build loops into those nodes and wrap them with Turn Into List and ReturnListOrSingleValue nodes.

Run a performance test with a large number of elements to see if it is feasable to convert those nodes so they work on single item arguments. My hunch is that it's either not as simple as I think or that the performance would actually suffer (due to calling the same Python node over and over again). But test it we shall.

0.8 migration - Units

Check all nodes for inputs and outputs that use units.
Make a list of affected nodes.
Wait & hope that Dynamo's built-in conversion functionality will be exposed...

Node compatibility for linked files

Go through all the nodes that contain a doc.GetElement() call and create an alternative version that has an additional document input in order to be able to use with linked files. Fun! Only do that for those nodes where it makes sense!!!

UV.Average

Since there's now Point.Average and Vector.Average, UV.Average would be a logical addition...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.