Code Monkey home page Code Monkey logo

dynamo's Introduction

Dynamo

Build DynamoAll.sln net8.0 Build DynamoCore.sln core windows Build DynamoCore.sln linux

DynamoCoreRuntime Nuget

Dynamo Logo

Dynamo is a visual programming tool that aims to be accessible to both non-programmers and programmers alike. It gives users the ability to visually script behavior, define custom pieces of logic, and script using various textual programming languages.

Get Dynamo

Looking to learn or download Dynamo? Check out dynamobim.org!

Develop

Create a Node Library for Dynamo

If you're interested in developing a Node library for Dynamo, the easiest place to start is by browsing the DynamoSamples. These samples use the Dynamo NuGet packages which can be installed using the NuGet package manager in Visual Studio.

Documentation of the Dynamo API via Fuget.org with a searchable index of public API calls for core functionality in the dynamo nuget packages. WIP.

The API Changes document explains changes made to the Dynamo API with every version.

You can learn more about developing libraries for Dynamo on the Dynamo wiki or the Developer page.

Build Dynamo from Source

You will need the following to build the latest Dynamo on Windows:

If you are working on legacy branches, you may need to install legacy .NET Framework versions through Visual Studio Tools > Get Tools and Features... or downloading from the archive here.

The Dynamo user interface is Windows-only, but the Dynamo engine can be built for other platforms. Directions for building Dynamo on Linux or OS X can be found here. Find more about how to build Dynamo at our wiki and Dynamo Developer Resources.

Contribute

Dynamo is an open source project and would be nothing without its community.

Releases

See the Release Notes.

Instrumentation

Dynamo now leverages the same instrumentation component as other Autodesk products which share the opt-in option. The data will be used to enhance the usability of the product.

License

Dynamo is licensed under the Apache License. Dynamo also uses a number of third party libraries, some with different licenses. You can find more information here.

dynamo's People

Contributors

alfarok avatar aparajit-pratap avatar benglin avatar chuanyuee avatar dynamoengops avatar ellensi avatar ikeough avatar junmendoza avatar ke-yu avatar kronz avatar levl avatar lukechurch avatar mjkkirschner avatar mnhng avatar monikaprabhu avatar pbidenko avatar pboyer avatar qilongtang avatar ramramps avatar reddyashish avatar riteshchandawar avatar robertglobant20 avatar saintentropy avatar sharadkjaiswal avatar steell avatar tatlin avatar theanh0512 avatar vmoyseenko avatar zeusongit avatar zhengzi 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  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

dynamo's Issues

Divide Path node

Create a divided path from a curve element or set of curve elements

Enable window selection for nodes, along with copy / paste functionality

Right now we have to select nodes one by one to move them. It would be beneficial to be able to select multiple nodes at once to reorganize them as the design process develops.

We should also be able to select nodes and copy / paste them to a new location. You don't always know that you want to make an user node when you start, and right now you have to start all over if you placed nodes in the home canvas.

bitmap node

add a node that reads from an image and returns a list of RGBs/greyscale values, combine with watch file node to setup a loop where user can paint program and see results update in dynamo. greyscale values mapped into an instance param on curtain panel

Proper Build Numbers

Add build script to update the readme change list with all changes since prior commit.

Combine node should save state.

Currently the combine node allows for multiple input ports labeled as "List 1" "List 2" etc. Or, you can have one input port called "Lists" that takes a bunch of lists as inputs. When you reopen a workflow where you've made the combine node take "Lists" it still has "List 1" and "List 2" and the wokflow fails to evaluate because the second of the two ports has no input. The behavior to save the state of a node with a mutable port collection should extend to other nodes that exhibit similar behavior, i.e. family instance parameter mapper.

Allow us to pan freely

Right now the pan functionality is locked to the starting axis on the upper left corner of the canvas. Once you start laying out your program we often need to rearrange the nodes and it is awkward to have to keep moving nodes to the right.

plugins nodes

Hi there,

got a suggestion for AddElement_Click(object sender, RoutedEventArgs e) in the dynBench.xaml.cs.

currently you won't make it past the builtinTypes[mi.Header.ToString()] for types that are in the userTypes collection.

Is the User Node supposed to work? Even as a node that doesn't do anything? Here it doesn't manage to initialize a new node.

Kind regards,
Gregor

    private void AddElement_Click(object sender, RoutedEventArgs e)
    {
        System.Windows.Controls.MenuItem mi = e.Source as System.Windows.Controls.MenuItem;

        TypeLoadData tld = null;
        if (builtinTypes.ContainsKey(mi.Header.ToString()))
        {
            tld = builtinTypes[mi.Header.ToString()] as TypeLoadData;
            ...
        }
        else if (userTypes.ContainsKey(mi.Header.ToString()))
        {
            tld = userTypes[mi.Header.ToString()] as TypeLoadData;
            if (tld != null)
            {
                dynElement newEl = AddDynElement(tld.t, tld.assembly, mi.Header.ToString(), Guid.NewGuid(), 0.0, 0.0);
                ...
            }
        }
    }

raspberry pi node

create new raspberry pi node for dynamo. assigning to ian because he has one

Debug Mode not working

Nodes all error with thread ownership exception. Evaluation sometimes doesn't succeed.

level node

I have a level node already in, need a level by selection node too.

Dynamic running sometimes doesn't update when UI inputs change

Happens often w/ sliders, less often with text boxes.

I think what's happening is a race condition between the UI thread and the evaluation thread. Evaluate thread fetches UI value, UI thread then updates the value, and then evaluate thread marks it as clean after using the old value.

Solution: wrap evaluate thread in UI dispatcher such that UI is fetched and marked clean in the UI thread. This way, the UI updates before the evaluation (and the latest value is fetched) or the old value is fetched and the node is marked clean before the change happens and it becomes dirty again (the queue will then rerun it to get the changes).

Allow nodes to be renamed

Every node is named according to its type, but it would be nice to rename them to allow us to clarify the function of a particular part of the visual program. The text notes would help with this, but it would be nicer to have the note stick with a node.

Dynamic file node

Represents the contents of a file, triggers a dynamic run when the file has been changed. (Uses a filewatcher under the hood)

Correct RevitAPI.dll references?

Where should we be referencing the RevitAPI.dll and RevitUIAPI.dll files from? The Vasari SDK files seem to be based on 2012 and have a bunch of errors when referenced.

Thanks,
-Danny

Tower Example

Example to Introduce:

Form creation
Level creation
Panelization
Watch of panel values
Analysis Visualization coloring of elements by value
Structure - Load Takedown (project storm?)

Nodes to have properties and configuation options via right-click

This would allow us to configure the behavior of certain nodes. For example: right now the slider node allows you to set a minimum and maximum value, but you cannot set the actual value exactly. With a right click option one could input this information

Also one could right click the node connectors to set them to values. Right now you have to pull number or other nodes to set inputs to certain nodes. One should be able to set these inputs without necessarily having to place a node.

user created node for arraying levels

take two doubles as inputs, start and end,
take another number in - x (like a floor to floor height)

make as many new doubles as you can, starting from 'start' and adding 'x' until you hit 'max'
return list of doubles.

Bit Mask

We should either write this as a node or include the .dyf with the distribution.

ardiuno node

rebuild arduino node and test with current arduino/processing

dynamic relaxation node

dynRelaxation node implements a basic particle system
input - list of ref points get mapped to particles (use Revit XYZ class for now for Vector3d)
input - list of line-bypoints mapped to springs
input - timestep - seperate node to set ms, either implement a timer node or set ms as a double
fixity - read parameter / data set on user-created ref points (bool fixed)
gravity and forces - hard code gravity and drag for now in the PS. solver can handle wind as well but let's get the basics going first.

internals - solver - verlet or rk4
particle.cs
spring.cs
particlesystem.cs

dynRelaxation node is responsible for managing inputs, instantiating the PS, creating particles from ref points and springs from lines, and then calling the update as part of Evaluate. after PS update step, PS update step needs to return particle list. dynRelaxation Evaluate() will take particle list with updated positions and then map that back to ref points to update their position. Curve-by-points will update automatically, no need to make spring length back to CBPs. on evaluate all we are doing is updating the position of existing ref points so refresh should be fairly quick, update ref points individually or as a group. question is do we need nested transactions to do this. Need to ask Stephen/Peter about threading.

basic use cases:

  • 1d - catenary curve - linear array of ref points connected by line-by-points. fix ends, run sim, watch hang
  • 2d - grid - 2d array of ref points connected by line-by-points. fix corners, run sim, watch hang.

Someone other than me needs to test maximizing to second monitor.

For some reason, my machine returns my laptop screen (my secondary monitor) as as monitor[0]. All the documentation says that the windows primary monitor (the one with the task bar on it) should be monitor[0]. So, dynamo gets maximized to my main screen, but I want to see if this is the case with other users. I use BootCamp on a macbook pro, so it's monitor array might just be cocked.

start using new 2013 External Events framework to handle modeless interaction wiht Dynamo

External Events framework
The External Events framework is a new API framework tailored for asynchronous processing such as that which is needed to support modeless dialogs. It operates similarly to the Idling event with default frequency.
With this framework, instead of implementing an event handler and implementing the handler to do nothing when there is no activity in your dialog, instead you do the following:

  1. Implement an external event by deriving from the interface:
    • IExternalEvent
  2. Create an ExternalEvent with
    • ExternalEvent.Create()
  3. When an event happens in your modeless UI where a Revit action needs to be taken, call
    • ExternalEvent.Raise()
  4. Revit will wait for an available Idling timecycle and call the implementation of your event:
    • IExternalEvent.Execute()
    This framework is more useful for modeless dialog developers because you can skip the default no-op implementation when nothing has happened, and tell Revit when there is some work you need to do in Revit. It also saves on the time required for Revit to make repeated calls to the Idling event when there is no actual work to be done.

Allow us to hide node wires

This would clean up the canvas. The feature could be inplemented via a right-click option, and the metaphor could we of a "wireless" connection.

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.