Software: Difference between revisions

From
No edit summary
 
(109 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[File:NopSCADlib parts.png|thumb]]
Replimat is developed using the [https://git-scm.com/ git] version control system, on the [https://www.github.com/ github] hosting service, in the [https://github.com/timschmidt/replimat replimat git repository] as well as in the repositories of the upstream software projects themselves.
Replimat is developed using the [https://git-scm.com/ git] version control system, on the [https://www.github.com/ github] hosting service, in the [https://github.com/timschmidt/replimat replimat git repository] as well as in the repositories of the upstream software projects themselves.


Follow these instructions to install and use the software portions of the Replimat project and to equip yourself to make modifications to them.  Much of this software is intended to work with the replimat [[Controllers|controller]].
Follow these instructions to install and use the software portions of the Replimat project and the tools to modify them.  Much of this software is intended to work with the replimat [[:Category:Controllers|controller]].


=Setting up prerequisites=
=Setting up prerequisites=
Line 7: Line 9:
===Fedora===
===Fedora===
Open a terminal and type the following:
Open a terminal and type the following:
  sudo dnf install git openscad rust cargo rabbitvcs-nautilus rabbitvcs-gedit rabbitvcs-cli kicad arduino keepassxc yosys gimp inkscape vim
  sudo dnf install git openscad rust cargo kicad keepassxc yosys gimp inkscape vim freecad


Some distributions, such as 64 bit Fedora, put 64 bit libraries in the /usr/lib64 directory, whereas nautilus-python (the program that lets us extend nautilus) assumes all libraries are in the /usr/lib directory. This is a nautilus-python bug. The current workaround is to create a symlink:
Some distributions, such as 64 bit Fedora, put 64 bit libraries in the /usr/lib64 directory, whereas nautilus-python (the program that lets us extend nautilus) assumes all libraries are in the /usr/lib directory. This is a nautilus-python bug. The current workaround is to create a symlink:
  ln -s /usr/lib64/libpython2.6.so /usr/lib/libpython2.6.so
  ln -s /usr/lib64/libpython2.6.so /usr/lib/libpython2.6.so


  cd /usr/share/openscad/libraries/
NopSCADlib requires some setup:
sudo git clone https://github.com/nophead/NopSCADlib.git
  sudo sh -c 'echo "export OPENSCADPATH=$HOME/Documents/GitHub/replimat/lib/openscad" >>/etc/profile'


NopSCADlib requires some setup:
===Meikian Live===
sudo sh -c 'echo "export OPENSCADPATH=$HOME/openscad/libraries" >>/etc/profile'
* [https://reprap.org/wiki/Meikian_Live Meikian Live]
Meikian Live (formely named CWLive) is a GNU/Linux live distribution initially focused on Clone Wars community, but intended to all the RepRap users and developers. Based on Debian GNU/Linux, it includes most of the Software, Firmware, useful links and other related stuff you can use on a day to day as a reprapper.


===Pop! OS===
===Pop! OS===
  sudo apt install meld git openscad rustc cargo rabbitvcs-nautilus rabbitvcs-gedit rabbitvcs-cli kicad arduino gnome-tweak-tool obs-studio obs-plugins fritzing subversion keepassxc yosys openscad freecad gimp inkscape cura exfat-fuse python3-markdown codespell peek autokey filelight yagv vim vokoscreen-ng
  sudo apt install meld git openscad rustc cargo rabbitvcs-nautilus rabbitvcs-gedit rabbitvcs-cli kicad arduino gnome-tweak-tool obs-studio obs-plugins fritzing subversion keepassxc yosys openscad freecad gimp inkscape cura exfat-fuse python3-markdown codespell peek autokey filelight yagv vim vokoscreen-ng libserialport0 patchelf solvespace
 
cd /usr/share/openscad/libraries/
sudo git clone https://github.com/nophead/NopSCADlib.git


To get the latest IceStudio, download the appimage from [https://icestudio.io/ icestudio.io]
To get the latest IceStudio, download the appimage from [https://icestudio.io/ icestudio.io]


NopSCADlib requires some setup:
NopSCADlib requires some setup:
  sudo sh -c 'echo "export OPENSCADPATH=$HOME/openscad/libraries" >>/etc/profile'
  sudo sh -c 'echo "export OPENSCADPATH=$HOME/Documents/GitHub/replimat/lib/openscad" >>/etc/profile'


Add the following to /etc/profile as well
Add the following to /etc/profile as well
  if [ -d "$HOME/openscad/libraries/NopSCADlib/scripts/" ] ; then
  if [ -d "$HOME/Documents/GitHub/replimat/lib/openscad/NopSCADlib/scripts/" ] ; then
   PATH="$PATH:$HOME/openscad/libraries/NopSCADlib/scripts/"
   PATH="$PATH:$HOME/Documents/GitHub/replimat/lib/openscad/NopSCADlib/scripts/"
  fi
  fi


* [https://bugs.launchpad.net/ubuntu/+source/arduino/+bug/1916278 Arduino doesn't run]
[https://bugs.launchpad.net/ubuntu/+source/arduino/+bug/1916278 Arduino doesn't run] out of the box on recent Ubuntu releases.  We need to patch a library to allow it to work:
 
sudo patchelf --add-needed /usr/lib/x86_64-linux-gnu/libserialport.so.0 /usr/lib/x86_64-linux-gnu/liblistSerialsj.so.1.4.0
 
Download and unpack [https://github.com/MarlinFirmware/U8glib-HAL/archive/refs/heads/master.zip U8glib-HAL arduino library] into ~/Arduino/libraries/
 
Download [https://github.com/MarlinFirmware/Marlin/archive/2.0.x.zip Marlin firmware] and unpack into ~/Documents/GitHub/Marlin/


===Ubuntu===
===Ubuntu===
  sudo apt install meld git openscad rustc cargo rabbitvcs-nautilus rabbitvcs-gedit rabbitvcs-cli kicad arduino gnome-tweak-tool obs-studio obs-plugins fritzing subversion keepassxc yosys openscad freecad gimp inkscape cura exfat-fuse python3-markdown codespell ubuntu-gnome-default-settings vanilla-gnome-default-settings vanilla-gnome-desktop ubuntu-gnome-desktop peek filelight yagv vim vokoscreen-ng
  sudo apt install meld git openscad rustc cargo rabbitvcs-nautilus rabbitvcs-gedit rabbitvcs-cli kicad arduino gnome-tweak-tool obs-studio obs-plugins fritzing subversion keepassxc yosys openscad freecad gimp inkscape cura exfat-fuse python3-markdown codespell ubuntu-gnome-default-settings vanilla-gnome-default-settings vanilla-gnome-desktop ubuntu-gnome-desktop peek filelight yagv vim vokoscreen-ng libserialport0 patchelf solvespace
 
cd /usr/share/openscad/libraries/
sudo git clone https://github.com/nophead/NopSCADlib.git


NopSCADlib requires some setup:
NopSCADlib requires some setup:
  sudo sh -c 'echo "export OPENSCADPATH=$HOME/openscad/libraries" >>/etc/profile'
  sudo sh -c 'echo "export OPENSCADPATH=$HOME/Documents/GitHub/replimat/lib/openscad" >>/etc/profile'


Ubuntu 20.10 requires a symlink in /usr/bin for the ImageMagick command line utility
Ubuntu 20.10 requires a symlink in /usr/bin for the ImageMagick command line utility:
  ln -s /usr/bin/convert /usr/bin/magick
  sudo ln -s /usr/bin/convert /usr/bin/magick


* [https://bugs.launchpad.net/ubuntu/+source/arduino/+bug/1916278 Arduino doesn't run]
[https://bugs.launchpad.net/ubuntu/+source/arduino/+bug/1916278 Arduino doesn't run] out of the box on recent Ubuntu releases.  We need to patch a library to allow it to work:


  sudo apt install libserialport0 patchelf
sudo patchelf --add-needed /usr/lib/x86_64-linux-gnu/libserialport.so.0 /usr/lib/x86_64-linux-gnu/liblistSerialsj.so.1.4.0


  sudo patchelf --add-needed /usr/lib/x86_64-linux-gnu/libserialport.so.0 /usr/lib/x86_64-linux-gnu/liblistSerialsj.so.1.4.0
Download and unpack [https://github.com/MarlinFirmware/U8glib-HAL/archive/refs/heads/master.zip U8glib-HAL arduino library] into ~/Arduino/libraries/


* Marlin
Download [https://github.com/MarlinFirmware/Marlin/archive/2.0.x.zip Marlin firmware] and unpack into ~/Documents/GitHub/Marlin/
* U8glib-HAL
 
===Meikian Live===
* [https://reprap.org/wiki/Meikian_Live Meikian Live]
Meikian Live (formely named CWLive) is a GNU/Linux live distribution initially focused on Clone Wars community, but intended to all the RepRap users and developers. Based on Debian GNU/Linux, it includes most of the Software, Firmware, useful links and other related stuff you can use on a day to day as a reprapper.


==Redox==
==Redox==
Line 66: Line 64:
==Windows==
==Windows==
<youtube>PdKMiFKGQuc</youtube>
<youtube>PdKMiFKGQuc</youtube>
* [https://chocolatey.org/install Install chocolatey]
* [https://chocolatey.org/ chocolatey] doesn't seem to have openscad, arduino, possibly others
** openscad, openspaces, github desktop, freecad, inkscape
* [https://just-install.github.io/ Just-install] does not seem to have openscad
* [https://www.windowsremix.com/ Windows Remix] seems to have openscad
** openscad, github desktop, freecad, inkscape, gimp, arduino, cura,


=Cloning the git repository=
=CAD=
==Cloning the git repository==
* If you haven't already, install git.
* If you haven't already, install git.
* [https://github.com/join Join Github]
* [https://github.com/join Join Github]
Line 75: Line 76:
** git --config global user.name "User Name"
** git --config global user.name "User Name"
** git --config global user.email "user@email.com"
** git --config global user.email "user@email.com"
** mkdir ~/Documents/GitHub/replimat
** cd ~/Documents/GitHub/replimat
** git clone https://github.com/timschmidt/replimat.git
** git clone https://github.com/timschmidt/replimat.git
* Using the Github Desktop:
* Using the Github Desktop:


=Rust=
==Blender==
* https://arewegameyet.rs/
Using blender from Python requires the 'bpy' module which does not install correctly on Ubuntu out of the box. Installation details [https://creativepolygon.com/development/starting-with-bpy-blender-python-part-1-installation here].
* https://crates.io/crates/scad
* https://github.com/I3ck/rust-3d
* https://docs.rs/rust-3d/0.27.0/rust_3d/
* https://github.com/carlmartus/rscsg
* https://docs.rs/implicit3d/0.13.1/implicit3d/
* https://crates.io/crates/implicit3d
* http://implicitcad.org/editor
* https://github.com/hmeyer/truescad
* [https://github.com/three-rs/three Three-rs]
 
=CAD=
* [https://github.com/Irev-Dev/curated-code-cad Curated code CAD]
* [https://solvespace.com/ Solvespace]
* [http://shapesmith.net/ Shapesmith.net]
* [https://www.mattkeeter.com/projects/antimony/3/ Antimony]
* [https://github.com/libfive/libfive Libfive]
 
==play.replimat.org==
* [https://play.gridbeam.xyz play.gridbeam.xyz CAD]
* [https://github.com/timschmidt/play.gridbeam.xyz play.gridbeam.com github]
** apt install npm
** npm install gatsby-cli
** git clone https://github.com/timschmidt/play.gridbeam.xyz
** npm install --force
** gatsby build
* To do
** bind delete key to delete action
** correct initial frame lengths
** address loss-of-focus on menu close
** correct axes
** begin populating part catalog
** toggle for less reusable larger set
 
==LeoCAD / LDraw==
The term "LDraw" can be used to refer to the original DOS based LDraw program, the LDraw parts library, the LDraw file format or the LDraw System Of Tools.
 
* [https://github.com/e-Mole/m-Bitbeam_Parts_for_LDraw Bitbeam parts for LDraw]
* LDraw Parts Library: Parts library
* LDview: Viewer
* MLCad: Editor
* [https://www.leocad.org/ LeoCAD]: Editor
* LDCad: Editor
* LPub3D: Publishing tool
* LICreator: Publishing tool
* LSynth: Add-On
* LDGlite: Viewer
* POV-Ray: Renderer
* LGEO Parts Library: POV-Ray parts library
* MPDCenter: Utility
* LDFind: Utility
* LSulpt: Converter
* Offline Parts Catalog: Catalog


==OpenSCAD==
==OpenSCAD==
Replimat parts are modeled with important features oriented toward the X axis origin, and centered on the grid location closest to the origin or with a mounting hole centered at that location.
Replimat parts are modeled with important features oriented toward the X axis origin, and centered on the grid location closest to the origin or with a mounting hole centered at that location.


A set of CAD functions are available as part of the [https://github.com/SolidCode/MCAD MCAD] library for the free and open source [http://www.openscad.org/ OpenSCAD] [https://en.wikipedia.org/wiki/Constructive_solid_geometry constructive solid geometry] software, mostly within [https://github.com/SolidCode/MCAD/blob/master/gridbeam.scad gridbeam.scad].  It contains functions for solid and hollow beams of configurable size and orientation, flat surfaces with and without notched corners, and easy hole-aligned translation:
A set of CAD functions are available as part of the [https://github.com/nophead/NopSCADlib NopSCADlib] library for the free and open source [http://www.openscad.org/ OpenSCAD] [https://en.wikipedia.org/wiki/Constructive_solid_geometry constructive solid geometry] software.  It contains functions for tubular and T slot frames of configurable size and orientation, flat surfaces with and without notched corners, many additional parts, and easy hole-aligned translation:


  // zFrame(segments) - create a vertical frame 'segments' long
  // grid_frame_z(segments, material, width) - create a vertical frame 'segments' long
  // xFrame(segments) - create a horizontal frame along the X axis
  // grid_frame_x(segments, material, width) - create a horizontal frame along the X axis
  // yFrame(segments) - create a horizontal frame along the Y axis
  // grid_frame_y(segments, material, width) - create a horizontal frame along the Y axis
  // topPlate(width, depth, corners) - create a plate width and depth in 'segments', corners == 1 notches corners
  // grid_nut()
  // bottomPlate(width, depth, corners) - like topPlate, but aligns plate to underside of frames
// grid_bolt_z(length, width)
// backPlate(width, height, corners) - like topPlate but aligns plate to back side of frames
// grid_bolt_x(length, width)
  // frontPlate(width, height, corners) - like topPlate, but aligns plate to front side of frames
// grid_bolt_y(length, width)
  // translateFrame([x, y, z]) - translate frames or plates in X, Y, or Z axes in units 'segments'
// grid_bolt_nut_z(length, width)
// grid_plate_dxf(wide, deep, hole_radius, corner_radius, width) - create a plate width and depth in 'segments'
  // grid_plate_stl(wide, deep, hole_radius, corner_radius, width)
  // grid_pillow_block()
  // grid_translate([x, y, z]) - translate frames or plates in X, Y, or Z axes in units 'segments'


There's also an [https://github.com/ondratu/bitbeam-lib M-Bitbeam OpenSCAD library] and another [https://www.thingiverse.com/thing:51159 Gridbeam and Bitbeam OpenSCAD and OpenJSCAD library].
There's also an [https://github.com/ondratu/bitbeam-lib M-Bitbeam OpenSCAD library] and another [https://www.thingiverse.com/thing:51159 Gridbeam and Bitbeam OpenSCAD and OpenJSCAD library].
Line 154: Line 109:
* [https://github.com/revarbat/openscad_docsgen OpenSCAD Documentation Generator] - This package generates wiki-ready GitHub flavored markdown documentation pages from in-line source code comments. This is similar to Doxygen or JavaDoc, but designed for use with OpenSCAD code. Example images can be generated automatically from short example scripts
* [https://github.com/revarbat/openscad_docsgen OpenSCAD Documentation Generator] - This package generates wiki-ready GitHub flavored markdown documentation pages from in-line source code comments. This is similar to Doxygen or JavaDoc, but designed for use with OpenSCAD code. Example images can be generated automatically from short example scripts
* Parts and projects in the Replimat github repository are implemented using [https://github.com/nophead/NopSCADlib NopSCADlib]
* Parts and projects in the Replimat github repository are implemented using [https://github.com/nophead/NopSCADlib NopSCADlib]
* [https://github.com/moehriegitt/hob3l Github: Hob3l - Replace 3D CSG by Fast 2D Polygon Clipping for slicing for 3d printing]
* [https://www.reddit.com/r/openscad/comments/p43xqc/unionround_module/ Unionround() for fast fillets and chamfers]
* [http://graphscad.blogspot.com/ Graphscad]


==FreeCAD==
==FreeCAD==
Line 159: Line 117:
* [https://github.com/oddtopus/flamingo Flamingo toolset for frames and pipes]
* [https://github.com/oddtopus/flamingo Flamingo toolset for frames and pipes]
* [https://wiki.opensourceecology.org/wiki/OSE_Piping_Workbench OSE Piping workbench]
* [https://wiki.opensourceecology.org/wiki/OSE_Piping_Workbench OSE Piping workbench]
 
* [https://forum.freecadweb.org/viewtopic.php?f=8&t=62131 McMaster Carr workbench]
==OpenJSCAD==
* [https://www.openjscad.xyz/ OpenJSCAD 2.0]
* https://openjscad.org/
* [https://johnwebbcole.gitlab.io/jscad-utils/ OpenJSCAD utils]
* [[OpenJSCAD Wiki Integration Test]]
* [https://danmarshall.github.io/jscad-gallery/ OpenJSCAD gallery]
* [https://www.thingiverse.com/thing:51159 Gridbeam and Bitbeam OpenSCAD and OpenJSCAD library]
* [https://github.com/z3dev/openscad-openjscad-translator OpenSCAD to OpenJSCAD translator]


==Inkscape==
==Inkscape==
* [https://github.com/fablabnbg/inkscape-paths2openscad Inkscape to OpenSCAD converter]
* [https://github.com/fablabnbg/inkscape-paths2openscad Inkscape to OpenSCAD converter]
==CGAL==
* [https://doc.cgal.org/latest/Manual/packages.html CGAL Manual]
* [https://doc.cgal.org/latest/Straight_skeleton_2/index.html 2D polygon offsetting with CGAL], [https://www.sthu.org/blog/14-skeleton-offset-topology/index.html paper]


==DXF2Papercraft==
==DXF2Papercraft==
* [http://dxf2papercraft.sourceforge.net/ DXF2Papercraft]
* [http://dxf2papercraft.sourceforge.net/ DXF2Papercraft]
==Thingiverse==
https://www.thingiverse.com/tag:openstructures
==Solvespace==
* [https://solvespace.com/index.pl Solvespace parametric 2D/3D CAD]
==Finite element analysis==
* [http://www.warp3d.net/ Warp3D]
==Voxel==
* [https://ephtracy.github.io/ MagicaVoxel]


==CADQuery==
==CADQuery==
Code CAD based on the Python programming language and PythonOCC  [https://cadquery.readthedocs.io/en/latest/intro.html Docs]
* [https://github.com/CadQuery/cadquery CADQuery]
* [https://github.com/CadQuery/cadquery CADQuery]
* [https://github.com/CadQuery/CQ-editor CADQuery Editor]
* [https://github.com/cqparts/cqparts CADQuery Parts library] analagous to nopSCADlib
* [https://github.com/bernhard-42/jupyter-cadquery Jupyter Notebooks for CADQuery]


==VR==
==[https://lovr.org/ LoVR]==
===[https://www.openspace3d.com/ OpenSpace3D]===
"LÖVR uses a 3D coordinate system with values specified in meters. Negative z values are in front of the camera, positive y values are above the ground, and negative x values are to the left. By default, the coordinate system maps to the VR play area, so the origin is on the ground in the middle of the play space." [https://lovr.org/docs/Callbacks_and_Modules LOVR docs]
<gallery>
OpenSpaces VR PlugIT assessment.png|OpenSpaces VR PlugIT assessment
</gallery>
* [https://immersiveweb.dev WebGL XR]
* [https://modelviewer.dev/ model-viewer]
* [https://rednuht.org/genetic_cars_2/ HTML5 Genetic Algorithm 2D Car Thingy]
* [https://rednuht.org/genetic_cars_2/ HTML5 Genetic Algorithm 2D Car Thingy]
===Unity===
* [https://www.lua.org/manual/5.4/ Lua manual]
* [https://github.com/ExtendRealityLtd/VRTK VRTK]
* [https://lovr.org/docs/Libraries Libraries]
===Garry's mod===
* [https://github.com/mcclure/lovr-oculus-mobile Oculus support]
* [https://www.reddit.com/r/gmod/comments/8i4044/getting_started_with_content_creation/ Getting started with content creation]
* [https://github.com/evanw/csg.js/blob/master/csg.js csg.js] as an example of from-scratch CSG with polygons
* [https://c4scdn.ch/file/data/qvcz5raud5eyrus6yz6i/PHID-FILE-hrilxkvt4repl2ud64mj/report.pdf lovr calling native code through FFI on the Quest]
* [https://github.com/mcclure/rovr Rovr Rust reimplementation of the Lovr API] - lovr.filesystem only ATM
* [https://github.com/alloverse/lovr-letters lovr-letters]
* [https://alloverse.com/ Alloverse]
* [https://github.com/mcclure/lodr hot-loader for lovr]
* [https://github.com/jmiskovic/vrapper generative geometry lovr scenes]
* [https://github.com/alloverse/lovr-pointdrag lovr point and drag sample]
* [https://wiki.termux.com/wiki/Internal_and_external_storage Termux wiki: Internal and external storage]
* [https://github.com/alloverse/allo-assets Alloverse assets]
* [https://github.com/alloverse/allo-shapes Alloverse shapes]
* [https://github.com/jmiskovic/lovr-procmesh This repository is collection of Lua libraries for creating meshes from scratch and for constructing more complex objects from primitives.]
* [https://github.com/bjornbytes/lovr-grid Lovr grid]
* [https://github.com/mcclure/lovr-ent Lovr entity object engine]
* [https://github.com/bjornbytes/handy Lovr controller controller]
* [https://lovr.org/docs/v0.15.0/Animation/2_Bone_IK 2 Bone inverse kinematics]
* [https://github.com/Voxar/lovr-handtracking-skinning Lovr hand tracking skinning]
* [https://github.com/Ebiroll/qemu_esp32 Github: Qemu-ESP32]
* [https://github.com/buserror/simavr Github: Simavr]
* [https://wiki.qemu.org/Documentation/Platforms/ARM Qemu.org: ARM Platforms]
termux-setup-storage
ln -s /storage/emulated/0/Android/data/org.lovr.hotswap/files/.lodr/ lovr


==Bills of material==
Centering objects in Blender involves Shift-S 1, Shift-S 7
* [https://gitbuilding.io/ gitbuilding]
 
==Misc==
* [https://github.com/Irev-Dev/curated-code-cad Curated code CAD]
* [http://shapesmith.net/ Shapesmith.net]
* [https://www.mattkeeter.com/projects/antimony/3/ Antimony]
* [https://github.com/libfive/libfive Libfive]
* [https://docs.racket-lang.org/ruckus/index.html Ruckus: Procedural CAD For Weirdos]


=3D Scanning=
=3D Scanning=
Line 222: Line 182:
* https://wiki.freecadweb.org/Path_Workbench
* https://wiki.freecadweb.org/Path_Workbench
* [https://mkrabset.github.io/krabzcam/krabzcam/index.html KrabzCAM]
* [https://mkrabset.github.io/krabzcam/krabzcam/index.html KrabzCAM]
* [https://wiki.shapeoko.com/index.php/CAM Shapeoko Wiki: CAM]
* [https://github.com/revarbat/Mandoline Github: Mandoline]
* [https://grid.space/kiri/ Kiri:Moto web slicer]
* [https://bitbucket.org/kosme/openscad2cnc/src/master/ OpenSCAD2CNC]
* [https://github.com/koppi/stl2ngc STL2NGC]
* [https://github.com/xenovacivus/PathCAM PathCAM]
* [https://github.com/nathanielstenzel/bucket_mill Bucket_mill]
* [https://hackaday.io/project/3985-bcam-2d-computer-aided-manufacturing BCAM], [https://launchpad.net/~snegovick/+archive/ubuntu/bcam-preview BCAM ppa]
==Images==
==Images==
* [http://jasondorie.com/page_cnc.html reactor]
* [http://jasondorie.com/page_cnc.html reactor]
==Nesting==
==Nesting==
* https://svgnest.com/
* https://svgnest.com/
* https://deepnest.io/
* https://deepnest.io/


=Electronics=
=Packaging=
* [https://pcbmode.com/ PCBmodE]
* [https://github.com/openzim/mwoffliner Github: MediaWiki offliner]
 
* [https://github.com/salamanred/dump_mediawiki_pages Github: dump mediawiki pages]
=Firmware=
* [https://doc.wikimedia.org/mediawiki-core/master/php/md_docs_Hooks.html Mediawiki: How to handle a hook event in an extension]
* https://github.com/timschmidt/buildlog-lasercutter-marlin
* [https://doc.wikimedia.org/mediawiki-core/master/php/md_docs_pageupdater.html Mediawiki: DerivedPageDataUpdater]
* [https://github.com/nerdralph/ArduinoShrink Arduino Shrink]
* [https://www.mediawiki.org/wiki/Manual:Hooks Mediawiki: Hooks]
 
==Ubuntu==
=Database=
* [https://packaging.ubuntu.com/html/packaging-new-software.html Ubuntu: Packaging new software]
[[:Category:Parts]], [[:Category:Techniques]], and [[:Category:Projects]] are organized and labeled consistently with Flourish ORM naming conventions to facilitate easy ingestion and complex manipulation of project data.  Using [https://www.php.net/manual/en/intro-whatis.php PHP] allows for easy interoperation with [https://www.wordpress.org Wordpress] and [https://www.mediawiki.org MediaWiki].
==Windows==
 
* [https://nsis.sourceforge.io/Main_Page nullsoft scriptable install system]
* [https://getcomposer.org/ Composer]
* [https://flourishlib.com/docs/ObjectRelationalMapping.html Flourish ORM]


=References=
=References=
Line 257: Line 222:
* [https://doi.org/10.1371/journal.pone.0225795 Parametric CAD modeling for open source scientific hardware: Comparing OpenSCAD and FreeCAD Python scripts]
* [https://doi.org/10.1371/journal.pone.0225795 Parametric CAD modeling for open source scientific hardware: Comparing OpenSCAD and FreeCAD Python scripts]
* [https://brickit.app/ Brickit App]
* [https://brickit.app/ Brickit App]
 
* [https://arxiv.org/pdf/2108.08477.pdf Image2Lego: Customized LEGO® Set Generation from Images]
* [https://wiki.shapeoko.com/index.php/CAM Shapeoko: CAM]
* [http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/ Seemingly impossible functional programs]
* [http://www.virtualmec.com Virtual Meccano]
* [https://github.com/openethereum/parity-ethereum Github: Parity Ethereum (Rust)]
* [https://github.com/paritytech/polkadot Github: Polkadot (Rust)]
* [https://github.com/Evil-Spirit/Adjacent GitHub: Geometric constraint solver]
* [https://danielkeep.github.io/tlborm/book/README.html The Little Book of Rust Macros]
<youtube>684KSAvYbw4</youtube>
<youtube>684KSAvYbw4</youtube>
==Computer vision==
* [https://healeycodes.com/computer-vision-and-embroidery/ Computer vision and embroidery - python, scipy, opencv]
== To Be Sorted ==
* [https://news.ycombinator.com/item?id=27432101 Snowtrack version control for graphic designers and 3D artists]
* https://librecad.org/
* https://github.com/Qucs
* http://www.geda-project.org/
* http://www.clifford.at/yosys/
* https://symbiflow.github.io/
* https://www.chisel-lang.org/
* https://theopenroadproject.org/
* https://github.com/verilog-to-routing/vtr-verilog-to-routing
* https://www.coursera.org/learn/vlsi-cad-logic
* https://www.coursera.org/learn/vlsi-cad-layout
* http://www.kicad-pcb.org/
* https://en.wikipedia.org/wiki/TopoR
* https://cnc.js.org/
* https://wiki.shapeoko.com/index.php/CAM
* https://www.allpcb.com/
* https://jlcpcb.com/
* https://www.pcbway.com/
* https://efabless.com/
* https://github.com/jbuckmccready/CavalierContours
* https://github.com/fdarling/inkscape-laser-cutter-extension

Latest revision as of 16:49, 3 August 2022

Replimat is developed using the git version control system, on the github hosting service, in the replimat git repository as well as in the repositories of the upstream software projects themselves.

Follow these instructions to install and use the software portions of the Replimat project and the tools to modify them. Much of this software is intended to work with the replimat controller.

Setting up prerequisites

Linux

Fedora

Open a terminal and type the following:

sudo dnf install git openscad rust cargo kicad keepassxc yosys gimp inkscape vim freecad

Some distributions, such as 64 bit Fedora, put 64 bit libraries in the /usr/lib64 directory, whereas nautilus-python (the program that lets us extend nautilus) assumes all libraries are in the /usr/lib directory. This is a nautilus-python bug. The current workaround is to create a symlink:

ln -s /usr/lib64/libpython2.6.so /usr/lib/libpython2.6.so

NopSCADlib requires some setup:

sudo sh -c 'echo "export OPENSCADPATH=$HOME/Documents/GitHub/replimat/lib/openscad" >>/etc/profile'

Meikian Live

Meikian Live (formely named CWLive) is a GNU/Linux live distribution initially focused on Clone Wars community, but intended to all the RepRap users and developers. Based on Debian GNU/Linux, it includes most of the Software, Firmware, useful links and other related stuff you can use on a day to day as a reprapper.

Pop! OS

sudo apt install meld git openscad rustc cargo rabbitvcs-nautilus rabbitvcs-gedit rabbitvcs-cli kicad arduino gnome-tweak-tool obs-studio obs-plugins fritzing subversion keepassxc yosys openscad freecad gimp inkscape cura exfat-fuse python3-markdown codespell peek autokey filelight yagv vim vokoscreen-ng libserialport0 patchelf solvespace

To get the latest IceStudio, download the appimage from icestudio.io

NopSCADlib requires some setup:

sudo sh -c 'echo "export OPENSCADPATH=$HOME/Documents/GitHub/replimat/lib/openscad" >>/etc/profile'

Add the following to /etc/profile as well

if [ -d "$HOME/Documents/GitHub/replimat/lib/openscad/NopSCADlib/scripts/" ] ; then
  PATH="$PATH:$HOME/Documents/GitHub/replimat/lib/openscad/NopSCADlib/scripts/"
fi

Arduino doesn't run out of the box on recent Ubuntu releases. We need to patch a library to allow it to work:

sudo patchelf --add-needed /usr/lib/x86_64-linux-gnu/libserialport.so.0 /usr/lib/x86_64-linux-gnu/liblistSerialsj.so.1.4.0

Download and unpack U8glib-HAL arduino library into ~/Arduino/libraries/

Download Marlin firmware and unpack into ~/Documents/GitHub/Marlin/

Ubuntu

sudo apt install meld git openscad rustc cargo rabbitvcs-nautilus rabbitvcs-gedit rabbitvcs-cli kicad arduino gnome-tweak-tool obs-studio obs-plugins fritzing subversion keepassxc yosys openscad freecad gimp inkscape cura exfat-fuse python3-markdown codespell ubuntu-gnome-default-settings vanilla-gnome-default-settings vanilla-gnome-desktop ubuntu-gnome-desktop peek filelight yagv vim vokoscreen-ng libserialport0 patchelf solvespace

NopSCADlib requires some setup:

sudo sh -c 'echo "export OPENSCADPATH=$HOME/Documents/GitHub/replimat/lib/openscad" >>/etc/profile'

Ubuntu 20.10 requires a symlink in /usr/bin for the ImageMagick command line utility:

sudo ln -s /usr/bin/convert /usr/bin/magick

Arduino doesn't run out of the box on recent Ubuntu releases. We need to patch a library to allow it to work:

sudo patchelf --add-needed /usr/lib/x86_64-linux-gnu/libserialport.so.0 /usr/lib/x86_64-linux-gnu/liblistSerialsj.so.1.4.0

Download and unpack U8glib-HAL arduino library into ~/Arduino/libraries/

Download Marlin firmware and unpack into ~/Documents/GitHub/Marlin/

Redox

Redox OS is an operating system written in the Rust programming language, and a high-value build target for Replimat. Expanding the instructions here, for installing the software necessary for building and modifying Replimat to work on Redox OS would be an excellent way to contribute to the project.

Windows

  • chocolatey doesn't seem to have openscad, arduino, possibly others
  • Just-install does not seem to have openscad
  • Windows Remix seems to have openscad
    • openscad, github desktop, freecad, inkscape, gimp, arduino, cura,

CAD

Cloning the git repository

  • If you haven't already, install git.
  • Join Github
  • Using the command line client:
  • Using the Github Desktop:

Blender

Using blender from Python requires the 'bpy' module which does not install correctly on Ubuntu out of the box. Installation details here.

OpenSCAD

Replimat parts are modeled with important features oriented toward the X axis origin, and centered on the grid location closest to the origin or with a mounting hole centered at that location.

A set of CAD functions are available as part of the NopSCADlib library for the free and open source OpenSCAD constructive solid geometry software. It contains functions for tubular and T slot frames of configurable size and orientation, flat surfaces with and without notched corners, many additional parts, and easy hole-aligned translation:

// grid_frame_z(segments, material, width) - create a vertical frame 'segments' long
// grid_frame_x(segments, material, width) - create a horizontal frame along the X axis
// grid_frame_y(segments, material, width) - create a horizontal frame along the Y axis
// grid_nut()
// grid_bolt_z(length, width)
// grid_bolt_x(length, width)
// grid_bolt_y(length, width)
// grid_bolt_nut_z(length, width)
// grid_plate_dxf(wide, deep, hole_radius, corner_radius, width) - create a plate width and depth in 'segments'
// grid_plate_stl(wide, deep, hole_radius, corner_radius, width)
// grid_pillow_block()
// grid_translate([x, y, z]) - translate frames or plates in X, Y, or Z axes in units 'segments'

There's also an M-Bitbeam OpenSCAD library and another Gridbeam and Bitbeam OpenSCAD and OpenJSCAD library.

Additional information can be found in the OpenSCAD User Manual

FreeCAD

A FreeCAD Replimat library is currently under development. BOLTS and FreeCAD Library serve as useful starting points.

Inkscape

DXF2Papercraft

CADQuery

Code CAD based on the Python programming language and PythonOCC Docs

LoVR

"LÖVR uses a 3D coordinate system with values specified in meters. Negative z values are in front of the camera, positive y values are above the ground, and negative x values are to the left. By default, the coordinate system maps to the VR play area, so the origin is on the ground in the middle of the play space." LOVR docs

termux-setup-storage
ln -s /storage/emulated/0/Android/data/org.lovr.hotswap/files/.lodr/ lovr

Centering objects in Blender involves Shift-S 1, Shift-S 7

Misc

3D Scanning

CAM

Images

Nesting

Packaging

Ubuntu

Windows

References