Code Monkey home page Code Monkey logo

mendel90's Introduction

A RepRap Mendel variant using sheets for the frame instead of rods

Standard variants

dibond is the version that was sold as a kit with 3mm sheets, 8mm rods and uses nuts and machine screws through the frame.

sturdy is 12mm MDF sheets, 10mm rods and uses wood screws into pilot holes in the frame. It can be built without CNC.

mendel is 6mm acrylic sheets with a 10mm acrylic base, 8mm rods and uses machine screws into tapped holes in the frame.

huxley is a scaled down version of dibond using 6mm rods and NEMA14 motors.

The dibond, sturdy and mendel versions can be modified to accept the E3D v6 hot end. The files that change are dibond_E3D and sturdy_E3D.

Limitations

The dibond and sturdy versions are well tested and popular. The acrylic version, called mendel, hasn't been built for a long time and is not recommened. The Huxley version hasn't been tested in its final form although one prototype has been made of an earlier version and a few snags fixed since.

Use

Add the directory of the OpenScad executable to your search path. OpenSCAD-2015.05 or later is required. To get PDF versions of the sheet drawings add InkScape to your search path.

To make all the files for a machine run

make_machine.py machine_name

To make just the bom, sheets or stls run bom.py, sheets.py or stls.py machine_name.

machine_name can be dibond, mendel, sturdy or huxley. To make your own variant copy scad\conf\mendel_config.scad or scad\conf\sturdy_config.scad to yourname_config.scad. Then run make_machine.py yourname.

To view the model of the whole machine, open scad\main.scad. It will take several minutes to render (about about 5 minutes on my computer) but after that you can pan and zoom it at reasonable speed and changes takes less time to render. (Note: main.scad will only render correctly if conf\machine.scad exists, which is created by the make_machine.py script.)

To view a sub-assembly, open the individual scad files. Set the exploded flag in config.scad to make exploded views.

To get blender renders of all the parts put blender in your search path and run render.py machine_name.

Credits

Fan model based on this model by MiseryBot, CC license.

Sanguinololu model by ax_the_b, CC license.

Spring taken from openscad example 20

x-end.scad and wade.scad use some elements of the Prusa ones by Josef Prusa, GPL license.

z_couplings originally based on this model by Griffin_Nicoll, GPL license.

Bearing holders originally based on this model by Jolijar, CC license.

InkCL.py based on this code

mendel90's People

Contributors

brad avatar dacarley avatar fuginator avatar im-0 avatar jonathanwood avatar lenbok avatar nophead avatar sevikkk avatar theopouris 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  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

mendel90's Issues

"MSVCR100D.dll is missing" on Windows 7 x64

Getting error on missing vs2010 redis package file(which is installed). Maybe you should link wrapper statically?
Also, just putting that file to the same folder as openscad_cl works fine, but still...

render.py fails with Blender 2.66 (sub 0), Revision: 54697

Had to downgrade to 2.64 r51026 (although I only tested 2.66 SVN and 2.66 current official release.)

Running under 2.64 with no problems.

Tracked it down to viz.py
the command bpy.ops.transform.translate(value=(0,0,z_dim/2.0))

Sorry - I am no blender expert.

Regards,
Brendan

/tmp/render.crash.txt

Blender 2.66 (sub 0), Revision: 54697

backtrace

/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0xea6a9c]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0xea6cda]
/lib/x86_64-linux-gnu/libc.so.6(+0x364c0) [0x7f480976e4c0]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(WM_keymap_list_find+0x12) [0xeb0442]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(WM_keymap_active+0x28) [0xeb1078]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(initTransform+0x12b) [0xf5626b]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0xf570cb]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0xf57187]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0xec042b]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(WM_operator_call_py+0x6e) [0xec0d6e]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0x16db100]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(PyEval_EvalFrameEx+0x6727) [0x2976bd7]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(PyEval_EvalCodeEx+0x81e) [0x29703fe]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0x28f04f0]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(PyObject_Call+0x5a) [0x28ca96a]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0x28e1cad]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(PyObject_Call+0x5a) [0x28ca96a]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0x2926f31]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(PyObject_Call+0x5a) [0x28ca96a]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(PyEval_EvalFrameEx+0x17a0) [0x2971c50]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(PyEval_EvalFrameEx+0x6694) [0x2976b44]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(PyEval_EvalCodeEx+0x81e) [0x29703fe]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(PyEval_EvalCode+0x3b) [0x29704ab]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(PyRun_FileExFlags+0xb9) [0x299aba9]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0x16d09ce]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0xea7b60]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(BLI_argsParse+0xc7) [0x1731547]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender(main+0x21a) [0xea8efe]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f480975976d]
/usr/local/bin/blender-2.66-linux-glibc211-x86_64/blender() [0xde51

Nearly unusable

"Add the directory of the OpenScad executable to your search path." No idea how to do that on my computer so every other step seems to fail.
I can't run make_machine.py
so I can't make machine.scad
so conf/config.scad has no variables
so fixing-block.scad won't compile correctly.

I only need one tiny part, and I know how to edit these files, but I need to generate an entire printer somehow.

Would having an example machine.scad be difficult? I don't know why an openscad project need python at all.

I'm sorry if this is reading as angry, but I really just need one tiny part and I'm very frustrated. Also my girlfriend is yelling at me because I didn't tell her that she needed to save her work, so it's my fault that her last 3 hours are lost.

Stl

Здравствуйте, пытался загрузить stl файлы пишет нужен puch доступ.?

Mendel90 Kits

Hello,

Not sure how else I can contact you, but do you still offer/sell the kits and if so how much would one cost (UK) or would it be cheaper for me to get the parts myself?

Do you have a template for the frames and everything else? Or a manual I can follow for it as I can't seem to find one. Or a parts list.

Regards
Thomas

Extract Assembly Data

It would be really nice to get the translate , rotate and instance data out of the _assembly modules...

With this data the Mendel90 could be rebuilt in blender from this and output STLs.

Missing nut trap in X_idler_bracket, where is scad source?

I am unable to print the X-idler_bracket.stl and x_motor_bracket.stl because they do not slice with a nut trap in the top (using Slic3r or Cura or ReplicatorG). According to blogs this is an OpenScad problem. The collection of source files for Mendel90 does not seem to contain the scad versions. Where can I find the .scad source for these so I can add a nut trap another way?

E3D with GT2 pulleys

I see that the E3D branch does not have the GT2 pulley changeset. Looking through the change set it seems like this is just a materials change and does not affect any printed parts (minus the removed T5 printed pulleys). Is that correct?

Inkscape CLI with Ubuntu 12.04 LTS

Hey, I noticed that inkscape was opening the GUI and not doing PDF conversions, so I did some digging. I'm running Inkscape 0.48.3.1 r9886 (Mar 29 2012) and Python 2.7.3.

Apparently adding the -z option tells inkscape to not open a GUI, so I added that. But the big thing I noticed was that Python was ignoring the CLI arguments altogether. I tested this by running the CLI string:

inkscape -f mendel/sheets/frame_base.svg -A mendel/sheets/frame_base.pdf -z

.. manually on the command line. That would work fine, but when Python executed the same thing, the GUI would open and nothing would happen.

This behavior was caused by the shell = True argument to Popen. The documentation states:

The shell argument (which defaults to False) specifies whether to use the shell as the program to execute. If shell is True, it is recommended to pass args as a string rather than as a sequence.

Changing it to shell = False made inkscape work as expected.

Here is my diff:

diff --git a/InkCL.py b/InkCL.py
index 4db94da..a1042dd 100644
--- a/InkCL.py
+++ b/InkCL.py
@@ -8,7 +8,7 @@ def run(*args):
     for arg in args:
         print arg,
     print
-    run = subprocess.Popen(["inkscape"] + list(args), shell = True, stdout = subprocess.PIPE, stderr = subprocess.
+    run = subprocess.Popen(["inkscape"] + list(args) + list(' -z'), shell = False, stdout = subprocess.PIPE, stder
     out,err=[e.splitlines() for e in run.communicate()]
     return run.returncode, out, err
'''

Hopefully that's useful to someone.

bom csv

In case anyone is interested in generating a bom csv, here is a little diff to sort out the columns and such. I just copy and paste this code into bom.py, above the "Printed:" line, then I generated the BOM, then I cut and pasted the csv into another file and imported into a spreadsheet.

diff --git a/bom.py b/bom.py
index 9ca4639..0b96ddb 100755
--- a/bom.py
+++ b/bom.py
@@ -65,6 +65,35 @@ class BOM:
             print >> file, "%3d" % self.vitamins[part], description

         print >> file
+        print >> file, "CSV:"
+
+        if breakdown:
+            longest = 0
+            for ass in self.assemblies:
+                name = ass.replace("_assembly","")
+                longest = max(longest, len(name))
+            for ass in sorted(self.assemblies):
+                name = ass.replace("_assembly","").replace("_"," ").capitalize()
+               print >> file, " %s|" % name,
+            print >> file
+
+        for part in sorted(self.vitamins):
+            if ': ' in part:
+                part_no, description = part.split(': ')
+            else:
+                part_no, description = "", part
+            if breakdown:
+                for ass in sorted(self.assemblies):
+                    bom = self.assemblies[ass]
+                    if part in bom.vitamins:
+                        file.write("%2d|" % bom.vitamins[part])
+                    else:
+                        file.write("  |")
+            print >> file, "%3d|" % self.vitamins[part], description
+
+
+
+        print >> file
         print >> file, "Printed:"
         for part in sorted(self.printed):
             if breakdown:

Quick and dirty, and not a bit elegant, I know. But maybe it saves someone time.

Bom generation under windows

When running under windows, bom generation fails because lines are terminated with CRLF.
When i change bom.py:103 s = line[7:-3](ignore one extra character), everything else seems to work.
Conditionally ignoring CR should fix this issue and allow working under windows

dxf format of the sheets

Is it possible to have the mendel sheets re exported as 2005 dxf format as the holes come out as 21 line cuts which drastically pushes up the price if you want to get these lasercut

Frame martial thickness affect wrong dillhole positions

There is a small Issue when creating your own Mende90 with different frame material. The Postion of a few drillholes is affected by the thickness of the choosen material. So when I create my own Mendel90 with MDF12 plates the drillholes for the fixing blocks moving a little bit up or exactly, away from the edge (around 1mm). This makes it difficult to build the frame.

Project description

Hey! :-)
could you maybe add a github repo description (plus tags), and also describe in the README on top what this project is (about)?
would be appreciated!
robin

list index out of range while generating bom

The stls build fine, but I get this error when the bom gets generated. This is using today's git (3554174) but I've had it before, and have never successfully built a bom. This is an untouched repo, no changes to configuration files.

./make_machine.py mendel
Generating bom ...
Traceback (most recent call last):
File "./make_machine.py", line 17, in
make_machine(sys.argv[1])
File "./make_machine.py", line 10, in make_machine
boms(machine)
File "/home/james/Mendel90/bom.py", line 122, in boms
main.assemblies[stack[-1]].add_part(s)
IndexError: list index out of range

Makefile based build system?

Any interest in a Makefile based build system?

The advantage would be the ability to not recompile/rebuild files that haven't changed. I think right now ./make_machine.py always rebuilds everything, and it takes quite a while to run, even on a very modern/powerful machine.

Just curious.

Blender errors

When running render.py I've got a lot of errors:

seva@sevasoft:~/src/Mendel90$ python ./render.py monsterap
monsterap/render
blender -b  utils/render.blend -P utils/viz.py -- monsterap/stls/x_belt_grip.stl monsterap/render/x_belt_grip.png
read blend: /home/seva/src/Mendel90/utils/render.blend
Error: Node type Material Output doesn't exist anymore, removed
Error: Node type Diffuse BSDF doesn't exist anymore, removed
Error: Node type Material Output doesn't exist anymore, removed
Error: Node type Mix Shader doesn't exist anymore, removed
Error: Node type Diffuse BSDF doesn't exist anymore, removed
Error: Node type Glossy BSDF doesn't exist anymore, removed
Error: Node type Material Output doesn't exist anymore, removed
Error: Node type Emission doesn't exist anymore, removed
monsterap/stls/x_belt_grip.stl
monsterap/render/x_belt_grip.png

7.260000228881836
Traceback (most recent call last):
  File "/home/seva/src/Mendel90/utils/viz.py", line 64, in 
    load_stl(stl)
  File "/home/seva/src/Mendel90/utils/viz.py", line 30, in load_stl
    ob.material_slots.data.active_material = bpy.data.materials[mat]
AttributeError: 'bpy_prop_collection' object has no attribute 'data'

Blender quit

Blender version:

seva@sevasoft:~/src/Mendel90/monsterap$ blender -v
Blender 2.58 (sub 0)
    build date: 2011-08-01
    build time: 03:31:53
    build revision: unknown
    build platform: Linux
    build type: 
    build c flags: -g -O2  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -fopenmp  -msse2  -msse -pipe -fPIC -funsigned-char -fno-strict-aliasing  -Wall -Wcast-align -Werror=declaration-after-statement -Werror=implicit-function-declaration -Werror=return-type -Wstrict-prototypes -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith -Wunused-parameter -Wwrite-strings -Wno-error=unused-but-set-variable
    build c++ flags: -g -O2  -D__STDC_CONSTANT_MACROS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -fopenmp  -msse2  -msse -pipe -fPIC -funsigned-char -fno-strict-aliasing  -Wall -Wno-invalid-offsetof -Wno-sign-compare
    build link flags: -pthread
    build system: CMake
seva@sevasoft:~/src/Mendel90/monsterap$ 

e3D wades block, recessed flat spot

After printing the wades block for the e3d hot end I'm seeing that the hole where the hot end is inserted into the block has a flat spot or is "keyed" yet the hot end itself has no flat spot and is perfectly round.

I feel like I'm missing something but I cannot see how this is supposed to fit together. What am I doing wrong?

Sturdy Frame Right sheet

While printing out sheets for a Sturdy90 I realized the drill points seem to be off for the Frame Right sheet. The Sturdy sheet doesn't seem setup for ATX and Melzi.

scalability on dibond version

I scaled the Mendel90 to have a build area of 24x28x22cm (x,y,z) and there were some problems with the Dibond drawings. (1)The vertical edge of the right stay has a bracket attaching to the air. You can see it in the rendered SCAD. (2)The square tube on the right goes exactly over the holes for the wire ties, and over the holes where the wire exits (through the base) to the power supply. (3) The left stay has a square-bottomed slot which besides the fact that it is not millable with a round router bit, appears to have no purpose. (4) The left stay attaches on top of (not between) the brackets for the main gantry piece. It was necessary to trim a triangle out of the corner of the left stay in order to attach it.

sturdy version with dados instead of fixing blocks, offset for gantry and L/R stays?

I'm going to make a version of the sturdy with 3/4" MDF and instead of using the fixing blocks I want to just put a dado in the base for the gantry and stays. I also want to put dados on either side of the gantry and base for the stays but that dimension seems less critical.

My plan was to simply increase the height of the gantry by the depth of my dado and reference the drill template from the top.

I'm trying to decipher the scad files to see where I can echo/print out the offset of the gantry from the front or rear of the base as well as the left and right stays. Can you provide any guidance to get these dimensions?

I was also planning on just reducing the screw count etc in my head but a way to simply exclude all the fixing blocks would also be helpful.

dibond openscad dxf error

Hey,

I noticed the dibond directory today after doing a git pull, so I tried to build it.

Unfortunately, this command:

openscad -o dibond/sheets/frame_base.dxf dibond/sheets/frame_base_dxf.scad

yields this error:

Current top level object is not a 2D object.

OpenSCAD version 2012.05.12
on Ubuntu 12.04 LTS

Wish I knew more about openscad so I could fix. I guess openscad thinks it's a 3d model instead of 2d.

Dibond crashes at Z_max + X_min

The Dibond version crashes the extruder motor into the into the top z-bar clamp.

This has happened to me a couple of times now. When homing the z-axis while at X-min the extruder motor hits the top z-bar clamp. This prevents the limit-switch from being hit so the motors won't stop running. This causes the z-bar clamp to move out of place and messes up the calibration of the z-length. Steps will also be missed and this causes you to lose the levelling calibration. Also if you're not quick to turn the power of the other z-bar clamp will also be hit. I've replaced them both by now.

Here's a photo of this in practice:
2015-09-27 04 55 43

I don't know if this is a known issue all ready, but I've opened up an issue here because today I found out this bug is also in the models:
screenshot 2015-09-27 05 07 45

Set these three lines almost at the top of main.scad:

X = 1 * X_travel / 2; // - limit_switch_offset;
Y = 0 * Y_travel / 2; // - limit_switch_offset;
Z = 1 * Z_travel;

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.