====== software ====== {{:archive:nopscadlib_parts.png?600}} 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 the tools to modify them. Much of this software is intended to work with the replimat [[:category:controllers|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 === * [[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 === 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 [[https://icestudio.io/|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 [[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 === 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 [[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/ ==== Redox ==== [[https://www.redox-os.org/|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 ==== [[https://www.youtube.com/watch?v=PdKMiFKGQuc|Watch video on YouTube]] * [[https://chocolatey.org/|chocolatey]] doesn't seem to have openscad, arduino, possibly others * [[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, ==== CAD ==== ==== Cloning the git repository ==== * If you haven't already, install git. * [[https://github.com/join|Join Github]] * Using the command line client: ** git --config global user.name "User Name" ** git --config global user.email "user@email.com" ** mkdir ~/Documents/GitHub/replimat ** cd ~/Documents/GitHub/replimat ** git clone https://github.com/timschmidt/replimat.git * 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 [[https://creativepolygon.com/development/starting-with-bpy-blender-python-part-1-installation|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 [[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: // 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 [[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]]. Additional information can be found in the [[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Print_version|OpenSCAD User Manual]] * [[https://github.com/fablabnbg/inkscape-paths2openscad|Inkscape to OpenSCAD converter]] * [[https://github.com/revarbat/openscad_runner|OpenSCAD Runner]] - A Python library to interface with and run the OpenSCAD interpreter * [[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]] * [[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 ==== A [[https://www.freecadweb.org/|FreeCAD]] Replimat library is currently under development. [[https://www.bolts-library.org/en/index.html|BOLTS]] and [[https://github.com/FreeCAD/FreeCAD-library/|FreeCAD Library]] serve as useful starting points. * [[https://github.com/oddtopus/flamingo|Flamingo toolset for frames and pipes]] * [[https://wiki.opensourceecology.org/wiki/OSE_Piping_Workbench|OSE Piping workbench]] * [[https://forum.freecadweb.org/viewtopic.php?f=8&t=62131|McMaster Carr workbench]] ==== Inkscape ==== * [[https://github.com/fablabnbg/inkscape-paths2openscad|Inkscape to OpenSCAD converter]] ==== DXF2Papercraft ==== * [[http://dxf2papercraft.sourceforge.net/|DXF2Papercraft]] ==== 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/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]] ==== LoVR ==== [[https://lovr.org/|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." [[https://lovr.org/docs/Callbacks_and_Modules|LOVR docs]] * [[https://rednuht.org/genetic_cars_2/|HTML5 Genetic Algorithm 2D Car Thingy]] * [[https://www.lua.org/manual/5.4/|Lua manual]] * [[https://lovr.org/docs/Libraries|Libraries]] * [[https://github.com/mcclure/lovr-oculus-mobile|Oculus support]] * [[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 Centering objects in Blender involves Shift-S 1, Shift-S 7 ==== 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 ==== * [[https://github.com/EdwardSmith1884/Multi-View-Silhouette-and-Depth-Decomposition-for-High-Resolution-3D-Object-Representation|3D Object super-resolution]] * [[https://github.com/openMVG/awesome_3DReconstruction_list|Awesome 3D reconstruction list]] ==== CAM ==== * [[https://www.scorchworks.com/Fengrave/fengrave.html|F-Engrave]] * https://github.com/grotius-cnc/QT_CadCam_rev0 * http://jscut.org/ * https://github.com/cncjs/cncjs * https://camotics.org/ * https://wiki.freecadweb.org/Path_Workbench * [[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 ==== * [[http://jasondorie.com/page_cnc.html|reactor]] ==== Nesting ==== * https://svgnest.com/ * https://deepnest.io/ ==== Packaging ==== * [[https://github.com/openzim/mwoffliner|Github: MediaWiki offliner]] * [[https://github.com/salamanred/dump_mediawiki_pages|Github: dump mediawiki pages]] * [[https://doc.wikimedia.org/mediawiki-core/master/php/md_docs_Hooks.html|Mediawiki: How to handle a hook event in an extension]] * [[https://doc.wikimedia.org/mediawiki-core/master/php/md_docs_pageupdater.html|Mediawiki: DerivedPageDataUpdater]] * [[https://www.mediawiki.org/wiki/Manual:Hooks|Mediawiki: Hooks]] ==== Ubuntu ==== * [[https://packaging.ubuntu.com/html/packaging-new-software.html|Ubuntu: Packaging new software]] ==== Windows ==== * [[https://nsis.sourceforge.io/Main_Page|nullsoft scriptable install system]] ==== References ==== * [[https://dspace.mit.edu/handle/1721.1/29225|Automatic 5-axis NC toolpath generation]] * [[https://jordanlewis.org/posts/twitch-live-coding/|How to Run a Live Coding Stream on Twitch using OBS]] * [[https://github.com/rene-dev/knuthcam|Knuthcam]] * [[https://www.wescottdesign.com/articles/pid/pidWithoutAPhd.pdf|PID without a PhD]] * [[https://www.amazon.com/Rust-Programming-Language-Steve-Klabnik/dp/1593278284?tag=replimat-20|The Rust Programming Language]] * [[https://www.dreamsongs.com/Files/PatternsOfSoftware.pdf|Patterns Of Software]] * [[https://reprap.org/wiki/Useful_Software_Packages|Useful software packages]] * https://wiki.shapeoko.com/index.php/CAM * [[https://reprap.org/wiki/RepRap_Options|RepRap Options]] * [[https://upload.wikimedia.org/wikipedia/commons/5/53/Cartesian_to_polar.gif|How to convert from cartesian to polar coordinates]] * [[:file:291498143-minobb-jylanki-2015-06-01-pdf.pdf|An Exact Algorithm for Finding Minimum Oriented Bounding Boxes]] * [[https://www.openvdb.org/|OpenVDB]] * [[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://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]] [[https://www.youtube.com/watch?v=684KSAvYbw4|Watch video on YouTube]] ---- [[https://github.com/timschmidt/replimat/blob/e0bc0b855bb946bab00c75ca0d8b002ae0dc0172/wiki/software.html|Original archived page]] — revision 9651, 2022-08-03T16:49:44+00:00, by Tim.