Code Monkey home page Code Monkey logo

codetocad's Introduction

CodeToCAD - Code-based modeling automation

CodeToCAD brings intuitive and reliable code-based automation to your favorite 3D modeling software (e.g. Blender and OnShape).

Unlike other code-based CAD (e.g. CADQuery and OpenSCAD), CodeToCAD interfaces directly with existing modeling software (like Blender and OnShape). Therefore, you can keep using the software you love, but leverage the power of code and automation in your work. You don't need to be a great programmer to use CodeToCAD - the documentation will help you get started.

Documentation

You can find the CodeToCAD documentation here: https://codetocad.github.io/CodeToCAD/docs.html.

You should browse the examples too! https://codetocad.github.io/CodeToCAD/examples.html.

Getting Started

Release Version and Blender Addon Documentation Pages

Pre-requisites: Python 3.10 or newer.

  1. Install the CodeToCAD PIP Package to get intellisense syntax highlighting.

    pip install CodeToCAD

  2. Create your own CodeToCAD python file and save it:

    # myCodeToCAD.py
    # This is also the examples/materials.py example
    from CodeToCAD import *
    
    myMaterial = Material("material").setColor(169, 76, 181, 0.8)
    Part("Cube").createCube(1, 1, 1).setMaterial(myMaterial)

    Material Cube

  3. Run your script in your modeling software. If you are using Blender, check out the instructions for installing the Blender Addon addon below.

Blender

Note: Blender 3.1 or newer is required.

  1. Download a release and install the Blender Addon from CodeToCADBlenderAddon.zip or from the latest Release (see the sidebar).

    If you're a developer, instead of downloading a release, you can clone this repository. Video Guide

  2. Import your script using the file menu > import > CodeToCAD or the CodeToCAD menu in the sidebar. import_file

Note, you can also run CodeToCAD in Blender via cli: blender -- --codetocad $(pwd)/yourScript.py

What do I do next?

Integrations

Current integrations:

Future planned integrations (not in any order):

  • KiCAD
  • FreeCAD
  • Cascade Studio
  • CADQuery
  • ThreeJS

Warning

  • Since CodeToCad scripts are written in Python, be careful when running code you find on the Internet as it may have a malicious intent. If you are unsure about the code that you are running, consider reaching out to an online community like a Discord server or a forum.

Benefits of code-based modeling with CodeToCAD:

โœ… Simplified modeling interface - it's all text! No more scrolling and clicking into sub-menus to edit your models.

๐Ÿ”“ Not vendor locked - your models are created in an open-source language. If you want to use another software, you do not lose the features you have defined. Note: There is no guarantee that a model created for, e.g. Blender, will work right away for another software, but with some refactoring, it theoretically should!

๐Ÿชถ Lightweight and portable. All you need is a text-editor to model. You can occasionally fire-up your modeling software to run your creations.

๐Ÿ’ช Leverages existing programming languages, like Python. You can keep using the languages you're familiar with and love. There is no one-off language you and your team has to learn. Use CodeToCAD like a library or a framework.

๐ŸšฆEasy version control. Your models are written in code, you can use industry-loved git to keep track of versions of your models.

๐Ÿ’• Built by people who believe in automation and that modeling workflows should be intuitive, reliable and most importantly free and open source!

Development & Contributing

Setting up development environment.

  1. Please install the VSCode python virtual environment using sh development/createPythonVirtualEnvironment.sh or sh development/createPythonVirtualEnvironment.sh /path/to/python_binary.

If you are on Windows, please use Git Bash. Note: Python 3.10+ is required. Note 2: It might be a good idea to restart VSCode after installing the virtual environment. Note 3: If VSCode prompts you, please use the interpreter under development/developmentVirtualEnvironment.

  1. It's good practice to run tests before committing. Please run sh ./development/installGitHooks.sh to instll Git Hooks.

  2. Install Blender 3.1+, this is the first Blender version with Python 3.10.

  3. Install the Blender Addon at providers/blender/CodeToCADBlenderAddon.py Video Guide

Running Tests

Run tests using sh runTests.sh.

Capabilities.json and Jinja2 templates

CodeToCAD/capabilities.json is a schema used to generate the CodeToCAD interface.

Jinja2 templates are used to turn capabilities.json into an interface, as well as templates for CodeToCAD Providers and Tests.

You can generate the Jinja2 templates by running the "Capabilities.json to Python" task in VSCode, or sh development/capabilitiesJsonToPython/capabilitiesToPy.sh

Architecture

CodeToCAD is an automation. Here is the high-level architecture for this tool.

Architecture

Contributing

If you would like to contribute to the project, please feel free to submit a PR.

Please join the Discord Server if you have any questions or suggestions: https://discord.gg/MnZEtqwt74

codetocad's People

Contributors

shehabattia96 avatar github-actions[bot] avatar shor-oth avatar devnitrate 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.