| Usage |
python g-code_ripper-XXX.py [-g file ] or g-code_ripper-XXX.py [-g file ] |
|
-c (or --config_file) |
Configuration file to read |
|
-g (or --gcode_file) |
g-code file to read |
|
-d (or --defdir) |
Default open/save directory |
|
-h (or --help) |
print syntax help to console window. |
|
Example (Using python script with preinstalled python distribution) |
python g-code_ripper-XXX.py -g my_file.ngc |
|
Example (Using precompiled Windows executable) |
g-code_ripper-XXX.exe -g my_file.ngc |
| F1 | Open the Help dialog box. (There is nothing in the help except a reference back to the web page and my e-mail address) |
| F2 | Opens General Settings Window |
| F5 | Refresh display |
|
g-code-ripper_config.ngc or .gcoderipperrc |
When G-Code Ripper starts up the directory in which G-Code Ripper starts in is searched for a file named "g-code-ripper_config.ngc". If the file is found it is read and all of the G-Code Ripper options are set according to the settings saved in the config file. After searching for the config file in the current directory the users home directory is searched for "g-code-ripper_config.ngc" or ".gcoderipperrc" if either of these are found it will be used as the default settings. Only the first config file found is read. To create a config file with your preferred options for startup just open G-Code Ripper and change the settings to your liking and click the save button next to configuration file in the settings window. |
| G-Code Base Operations: | This section contains basic operations that are performed prior to any G-Code Operations selected below. The base operations are always applied before the additional operations. |
| Scale XY | Sets the scaling percentage for X and Y axes to be applied to the input g-code file. |
| Scale Z | Sets the scaling percentage for Z axis to be applied to the input g-code file. |
| Scale Feed | Sets the scaling percentage for feed rate to be applied to the input g-code file. |
| Rotate | Sets the angle in degrees to rotate input g-code file. |
| Origin | The origin determines the relative location of the g-code x and y zero location. The current location of the origin is displayed in the display window as a red and green lines. The red and green lines follow the RGB convention Red is the x-axis, Green in the y-axis. |
| Save G-Code File Base (Button) | This button results in saving the g-code with only the option above the button being applied (scale, rotate, origin). Any further options from below or on the right side of the image are not applied. |
| View Plane: | This section contains a variety of view plane orientations only one of the options is active at any time. |
| G-Code Operations: | In this section the additional operations that can be applied to the g-code can be selected. |
| None | No operations are performed in addition to the base operations. |
| Split | The G-Code is split along a line creating two g-code programs that can be run independently. |
| Wrap | One of the G-Code linear axes (X or Y) is mapped to a rotary axis (A or B) for machining on a cylinder. |
| Input Field | Description |
| Split X Position | X position of the splitting line. (i.e. the line on which the g-code is divided into two parts.) The X position is measured from the origin set in the base operations section. |
| Split Y Position | Y position of the splitting line. (i.e. the line on which the g-code is divided into two parts.) The Y position is measured from the origin set in the base operations section. |
| Split Angle | The angle of the splitting line. |
| Rotate Black | The rotate black setting determines whether one of the two sides of the split will be rotated by 180 degrees. Rotating 180 degrees allows the stock to be rotated 180 degrees in the machine to machine the second half. Doing this process can effectively increase size of designs that can be cut by a given machine. |
| Save G-Code File-Black (Button) | This button saves the g-code displayed as black in the canvas. |
| Save G-Code File-White (Button) | This button saves the g-code displayed as white in the canvas. |
| Plunge Feed | Because the g-code is being split additional cut starts and stops are required. During the additional starts the tool needs to plunge into the stock material. The plunge feed sets the feed rate for these new moves into the stock material. |
| Z Safe | Because the g-code is being split additional cut starts and stops are required. After one of the additional cut stops the tool needs to move to a safe position for rapid movement. The Z Safe setting sets the z position of this z location that is safe for rapid motions. |


| Input Field | Description |
| Wrap Diameter | The wrap diameter is the diameter of the cylinder which the g-code will be mapped to. |
| Y-Axis to A-Axis | Map the Y axis positions to the A-Axis |
| X-Axis to B-Axis | Map the X axis positions to the B-Axis |
| Y-Axis to B-Axis | Map the Y axis positions to the B-Axis |
| X-Axis to A-Axis | Map the X axis positions to the A-Axis |
| Feed Adjust |
How feed rates work in Mach2 and LinuxCNC (and others?):For linear motion (i.e. x,y and/or z motion):each axis moves at constant speed and all axes move from their starting positions to their end positions at the same time. For linear motion with rotation (i.e. x,y and/or z motion AND a and/or b motion): When a rotary axis is included in the movement (i.e. ther is x,y,z motion AND a or b motion) the speed is still controlled by the linear distance to be traveled in x,y,z the A,B motion has no effect on the time to complete the motion. For Rotary motion (i.e. a and/or b motion without any x,y and/or z motion): When there is no linear motion the feed rate is interpreted as a angular rate (degrees/min) Feed Adjust Settings:Feed Adjust: Scale-RotaryG-Code Ripper takes all of these scenarios into account and adjusts the feed rate accordingly to make the feed rate consistent when cutting on a cylinder. Feed Adjust: None G-Code ripper does not scale feeds in any way. (This is the same a CNCwrapper output) A note for Mach3 users: In Mach3 there is a entry (Under Settings (Alt-6)) to set the Rotation Radius using this setting will tell Mach3 how to interpret the feed rates for code mapped to a cylinder of that radius. If you use the Rotation radius you will want to select None for the Feed adjust setting in G-Code Ripper. |
| Reverse Rotary Axis | G-Code Ripper assumes that a positive linear position is always mapped to a positive angular position. If your rotary axis (A or B) is set up such that the positive linear position should be mapped to a negative angular position check this box. |
| Save G-Code File-Wrap (Button) | This button saves the wrapped g-code. |
| Stock Rounding (Button) | This button opens the Stock Rounding window. In the stock rounding window you can generate g-code for making the stock material round using a spiral cut. |

| Input Field | Description |
| Include Rapid Moves | If selected the rapid moves will be included in the exported output. |
| File Type | Select the type of file to be exported |

| Input Field | Description |
| Probe X Offset |
X distance from the tool to the probe. (if the tool is the probe this should be set to zero) |
| Probe Y Offset |
Y distance from the tool to the probe. (if the tool is the probe this should be set to zero) |
| Probe Z Offset |
Z distance from the tool to the probe. (if the tool is the probe this should be set to zero) (It is best to keep this value as close to zero as possible to prevent crashing the tool or probe) |
| Probe Z Safe |
This is the safe Z height when probing (When the probe is over the work piece). Be aware of where the tool will be when the probe is at this position to avoid cashing the tool. |
| Probe Depth |
Max Depth the probe will travel attempting to detect the work piece. If the probe travels to this position and does not detect the part an error will occur. |
| Probe Feed | The feed rate for the probe when it is lowering to detect the part. |
| X Points |
This is the number of points that form the grid of probe points in the X direction. Points that are not needed (too far from tool path) are displayed as black in the preview canvas and will not probed. |
| Y Points |
This is the number of points that form the grid of probe points in the Y direction. Points that are not needed (too far from tool path) are displayed as black in the preview canvas and will not probed. |
| Post Probe |
This is a text entry field for any G-Codes that should be executed prior to the pause between probing and cutting. (If you want to swap the probe head for the tool head you may want to raise to a specified Z height (i.e. G0Z5.0) |
| Controller | Set the CNC controller to be used. LinuxCNC and MACH3 are supported. They require different codes for probing etc. |
The technological horizon may make this debate obsolete, or infinitely more complex.
The one thing that blurs the line between welfare and rights is modern neuroscience. The Cambridge Declaration on Consciousness (2012) publicly asserted that mammals, birds, and even octopuses possess the neurological substrates of consciousness.
We now know that:
If a creature can suffer and has a subjective experience of the world, the welfare argument says "minimize the suffering." The rights argument says "they are someone, not something." The technological horizon may make this debate obsolete,
As science proves higher cognition in more species (fish, crabs, lobsters), the welfare movement expands to protect them (e.g., banning live boiling of lobsters). The rights movement uses this data to argue that if they are conscious, they cannot be property.
Legally, the distinction is stark. In virtually every jurisdiction on Earth, animals are property. You cannot sue an animal, and an animal cannot own anything. However, recent "personhood" lawsuits are shifting the paradigm.
| Aspect | Animal Welfare | Animal Rights | |--------|----------------|----------------| | Core question | Is the animal suffering? | Is the animal being used as property? | | Position on use | Permissible if humane | Impermissible in principle | | Goal | Better conditions | Abolition of use | | Philosophical root | Utilitarian (Singer, Bentham) | Deontological (Regan, Francione) | | Typical reforms | Larger cages, stunning before slaughter | Empty cages, no slaughter | | View on zoos | Acceptable if enriched | Inherently wrong | | View on veganism | Encouraged but not required | Required (abolitionist veganism) | If a creature can suffer and has a
Animal rights is grounded in deontological ethics (following Immanuel Kant, but expanded beyond humans). It rejects pure cost-benefit calculations because individual rights cannot be traded off for aggregate welfare. For rights advocates, using an animal for food or research is wrong in principle, regardless of how painlessly it is done, because it violates the animal’s right to life and liberty.
You do not need to fully embrace animal rights to act with compassion. Nor do you need to dismiss welfare improvements as insufficient. The ethical landscape is a spectrum:
Ultimately, both frameworks share a common root: the recognition that animals are not inanimate objects. They feel fear, joy, pain, and connection. How we treat them reflects not just our laws and economies, but our capacity for empathy across the boundaries of species. The question is no longer whether animals matter, but how much and what we are willing to change because of it. Ultimately, both frameworks share a common root: the
Legally, animals occupy a strange limbo. For centuries, they were classified as property or chattel. If someone harmed your cow, they damaged your asset—not because the cow suffered, but because you lost value.
Today, all 50 U.S. states have felony animal cruelty laws, and the European Union has banned battery cages and cosmetic animal testing. However, these laws are largely welfare-based. The "Five Freedoms" (freedom from hunger, discomfort, pain, fear, and to express normal behavior) are the gold standard for zoos and farms, yet they are routinely violated in industrial agriculture due to "agricultural exemptions."
A landmark moment came in 2016 when an Argentine court ruled that a chimpanzee named Cecilia was a "non-human person" with legal rights to liberty. Similar cases have occurred in India and Colombia. While not the norm, these rulings suggest a slow erosion of the property status of highly intelligent animals.