Giter VIP home page Giter VIP logo

jupytercad's Introduction

JupyterCAD - A JupyterLab extension for 3D geometry modeling.

Lite

JupyterCAD is a JupyterLab extension for 3D geometry modeling with collaborative editing support. It is designed to allow multiple people to work on the same file at the same time, and to facilitate discussion and collaboration around the 3D shapes being created.

JupyterCAD has support for FreeCAD files, which makes it easy to import and export models from FreeCAD. It also has a range of features for creating and manipulating 3D shapes, including a variety of primitives, transformations, and Boolean operations.

jupytercad

Requirements

  • JupyterLab >= 4.0.0
  • freecad (optional)

Installation

You can install JupyterCAD using conda/mamba (this installs freecad automatically):

mamba install -c conda-forge jupytercad

Or using pip:

pip install jupytercad

Once you have installed the extension, you should be able to open and edit .fcstd files in JupyterLab.

Documentation

Check out the JupyterCAD documentation on ReadTheDocs! https://jupytercad.readthedocs.io

Contributing

JupyterCAD is an open-source project, and contributions are always welcome. If you would like to contribute to JupyterCAD, please fork the repository and submit a pull request.

See CONTRIBUTING for dev installation instructions.

License

JupyterCAD is licensed under the BSD 3-Clause License. See the LICENSE file for more information.

jupytercad's People

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jupytercad's Issues

Support multi-selection

We should support multi-selection of 3D shapes.

This will then allow the following scenario:

  • Select shape A
  • Select shape B as well
  • Press Union/Cut operator -> The form is already filled with shape A and shape B as parameters

3D view options

We should provide to the user some view options:

  • orthographic and perspective projections
  • wireframe view
  • clipping

Custom open-cascade build

Currently the WASM part of JupyterCad fills up user memory and can lead to issues on low memory laptops (my browser or other intensive apps like vscode simply crashes from time to time when using JupyterCad).

We should make a custom open-cascade build to reduce the amount of data shipped to the user.

See https://ocjs.org/docs/getting-started/file-size
Also https://github.com/donalffons/opencascade.js/blob/master/website/ocjs-editor-theme/src/customBuild/customBuild.yml

Add exploded view

It's a cool feature of opencascade web. It would be great if we could add it to jupytercad

cad3

Follow mode: Separate user camera from collaborator camera

Currently the follow mode will make the user camera follow the other collaborator camera. We could probably redesign it so that when following someone else's camera we don't change the user camera.

We could have some kind of model/view design where:

  • when following someone, we don't change the user camera model, only the view
  • that means that if user1 follows user2 and user2 follows user3, user1 will see a static camera because user2's camera is actually not moving

Undo manager

We should probably have an undo/redo feature with Ctrl + Z binding

Create new empty file

JupyterCad can only open existing jcad or FCStd files. We should allow users to create new empty files and then save them in both supported formats.

Galata bot broken?

As in https://github.com/QuantStack/jupytercad/actions/runs/4893347948

It seems to fail at downloading artifacts

1s
Run dawidd6/action-download-artifact@v2
==> Repository: QuantStack/jupytercad
==> Artifact name: extension-artifacts
==> Local path: ./
==> Workflow name: build.yml
==> Workflow conclusion: 
==> PR: [1](https://github.com/QuantStack/jupytercad/actions/runs/4893347948/jobs/8736202593#step:5:1)29
==> Commit: 3690a3c12af53fb17695c4ae12f89[14](https://github.com/QuantStack/jupytercad/actions/runs/4893347948/jobs/8736202593#step:5:15)0e10f4059
==> (found) Run ID: 4893335739
==> (found) Run date: [20](https://github.com/QuantStack/jupytercad/actions/runs/4893347948/jobs/8736202593#step:5:21)[23](https://github.com/QuantStack/jupytercad/actions/runs/4893347948/jobs/8736202593#step:5:24)-05-05T12:24:42Z
==> (not found) Artifact: extension-artifacts
==> Found the following artifacts instead:
Error: no artifacts found

Animating camera movement

While switching cameras between users, the new position is set immediately. We can make the camera move smoothly to the new place.
For example, the case of changing the up vectors in 3dviewer.net

cad

Button to center view on visible objects

After some operations, the view is quickly not centered anymore on the object. We should have a button that re-center the view to the visible objects on-click.

Add Tube primitive

FreeCAD allows creating a Tube primitive. It would be nice to do the same.

Unfortunately there is no BRepPrimAPI_MakeTube* function in OpenCascade so we might need to implement the shape in another way if we want to provide this primitive.

Screenshot from 2022-10-06 11-55-47

New frontends for JupyterCad

For now, JupyterCad can only be opened from the main interface of JupyterLab, I think it's possible to extend the scope of JupyterCad to make it become:

  • A notebook widget where users can visualize and interact with jcad or FCStd files using python APIs.
  • A lab-based app, which can be opened independently of JupyterLab by calling jupyter cad

Make annotation deletion more explicit

Currently, you delete an annotation by pressing the small cross handle on the top right corner.

To me, this button looked more like a "close" button than a "delete" button. We should probably have both a close button and a delete button, and make it clear what delete does.

Improve UI toolbar

We should improve the toolbar and use some nice icons for primitives and operations:

Screenshot from 2023-04-24 16-24-39

Screenshot from 2023-04-24 16-25-07

Bind tree selection to 3-D selection

#8 introduced 3-D selection, we should bind this selection to the tree so that:

  • when clicking in the tree view the clicked piece gets highlighted in the 3-D view
  • when clicking in the 3-D view the clicked piece gets highlighted in the tree view

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.