Giter Club home page Giter Club logo

wasp's Introduction

Wasp - Discrete Design for Grasshopper

Discrete Design with Grasshopper plug-in (LGPL) initiated by Andrea Rossi


Wasp is a set of Grasshopper components, developed in Python, directed at representing and designing with discrete elements (Rossi and Tessmann 2017). This is achieved by combining geometric representation and abstract graph information (Klavins et al. 2004) of individual modules, as well as providing different procedures for modular aggregation. The description of each individual part includes basic information necessary for the aggregation process (part geometry, connections location and orientation). The set of connections define the topological graph of the part, which is then used to define the possibilities of aggregation with other parts.

The core of the framework relies on a set of aggregation procedures, allowing generation of specific structures from the combination of different modules. Each of these procedures is composed of strategies for the selection of basic aggregation rules, described as an instruction to orient one module over a selected connection of another module. Currently available procedures include stochastic aggregation and field-driven aggregation.

License

Wasp: Discrete Design with Grasshopper plug-in (LGPL) initiated by Andrea Rossi

Copyright (c) 2017-2023, Andrea Rossi

Wasp is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3.0 as published by the Free Software Foundation.

Wasp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with Wasp; If not, see http://www.gnu.org/licenses/.

@license LGPL-3.0 https://www.gnu.org/licenses/lgpl-3.0.html

Supporters Wall

Wasp is free and open-source. Its development is supported by its user through the Wasp Patreon Page. To them goes a great Thank You for enabling Wasp to continue growing:

Arushi Agarwal, Joseph Arc, Georgios Bekakos, Joshua Bonamy, Émile Brochu, Анд Рей, Andrés Caicedo, Adam Colestock, Arjen Deetman, diff-arch, Robert Dooley, Ibrahim Dusmukhamedov, Max Fagan, Flux Estudio, Mark Foxworth, Nupur Gandhi, Mohammad Ghassani, Simon Greuel, Vahe Haroutounian, Lediano Hasanaj, Clemente Hernandez, Markus Hudert, Soubhi Jabal, Ayush Kamalia, Andrei Kazlouski, Lucie Ketelsen, Lothar Kolbeck, Arayapon Kumjornpreecha, Littieri M. Lamb, 娉婷 李, Joseph Loga, Lucho, Marcus, Martyn Milligan, Mai Thi Nguyen, Eric Pham, Thanat Prathnadi, Anton Savov, Naitik Sharma, Eleni Maria Skevaki, Alexander Stefas, 庆铃 王, Andrea Tomalini, Domonkos Tóth, TreeAsHouse, Μαρία Χατζητζίβα, Michael Walsh, Jake Wilson, Roger Winkler, Lei Zhang

Credits

Early development of Wasp have been carried out by by Andrea Rossi as part of research on digital materials and discrete design at DDU Digital Design Unit - Prof. Oliver Tessmann - Technische Universität Darmstadt (http://www.dg.architektur.tu-darmstadt.de/dg/startseite_3/index.de.jsp)

Wasp is heavily influenced by Ladybug (https://github.com/mostaphaRoudsari/ladybug), a free and open source environmental plugin for Grasshopper. It is using its code template, and follows the Labybug code organization. Some methods from Ladybug may have also been copied.

Cite Wasp

Wasp is a free to use Grasshopper plugin and does not legally bind you to cite it. However, we would appreciate if you would cite if you used. To cite Wasp in publications use:

Andrea Rossi (2021).  
Wasp v0.4.013: Discrete Design for Grasshopper. 
URL https://github.com/ar0551/Wasp

Note that there are two reasons for citing the software used. One is giving recognition to the work done by others which we already addressed. The other is giving details on the system used so that experiments can be replicated. For this, you should cite the version of Wasp used. See How to cite and describe software for more details and an in depth discussion.

References

Rossi, A. 2023. Mediated Assemblies: An Open Source Software Approach to Combinatorial Design and Fabrication. Ph.D. Thesis. TU Darmstadt. DOI: https://doi.org/10.26083/tuprints-00024039

Klavins, E, Ghrist, R and Lipsky, D. 2004. Graph grammars for self-assembling robotic systems. In Robotics and Automation, 2004. Proceedings. ICRA

Rossi, A and Tessmann, O. 2017. Designing with DigitalMaterials. In Proceedings of CAADRIA 2017, Suzhou.

Rossi A., Tessmann O. 2019. From Voxels to Parts: Hierarchical Discrete Modeling for Design and Assembly. In: Cocchiarella L. (eds) ICGG 2018 - Proceedings of the 18th International Conference on Geometry and Graphics. ICGG 2018. Advances in Intelligent Systems and Computing, vol 809. Springer, Cham

wasp's People

Contributors

ar0551 avatar pearswj 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wasp's Issues

Untested connexions

Hey !
It seems like wasp sometimes doesn't test some connexions.
My guess is that it doesn't (always?) test another part if the first part didn't work, removing the possibility for a match.

link to Gh file : https://we.tl/t-XQiz74nJKV
And 2 screens to illustrate the problem.
The highlighted green space should be populated with the highlighted black one.

wasp_def_github

wasp_didn't_test

Feature Request: Serialize Aggregation for use with Hops components

Hi Andrea, it would be tremendously beneficial to be able to send aggregations to and from Hops components, as this would open up parallel computing for Wasp - I know that there is a save to file method that I could use, but thought I would ask you to expose the JSON encoded aggregation which can then be used as a String to send to a hops component?

Feature Request: Csharp implementation

Hi Andrea, would you consider progressively transitioning the Wasp plugin to Csharp, probably starting with the most heavy components (field based aggregation seems to be the worst offender)?

Add: custom tolerance for the Graph component in "Full Graph" mode

When computing the full aggregation graph, the Graph component currently uses the Wasp global_tolerance value. It would be useful to allow the user to set a custom tolerance, as in certain cases (e.g., interlocking connections) elements should be considered connected even is the connections are at a specific distance from each other (see attached screenshot)
ViewCapture20220107_113554

Part Catalog changes are not updated in Aggregation components

Currently, changes to a Part Catalog are not passed to the Aggregation class by the aggregation components. The issue is how to handle changes, as if a Catalog has been emptied already and changes are made to the input Catalog, this would refill the whole catalog, hence adding again also the parts that were already placed.
One option would be to keep track of the input catalog in a separate variable, compare the new input one with the stored version, and update only the ones that changes with the difference between the stored one and the input one.

Fix: Global Constraints do not work properly when mixing required and non-required

The global constraints check function fails when mixing constraints which have the required options set to True with constraints which have it set to False.
This happens because the constraints check function does not separate between the two, and adding a required constraint automatically makes all the optional constraints not considered.

Add "Connections Graph" option to AggregationGraph component

Currently, the Aggregation Graph returns a graph connecting the centers of each connected parts with each other. For various applications (e.g., structural analysis or topology studies) it could be useful to have a graph where lines connect the parts through their connected connections.
This currently can be created combining the output of the graph with a DeconstructPart component, but an option for generating this automatically out of the components would be handy.

Aggregation between two parts fails if the connection between them pushes their centers to overlap

It happens rarely, but in the case of two parts connecting in a way that forces the part centers to overlap, Wasp automatically assumes the parts overlap as well. While this is true in most cases, in few ones (e.g. a part with a pass-through hole exactly in the middle) the centers overlap, but the parts do not.
Maybe another method for checking overlaps or a better mesh collision check might be needed.

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.