Code Monkey home page Code Monkey logo

dyfpy's Introduction

dyfpy

Python library to automate creating DynamoBIM custom nodes.

Here is a simple example to create a node to add two values. For an advanced example check nodeFromComponent method in dynamo_custom_node.py

"""Create a simple node that dds number a and number b and returns addition."""

from dyfpy.dynamo_custom_node import Workspace, Camera, PythonNode, Input, Output

path = r'C:\Users\Administrator\AppData\Roaming\Dynamo\Dynamo Core\1.2\definitions'

component = {'name': 'Addition', 'description': 'This node adds two number.',
        'category': 'Core', 'subcategory': 'Math'}

inputs = ({'name': 'a', 'description': 'Number a.', 'defaultValue': 2.1,
           'valueType': 'double', 'accessType': 'item'},
          {'name': 'b', 'description': 'Number b.', 'defaultValue': 3.5,
           'valueType': 'double', 'accessType': 'item'})

output = {'name': 'addition', 'description': 'Addition of a + b.'}

sourceCode = 'a, b = IN\nOUT = a + b'

# initiate the node
node = Workspace(name=component['name'], description=component['description'],
                 category=component['category'], subcategory=component['subcategory'])

node.ZOOM = 0.5

# add a default camera for the background
node.addCamera(Camera())

# python node to read the code as a string
corenode = PythonNode(name=component['name'], x=-450, y=475, script=sourceCode,
                      inputcount=2)
node.addElement(corenode)

# add inputs for this case I create two input
for count, inp in enumerate(inputs):
    y = 475 + 95 * count
    inp = Input(name=inp['name'], description=inp['description'],
                valueType=inp['valueType'], defaultValue=inp['defaultValue'],
                accessType=inp['accessType'], x=-750, y=y)
    node.addElement(inp)
    # connect the input to the python node
    node.addConnector(inp, corenode, srcIndex=0, targetIndex=count)

# create the output node
out = Output(name=output['name'], description=output['description'], x=-240, y=475)
node.addElement(out)
node.addConnector(corenode, out)

print 'Saving the custom node: {}'.format(component['name'])

node.save(path)

dyfpy's People

Contributors

mostapharoudsari avatar

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.