Main Page
From Opencam
Contents |
OpenCAM
Notes, code, and discussion about opensource CAM software.
This started with a thread on cnczone: http://www.cnczone.com/forums/showthread.php?t=18861&page=1&pp=15
Types of Programs
CAD
CAD programs create geometry (points, curves, surfaces, solids, etc.)
OpenSource CAD
- Blender
- Free-CAD
- A link page with Linux CAD links
- BRLCad, a powerful Constructive Solid Geometry (CSG) solid modeling system
- PythonCAD, a Python based 2D? CAD program
- Cadvas, small python based program
- Varkon, framework for a CAD system
- Graphite One, open source but commercial CAD written in python, using Opencascade
- QCad, uses QT
- Open CASCADE, 3D modeling & numerical simulation development platform
Commercial CAD
- Autocad
- Rhino
- Multisurf
- too many to list...
CAD Theory/Algorithms
- Relational Geometry Synthesis: Part I Framework, JS Letcher, DM Shook, SG Shepherd - Computer Aided Geometric Design, 1995. An introduction to relational geometry, the authors work at Aerohydro who make MultiSurf. They claim to have patents related to relational geometry - how do these affect an opensource project ? http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TYR-3YF4NFX-C&_coverDate=11%2F30%2F1995&_alid=419586168&_rdoc=1&_fmt=&_orig=search&_qd=1&_cdi=5625&_sort=d&view=c&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=3d945696f657f477185ce132675b0a29
CAM
CAM programs take geometry as input and create toolpaths(usually G-code).
- OpenSource CAM:
- gCncCam Linux CAM Tool for converting CAD Drawings like DXF-Files to G-Code
- dxf2gcode by christian kohloeffel, verified to work on qcad-generated dxf files (en)
- "Optimal Controller for a 5-axis Machine Tool", GPL (I've got it to compile w/OCC61,QT3.3,AMD64 - mpictor.aT.yahoo)
- GnuCAM or GCAM Linux with Windows package available as of January.
- Image to G-code
- HP2XX, HP-GL plotter to G-code converter
- APTOS, open source project to update APT
- dxf2cnc, C sourcecode to convert dxf to G-code
- cam.py, MIT written program to convert different formats to G-code
- ACE converter, dxf to G-code converter
- ps2gcode, postscript to G-code converter
- Codeg, command line tool to convert dxf to G-code
- image-to-gcode, Chris Radek's image-to-gcode program in python
- SPCE, Bitmap to GCODE converter
- bmp2cnc- download a *.tgz file that Matt Shaver wrote for converting bitmaps to g-code
- Chris Radek's TrueTypeTracer
- cxf2cnc - single line font tracer
- Jon Elson's C Source Code to create GCODE
- SagCAD 2D CAD/CAM
- cam-occ A CAM program based on the OpenCASCADE libraries
- CNC-Suite is an Free & Open Enviroment for 2D and 3D CNC-Machines
- Freeware CAM (not open source):
- Commercial CAM:
References
To search for papers, use scholar.google.com; then click the web search link to (try) to find the full text of the paper on-line. Also see http://www.inspire.net/otherstates.html for statewide virtual libraries
Call for action. Building CAD/CAM/CAE development resource index - http://opencascade.blogspot.com/2009/01/call-for-action-building-cadcamcae.html
Toolpath Generation
- Curvilinear Tool Paths for Pocket Machining, Michael Bieterman, Mathematics & Computing Technology, The Boeing Company, http://www.ima.umn.edu/industrial/2000-2001/bieterman/bieterman.pdf
- shape morphing http://www.cs.bath.ac.uk/pubdb/download.php?resID=192
- Cutter path generation for 2.5D milling by combining multiple different cutter path patterns http://www.glue.umd.edu/~skgupta/Publication/IJPR04_Yao.pdf
- A Classified Bibliography of Literature on NC Tool Path Generation Preprint version of article that appeared in Computer-Aided Design, Vol 29, No 3, March 1997. http://www.cgl.uwaterloo.ca/~smann/Papers/survey2.pdf
- Algorithms for Real-Time Tool Path Generation http://www.bmf.hu/conferences/Neumann/Hermann.pdf
- Toolpath generation along directions of maximum kinematic performance; a first cut at machine-optimal paths, Kim T.; Sarma S.E., Computer-Aided Design, Volume 34, Number 6, May 2002, pp. 453-468(16)
- Curve fitting with arc splines for NC toolpath generation, Yeung, Millan K; Walton, Desmond J, Computer Aided Design. Vol. 26, no. 11, pp. 845-849. 1994
- Robust Feedrate Selection for 3-Axis NC Machining Using Discrete Models, B. K. Fussell, R. B. Jerard, and J. G. Hemmett, Journal of Manufacturing Science and Engineering -- May 2001 -- Volume 123, Issue 2, pp. 214-224
- Circular hole recognition for STL-based toolpath generation, Xiuzhi Qu, Brent Stucker, Rapid Prototyping Journal, 11/3 (2005)
- Die and mold finishing--how fast?, Mason, F, Manufacturing Engineering (USA). Vol. 115, no. 3, pp. 35-36, 39-40, 42, 45, 47-48. Sept. 1995
- Boundary-conformed toolpath generation for trimmed free-form surfaces via Coons reparametrization, Yang D.C.H.1; Chuang J.J.; Han Z.; Ding S., Journal of Materials Processing Technology, Volume 138, Number 1, 20 July 2003, pp. 138-144(7)
- Guide curve based interpolation scheme of parametric curves for precision CNC machining, YUWEN SUN (1) ; JUN WANG (2) ; DONGMING GUO (1) ; , (Int. j. mach. tools manuf.) , 2006, vol. 46, no3-4, pp. 235-242 [8 page(s) (article)] (16 ref.)
- Integrated Steepest-Directed and Iso-Cusped toolpath generation for three-axis CNC machining of sculptured parts, CHEN Z. C. (1) ; VICKERS G. W. (2) ; DONG Z. (2), (J. manuf. syst.) , 2003, vol. 22, no3, pp. 190-201 [12 page(s) (article)] (13 ref.)
- Tool Path Generation for Freeform Surface Models, Elber, G. and Cohen, E., CAD, Vol. 26, pp. 490-496, June 1994, http://www.cs.utah.edu/gdc/publications/papers/elber94d.pdf
Simulation/Backplot/Verify
- A CUTTER MOTION SIMULATION SYSTEM http://www.sdpsnet.org/journals/vol4-1/cutter.pdf
- Proof is in the pudding - or toolpath simulation, Kindilien, B, Tooling and Production (USA). Vol. 66, no. 4, pp. 42, 44-45. July 2000
Misc
- CAM for moldmaking, Ragan, J, Tool. Prod. (USA). Vol. 61, no. 2, pp. 73-75. May 1995
- CAD/CAM's expanding toolkit, Destefani, J D, Molding Systems (USA). Vol. 56, no. 2, pp. 36-41. Feb. 1998
- Volume Graphics http://www.cs.sunysb.edu/~vislab/projects/volume/Papers/index.html
Machine Controllers
Machine Controllers take G-code as input and control actual CNC machines
OpenSource Machine Control:
* EMC http://www.linuxcnc.org * AXIS, a Python GUI for EMC/EMC2, http://axis.unpy.net/index.cgi/ * TurboCNC http://www.dakeng.com/turbo.html
Commercial Machine Control:
* Mach 3 http://www.machsupport.com/ * Siemens * Fanuc * IBH Automation http://www.ibhautomation.com/ * etc.
Toolpath Output formats
G-Code:
* RS274, definition of G-code: http://www.isd.mel.nist.gov/documents/kramer/RS274NGC_1.pdf * RS274, version 2: http://www.isd.mel.nist.gov/documents/kramer/RS274NGC_22.pdf
HP/GL:
* ?
STEP-NC:
* An article on STEP-NC: http://www.manufacturingcenter.com/tooling/archives/1205/1205step_nc.asp
Something else
* ?
Geometry Input formats
DXF (Autodesk Drawing eXchange Format):
* Definition by autodesk: http://www.autodesk.com/techpubs/autocad/acad2000/dxf/ * http://www.autodesk.com/techpubs/autocad/acadr14/dxf/ * From the Graphics File Formats FAQ: DXF is probably one of the most widely supported vector formats in the world today. DXF is rich in features, including: support for 3D objects, curves, text, associative dimensioning, and is an easy format to parse. The DXB format is a binary representation of a DXF file and they are usually smaller and faster to load than the equivalent DXF file.
* SDXF, a Python library for writing DXF files http://dxf.stani.be/
IGES (=Initial Graphics Exchange Specification (?)):
* "IGES is a set of protocols for the transfer and display of graphical information on remote devices via a telephone or computer communications network. IGES does not define any new graphical file formats, but instead uses existing formats (such as CGM) to encapsulate graphical data. * IGES in the Graphics File Formats FAQ: http://www.faqs.org/faqs/graphics/fileformats-faq/part3/section-68.html * An article on IGES http://nvl.nist.gov/pub/nistpubs/sp958-lide/246-249.pdf
STL (Stereolithography Interface Format):
* Stl Format Description http://www.sdsc.edu/tmf/Stl-specs/stl.html * http://en.wikipedia.org/wiki/STL_%28file_format%29
STL to DXF conversion
* http://timeguy.com/cradek/stl-to-dxf
ISO 10303 "STEP" AP203 and AP214
* http://en.wikipedia.org/wiki/ISO_10303
Open Source Code, libraries etc
* VTK,The Visualization ToolKit, http://www.vtk.org/ * OpenSceneGraph http://www.openscenegraph.org/ * Coin3D a high-level 3D graphics toolkit for developing cross-platform real-time 3D visualization and visual simulation software. http://www.coin3d.org/ * NIST Manufacturing Engineering Laboratory http://www.mel.nist.gov/product/software.htm o FBICS, Feature-Based Inspection/Control System - fbics_task (NC code gen) code is at fbicsTaskCc * OpenCascade, http://www.opencascade.org/ o OpenCascade Sketcher, simple use of OpenCascade libraries,http://www.laduga.ru/software/occsketcher/index.html o PythonCascade, python bindings to OpenCascade, http://www.pythonizer.org/pythoncascade/pythoncascade.html (Stale! not updated since 2003)
Graphics / OpenGL
* OpenGL tutorials http://nehe.gamedev.net/ * Nate Robbins OpenGL tutorials http://www.xmission.com/~nate/tutors.html * NURBS and OpenGL http://www.mat.ucsb.edu/~c.ramakr/articles/dls/nurbs.pdf * http://www.geometrictools.com seems to contain a number of useful geometry algorithms * Building Block Software, The Boundary Offset Experts, http://www.buildingblock.com
Python
* Language: http://www.python.org/ * GUI: http://wxpython.org * OpenGL: http://pyopengl.sourceforge.net/ * BOA Constructor: http://boa-constructor.sourceforge.net/ * Design Patterns in Python: o http://www.python.org/workshops/1997-10/proceedings/savikko.html o http://www.suttoncourtenay.org.uk/duncan/accu/pythonpatterns.html * NURBS library for Python http://runten.tripod.com/NURBS/ * NumPy examples http://www.scipy.org/Numpy_Example_List#head-801a34f50ffaa194c390aa6b0f5cc79a4551b0b9 * Skencil, a vector drawing program written in Python http://www.skencil.org/index.html
components
These components should be "plug-ins" i.e. it should be possbile to write more of them without modifying the rest of the architecture.
1. importers read geometry from file (which format?) and import to native geometry format (what?) 2. exporters write native geometry to file in some format 3. geometry creators/modifiers create or modify geometry 4. toolpath generators given geometry, create toolpath. 5. postprocessors given a toolpath, create output in some format
Low priority in the beginning... write native geometry to file in some format:
* an exporter should be able to read geometry
- DXF exists (pythoncad)
exporters
geometry creators/modifiers
geometry creators/modifiers: create/modify geometry
* a gcreator should be able to create geometry
o point
+ abspoint
o curve
+ line
+ polyline
+ arc
+ Bezier, Spline
o surface
* a gmodifier should be able to modify/create/delete geometry
o delete
o translate
o rotate
o scale
o mirror
o copy
o extrude? (+other surface generators)
toolpath generators
toolpath generators: given geometry + tool(?), create toolpath.
* a toolpathgen should be able to read geometry
* this is a form of geometry creator/modifier, i.e. a subclass of gcreator
* Toolpath can output geometry (lines, curves, FEED/RAPID), canned cycles, M-codes, Toolchanges, coolant etc.
* eventualy implement similar milling strategies to mastercam/surfcam
o "1D" Drilling, Canned Drill Cycle, Peck Drill, Rigid Tap
+ for optimizing drill canned cycles: some solution to traveling salesman problem ?
o "2D" follow curve with cutter compensation, rough/finish modes?
o "3D" Parallell, Radial, Flowline etc. rough/finish modes
o "4D" etc. hard... :)
o Simplifying toolpaths consisting of many short line segments can be done with the Douglas-Peucker algorithm. One implementation is found here http://cvs.linuxcnc.org/cvs/emc2/lib/python/rs274/author.py?rev=1.1
* some interesting notes on toolpath generation from http://www.freesteel.co.uk o Basic Cutter Location Studies http://www.freesteel.co.uk/wpblog/?p=59 details on how a cutter Z coordinate is located given (x,y), the cutter definition, and an STL surface. Interestingly the authors claim that most existing CAM software make little use of academic knowledge on the subject. o More machining questions http://www.freesteel.co.uk/wpblog/?p=63 o Sample rate from machining tolerance http://www.freesteel.co.uk/wpblog/?p=64 how to calculate the sample rate for machining operations o The structure of a CAM system http://www.freesteel.co.uk/wpblog/?p=84 some useful notes on code reusability etc. o Automatic feature detection http://www.freesteel.co.uk/wpblog/?p=44 o Intelligent machining algorithms http://www.freesteel.co.uk/wpblog/?p=43 o Vertical Scallops http://www.freesteel.co.uk/wpblog/?p=31 o http://www.freesteel.co.uk/wpblog/?p=29
postprocessors
postprocessors: given a toolpath, create output
* a post should be able to read toolpaths postp- a post processor for apt360 and more: http://aptos.cvs.sourceforge.net/aptos/postp/
- i.e. map native toolpath to eg. G-codeThanks funny site

