GithubHelp home page GithubHelp logo

marialarsson / tsugite Goto Github PK

View Code? Open in Web Editor NEW
403.0 30.0 76.0 141.8 MB

This is the repository of a Tsugite. It is a research prototype of an interactive software that supports the design and fabrication of wood joints.

Home Page: http://www.ma-la.com/tsugite.html

License: Other

Python 92.09% G-code 7.91%
joint wood uist2020 uist interface hci cad cam fabrication

tsugite's Introduction

Tsugite

Interactive Design and Fabrication of Wood Joints

This is the repository related to a paper presented at UIST 2020. It is an interface where you can model a joint geometry in a voxelized design space, and export milling paths for fabrication with a 3-axis CNC-machine.

This software is free for personal use and non-commercial research conducted within non-commercial organizations. If you want to use it for commercial purposes, please contact Kaoru Shigeta ([email protected]).

Environment

It is recommended to use a virtual environment, for example venv.

The following command will install the packages at once.

$ pip install -r requirements.txt

Run Program

After installing the necessary packages, run the application by the following commands.

$ cd setup
$ python tsugite_app.py

Interface

Open a joint by double-clicking anywhere or by pressing the SPACE bar. Edit the joint geometry by pushing and pulling on the faces. Change the orientation and position of the wood components by dragging them. Other properties can be edited in the control panel to the left. Editable properties are summarized in the figure below.

The system performs geometric evaluations in real time and provides graphical feedback accordingly (see a-h below).

In case of an invalid joint, the system also gives suggestions (on the right side). The suggestions consists of up to four valid joint geometries within one edit distance from the current design.

For more details, see the User Interface Wiki (coming soon).

File format *.tsu

*.tsu is a unique file format for this application. This file my_joint.tsu is provided as an example. You can save and open *.tsu files from the menu bar in the interface.

Fabrication

Set machine origin at the center of the top side of the joint. Insert wood bar a) vertically if the sliding/fabrication is aligned with the timber axis, and b) horizontally if it is perpendicular to the timber axis.

For more details, see the Fabrication Wiki (coming soon).

Disclaimer

Please note that this is a research prototype and not a consumer-ready product. We cannot provide technical support and we are not responsible for any damage to your fabrication equipment.

Publication

Maria Larsson, Hironori Yoshida, Nobuyuki Umetani, and Takeo Igarashi. 2020. Tsugite: Interactive Design and Fabrication of Wood Joints. In Proceedings of the 32nd Annual ACM Symposium on User Interface Software and Technology (UIST '20). Association for Computing Machinery, Virtual Event, USA.

ACM link: https://dl.acm.org/doi/abs/10.1145/3379337.3415899

Project page: http://www.ma-la.com/tsugite.html

Paper PDF: http://ma-la.com/Tsugite_UIST20.pdf

tsugite's People

Contributors

dependabot[bot] avatar hironoriyh avatar hmikihth avatar luzpaz avatar marialarsson avatar willpansutd 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tsugite's Issues

PaintGL and GLWidget

Hello, first of all thanks for your job. It's amazing and I can't wait to test it and realize something out of it.
Unfortunately I have an issue:
The program runs: the interface opens but on display remain white and nothing appear, in the terminal I have this error:

Traceback (most recent call last):
  File "Tsugite_app.py", line 92, in paintGL
    self.display.update()
AttributeError: 'GLWidget' object has no attribute 'display'

All the dependency looks satisfied. I didn't find any content on forums so here I am.

I using Ubuntu 20.04.1 LTS, 64-bit.
Thanks for your time

64bit win10 no toolpath

Have downloaded the latest version suggested by Maria, after installation the program runs very slowly. Also after creating a design and filling out the Fabrication inputs, I get nothing no toolpath created or displayed, no way of exporting any type of gcode to run on the cnc.

Shader compile error on MacOS

When I try to run the app on my Mac I get a shader error.

Environment:

  • 2016 Macbook Pro
  • MacOS 11.4
  • Python 3.9.0

Steps to reproduce:

  1. python3 -m vent env
  2. source env/bin/activate
  3. pip install requirements.txt
  4. cd setup
  5. python Tsugite_app.py

Actual behaviour

  • The app crashes with this error:
qt.qpa.window: <QNSWindow: 0x7f88cf0fd560; contentView=<QNSView: 0x7f88cf178f80; QCocoaWindow(0x7f88cf178e70, window=QWidgetWindow(0x7f88cf166960, name="QGLWidgetClassWindow"))>> has active key-value observers (KVO)! These will stop working now that the window is recreated, and will result in exceptions when the observers are removed. Break in QCocoaWindow::recreateWindowIfNeeded to debug.
Traceback (most recent call last):
  File "/Users/sam/src/github.com/tsugite/setup/_GLWidget.py", line 35, in initializeGL
    self.show = Show(self,self.type)
  File "/Users/sam/src/github.com/tsugite/setup/Show.py", line 12, in __init__
    self.create_color_shaders()
  File "/Users/sam/src/github.com/tsugite/setup/Show.py", line 53, in create_color_shaders
    self.shader_col = OpenGL.GL.shaders.compileProgram(OpenGL.GL.shaders.compileShader(vertex_shader, GL_VERTEX_SHADER),
  File "/Users/sam/src/github.com/tsugite/env/lib/python3.9/site-packages/OpenGL/GL/shaders.py", line 235, in compileShader
    raise ShaderCompilationError(
OpenGL.GL.shaders.ShaderCompilationError: ('Shader compile failure (0): b"ERROR: 0:2: \'\' :  version \'330\' is not supported\\nERROR: 0:3: \'\' :  extension \'GL_ARB_explicit_attrib_location\' is not supported\\nERROR: 0:4: \'\' :  extension \'GL_ARB_explicit_uniform_location\' is not supported\\nERROR: 0:5: \'layout\' : syntax error: syntax error\\n"', [b'\n        #version 330\n        #extension GL_ARB_explicit_attrib_location : require\n        #extension GL_ARB_explicit_uniform_location : require\n        layout(location = 0) in vec3 position;\n        layout(location = 1) in vec3 color;\n        layout(location = 2) in vec2 inTexCoords;\n        layout(location = 3) uniform mat4 transform;\n        layout(location = 4) uniform mat4 translate;\n        layout(location = 5) uniform vec3 myColor;\n        out vec3 newColor;\n        out vec2 outTexCoords;\n        void main()\n        {\n            gl_Position = transform* translate* vec4(position, 1.0f);\n            newColor = myColor;\n            outTexCoords = inTexCoords;\n        }\n        '], GL_VERTEX_SHADER)
[1]    12442 abort      python Tsugite_app.py

The inner compile error is:

ERROR: 0:2: '' : version '330' is not supported
ERROR: 0:3: '' : extension 'GL_ARB_explicit_attrib_location' is not supported
ERROR: 0:4: '' : extension 'GL_ARB_explicit_uniform_location' is not supported
ERROR: 0:5: 'layout' : syntax error: syntax error

Angle Input is not changing geometry

Really useful app. I am looking to explore some non-orthogonal geometry, but the angle and dimensional input within the app does not affect the output. Is this something that is currently being progressed? I am working with Windows 10.

Unable to load numpy_formathandler accelerator from OpenGL_accelerate

I'm getting the error above when trying to run the Tsugite_app.py script.
When I run: pip install PyOpenGL it says I already have 3.1.5
When I run: pip install PyOpenGL_accelerate it says I already have 3.1.5
When I run: pip install numpy it says I have 1.19.5
When I run: pip install numpy 1.18.5 it says could not find a version that satisfies the requirement 1.18.5 and no matching distribution found for 1.18.5

For reference, here's my full pip list:
Package Version


cycler 0.10.0
kiwisolver 1.3.1
matplotlib 3.3.3
multipledispatch 0.6.0
numpy 1.19.5
opencv-python 4.4.0
Pillow 8.1.0
pip 20.3.3
PyOpenGL 3.1.5
PyOpenGL-accelerate 3.1.5
pyparsing 2.4.7
PyQt5 5.15.2
PyQt5-sip 12.8.1
pyrr 0.10.3
python-dateutil 2.8.1
setuptools 49.2.1
six 1.15.0

I know some of these versions don't match up with the requirements you have listed but I'm not sure how to get the older versions.

CNC Drilling Machine

Dear all,
May I ask you which CNC drilling machine do you recommend to use your Tsugite software. I am checking on my side but probably I need an help to get the right one to be able to drill the extremities of long pieces of wood.

thanks again for your attention

Cheers
Mauro

glUniformMatrix4fv throws error because of pyrr's Matrix444 objects

The glUniformMatrix4fv throws error because of pyrr's Matrix444 objects.

tsugite/setup/Show.py", line 95, in init_shader
glUniformMatrix4fv(3, 1, GL_FALSE, rot_x * rot_y)
File "src/latebind.pyx", line 32, in OpenGL_accelerate.latebind.LateBind.call
File "src/wrapper.pyx", line 299, in OpenGL_accelerate.wrapper.Wrapper.call
File "src/wrapper.pyx", line 161, in OpenGL_accelerate.wrapper.PyArgCalculator.c_call
File "src/wrapper.pyx", line 128, in OpenGL_accelerate.wrapper.PyArgCalculatorElement.c_call
File "src/wrapper.pyx", line 114, in OpenGL_accelerate.wrapper.PyArgCalculatorElement.c_call
File "src/wrapper.pyx", line 212, in OpenGL_accelerate.wrapper.CallFuncPyConverter.c_call
File "src/arraydatatype.pyx", line 174, in OpenGL_accelerate.arraydatatype.ArrayDatatype.asArray
File "src/arraydatatype.pyx", line 57, in OpenGL_accelerate.arraydatatype.HandlerRegistry.c_lookup
TypeError: ("No array-type handler for type <class 'pyrr.objects.matrix44.Matrix44'> (value: Matrix44([[ 0.92106099, 0.27935162, 0.27131037, ) registered", None)

Error message on win 10

Have run the latest version of Tsugite on win 10 (running on MacOS) and am getting the following error message.
Am not sure how to proceed.
Kindly assist or advise.
Uploading 7FE1D043-8559-4F2B-8471-2E17CE5AEF9F.jpeg…

Suggestion: SVG top down export of cut outlines

Problem

Some tools, such as the Shaper Origin (https://www.shapertools.com/) do not except GCODE. However it would be possible to use this software with the tool by rendering SVG images as a top-down 2 dimensional orthographic render from the perspective of the cutter.

Background

Tools like Shaper Origin are generally more user friendly than CNC milling machines, especially to new or younger makers. Shaper Origin is used in class rooms for young children, and given the intuitive feature set and a price point near that of entry level gantry CNCs it could be a tool that this project could help push forward.

Potential Solution

Given that you already have a 3 dimensional isometric view, a 2 dimensional render from the perspective of the sliding direction of just the areas that need to have material removed from the original stock would be the essential work to be done. Each depth of cut would ideally be exported as it's own shape. The cut type encoding document (linked in references below) could be used to setup pocketing, inside, outside cuts, or even guides like text to indicate the depth of cut.

Other uses

This feature could also allow designs to be exported from tsugite into other design tools. Importing into CoralDraw, SketchUp, or more complex tooling for testing loads or design tolerances digitally.

In addition laser cutters could be used with SVG files to make pattern making templates. (Here is an example of a the process: https://www.woodsmith.com/article/making-using-router-templates/)

Potential gotchas

Milling angled parts could be difficult but certainly not impossible. This has been done on the shaper, as can be seen in the "Tangent plant stand" design linked below on ShaperHub. This could be mitigated but the use of angled work holding jigs (something that is used in the Shaper community a lot).

Shaper Origin is limited in things like depth of cut, and cutter size. Max depth of cut is typically 1.511 inches, and cutters are limited to shank sizes of 1/4 inch, 1/8 inch, 3 millimeter, 6 millimeter, and 8 millimeter. This is not really an issue if cuts are limited to 1.5 inches in thickness, and could most likely manually accounted for.

References

Shaper design introduction video:
https://support.shapertools.com/hc/en-us/articles/360052463953-Introduction-to-Designing-for-Origin-Video-

Shaper SVG cut type encoding reference:
https://support.shapertools.com/hc/en-us/articles/115002721473-Cut-Type-Encoding

Tangent plant stand:
https://hub.shapertools.com/creators/5fbc41ffe7369a000fdb5058/shares/62705a0cbb1777d9ce102d72

LICENSE file

repository is missing a LICENSE file. Please consider adding one

Gallery Mode activation

How can I activate the Gallery Mode? It appears to be unable (light grey), and as a beginner I could really use the help of that mode. Also, the checkbox "Show Area of Friction" is unable. Maybe it's becaurse of the design itself?
Thank you in advance

Error when attempting to run

When I attempt to run the software I get this error.
Traceback (most recent call last): File "Tsugite_app.py", line 74, in initializeGL File "Show.py", line 12, in _init_ File "Show.py", line 53, in create_color_shaders File "OpenGL\GL\shaders.py", line 235, in compileShader OpenGL.GL.shaders.ShaderCompilationError: ('Shader compile failure (0): b"ERROR: 0:4: \'#extension\' : \'GL_ARB_explicit_uniform_location\' is not supported\\nERROR: 0:8: \'location layout qualifier\' : not supported \\nERROR: 0:9: \'location layout qualifier\' : not supported \\nERROR: 0:10: \'location layout qualifier\' : not supported \\nERROR: 0:15: \'transform\' : undeclared identifier \\nERROR: 0:15: \'translate\' : undeclared identifier \\nERROR: 0:15: \'position\' : undeclared identifier \\nERROR: 0:15: \'constructor\' : not enough data provided for construction \\nERROR: 0:16: \'newColor\' : undeclared identifier \\nERROR: 0:16: \'myColor\' : undeclared identifier \\nERROR: 0:17: \'outTexCoords\' : undeclared identifier \\nERROR: 0:17: \'inTexCoords\' : undeclared identifier \\n\\n"', [b'\n #version 330\n #extension GL_ARB_explicit_attrib_location : require\n #extension GL_ARB_explicit_uniform_location : require\n layout(location = 0) in vec3 position;\n layout(location = 1) in vec3 color;\n layout(location = 2) in vec2 inTexCoords;\n layout(location = 3) uniform mat4 transform;\n layout(location = 4) uniform mat4 translate;\n layout(location = 5) uniform vec3 myColor;\n out vec3 newColor;\n out vec2 outTexCoords;\n void main()\n {\n gl_Position = transform* translate* vec4(position, 1.0f);\n newColor = myColor;\n outTexCoords = inTexCoords;\n }\n '], GL_VERTEX_SHADER)

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.