Code Monkey home page Code Monkey logo

freecad-aplan's Introduction

PRs Stargazers Issues License


Logo

APLAN: Assembly PLANning workbench for FreeCAD

Report Bug · Request Feature

Table of contents
  1. About the project
  2. Getting started
  3. Contributing
  4. License
  5. Acknowledgments

About the project

⚠️ Work in progress ⚠️

This workbench is an attempt to introduce automatic assembly sequence planning (ASP) into FreeCAD. ASP involves determining (all) feasible sequences in which the different components of a product can be assembled successfully. Based on an assembly product's CAD model, feasible assembly sequences are composed by considering topological and geometrical constraints, and are represented as an AND/OR graph.

Citation

This project started in the context of Ph.D. research into intention-based human-robot collaborative assembly, and was first mentioned in the following paper:

M. Cramer, K. Kellens and E. Demeester, "Probabilistic Decision Model for Adaptive Task Planning in Human-Robot Collaborative Assembly Based on Designer and Operator Intents," in IEEE Robotics and Automation Letters, vol. 6, no. 4, pp. 7325-7332, Oct. 2021, doi: 10.1109/LRA.2021.3095513.

Videos

  • Automatic constraint detectors and interactive graph visualiser [YouTube]

Built with

  • FreeCAD version info:
OS: Ubuntu 22.04 LTS (ubuntu:GNOME/ubuntu)
Word size of FreeCAD: 64-bit
Version: 0.20.29177 (Git)
Build type: Release
Branch: (HEAD detached at 0.20)
Hash: 68e337670e227889217652ddac593c93b5e8dc94
Python 3.10.4, Qt 5.15.3, Coin 4.0.0, Vtk 7.1.1, OCC 7.5.1
Locale: English/United States (en_US)

(back to top)

Getting started

These instructions will help you get the APLAN workbench up and running on your local machine.

  1. Copy the latest version of FreeCAD's source code:
$ git clone https://github.com/FreeCAD/FreeCAD.git freecad/freecad-source
  1. Copy the source code of the APLAN workbench into the Mod folder:
$ git clone https://github.com/martcram/FreeCAD-APLAN.git freecad/freecad-source/src/Mod/Aplan

... or include the project as a submodule for development purposes:

$ cd freecad/freecad-source
$ git submodule add https://github.com/martcram/FreeCAD-APLAN.git src/Mod/Aplan
  1. Create a CMake variable in the file freecad-source/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake to provide the user with the option to compile this workbench:
...
option(BUILD_APLAN "Build the FreeCAD APLAN module" ON)
...
  1. Include the subdirectory of the APLAN workbench in the CMake build by adding the following lines to the file freecad-source/src/Mod/CMakeLists.txt:
...
if(BUILD_APLAN)
    add_subdirectory(Aplan)
endif(BUILD_APLAN)
...
  1. Follow the succeeding instructions for compiling FreeCAD on your specific OS using the official documentation. Note that the first step of acquiring FreeCAD's source code can be disregarded since this was already addressed by this README file.

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this workbench better, please fork the repo and create a pull request. You can also simply open an issue with the tag "Feature". Don't forget to give the project a star! Thank you!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/amazingFeature)
  3. Commit your Changes (git commit -m 'add some amazingFeature')
  4. Push to the Branch (git push origin feature/amazingFeature)
  5. Open a Pull Request

Finally, have a look at the list of contributors who participated in this project.

(back to top)

License

This project is distributed under the LGPL-2.1 License. See LICENSE for more information.

(back to top)

Acknowledgments

(back to top)

freecad-aplan's People

Contributors

jercram avatar martcram avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

freecad-aplan's Issues

[Bug] APLAN fails to build for FreeCAD 0.20

Issue description

FreeCAD's release version 0.19.1 had been selected in the initial development phase. However, when switching to FreeCAD 0.20, configuration and build errors occur related to the APLAN workbench.

FreeCAD version

0.20 (Release)

Full FreeCAD version info

OS: Ubuntu 22.04 LTS (ubuntu:GNOME/ubuntu)
Word size of FreeCAD: 64-bit
Version: 0.20.29177 (Git)
Build type: Release
Branch: (HEAD detached at 0.20)
Hash: 68e337670e227889217652ddac593c93b5e8dc94
Python 3.10.4, Qt 5.15.3, Coin 4.0.0, Vtk 7.1.1, OCC 7.5.1
Locale: English/United States (en_US)
Installed mods: 
  * A2plus 0.4.56
  * 3DfindIT 1.2.0

[Feature] Provide toolbar commands with tailored icons

Feature description

The toolbar commands of the APLAN workbench are still provided with the default icon (i.e. black cross on a white background). Tailored icons have to be designed following FreeCAD's artwork guidelines.

Status

Name Type Icon Description Designer(s) Commit
Analysis Object Container object collecting all objects (i.e. part filters, constraints, results etc.) related to a specific assembly analysis. Inspired by FEM Analysis martcram a43b79e
Compound Object Object representing a group of assembly components (i.e. subassembly). During analysis, all components composing a Compound are treated as a single part. jercram 4cf4815
CompoundGroup Object Object representing a group of Compound objects. An APLAN analysis container can contain at most one CompoundGroup object. jercram 0ecb342
CompoundsPurge Command Command used for purging all Compound and CompoundGroup objects of the active APLAN analysis. jercram 6a14633
ConnectionDetectorSwellOCCT Object Object representing a connection detector (i.e. topological constraints) using bounding box intersections and OpenCascade's tools. jercram 744336c
ConstraintGroup Object Object representing a group of GeomConstraints and TopoConstraints objects. An APLAN analysis container can contain at most one ConstraintGroup object. jercram 1351076
ConstraintsInspect Command Command used for inspecting and modifying the selected geometrical or topological constraints using a force-directed graph layout. jercram 119c2f4
ConstraintsPurge Command Command used for purging all GeomConstraints, TopoConstraints, and ConstraintGroup objects of the active APLAN analysis. jercram c1eddc8
GeomConstraints Object Object representing the geometrical constraints (i.e. obstructions) present among the available components, and along the specified disassembly direction. jercram 2d76754
ObstructionDetectorOCCT Object Object representing an obstruction detector (i.e. geometrical constraints) using bounding box intersections and OpenCascade's tools. jercram d515b40
PartFilter Object Object representing a filter for grouping (compounding) and/or excluding parts from analysis. jercram 3be982a
ToggleTransparency Command Command used for toggling the transparency of the available parts. jercram cb392f7
TopoConstraints Object Object representing the topological constraints (i.e. connections) present among the available components. jercram f3084a0

README tweaks

  • Please put Description section before Installation section
  • Please Add just a little more depth to the Description section before directing users to the wiki
  • Maybe create a Prerequisites section

Also, I can add this to the addon manager when you think it's ready but it would be useful if you posted about it on the forum.freecadweb.org so the community could vet it...what do you think?

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.