Improve comments by only adding when a path starts & including the group(s) it belongs to

master
Sameer Puri 6 years ago
parent c04ba6b625
commit 153b88a3cd

@ -35,7 +35,7 @@ fn main() -> io::Result<()> {
(@arg FILE: "Selects the input SVG file to use, else reading from stdin") (@arg FILE: "Selects the input SVG file to use, else reading from stdin")
(@arg tolerance: --tolerance "Sets the interpolation tolerance for curves") (@arg tolerance: --tolerance "Sets the interpolation tolerance for curves")
(@arg feedrate: --feedrate "Sets the machine feed rate") (@arg feedrate: --feedrate "Sets the machine feed rate")
(@arg dpi: --dpi "Sets the DPI for SVGs with units in pt, pc, etc.") (@arg dpi: --dpi "Sets the DPI for SVGs with units in pt, pc, etc. (default 72.0)")
(@arg tool_on_action: --tool_on_action "Sets the tool on GCode sequence") (@arg tool_on_action: --tool_on_action "Sets the tool on GCode sequence")
(@arg tool_off_action: --tool_off_action "Sets the tool off GCode sequence") (@arg tool_off_action: --tool_off_action "Sets the tool off GCode sequence")
) )
@ -102,6 +102,8 @@ fn svg2program(doc: &svgdom::Document, opts: ProgramOptions, mach: Machine) -> P
let mut p = Program::default(); let mut p = Program::default();
let mut t = Turtle::from(mach); let mut t = Turtle::from(mach);
let mut namestack: Vec<String> = vec![];
p.push(GCode::UnitsMillimeters); p.push(GCode::UnitsMillimeters);
p += t.mach.tool_off().into(); p += t.mach.tool_off().into();
p += t.move_to(true, 0.0, 0.0).into(); p += t.move_to(true, 0.0, 0.0).into();
@ -140,7 +142,9 @@ fn svg2program(doc: &svgdom::Document, opts: ProgramOptions, mach: Machine) -> P
} }
if let ElementId::G = id { if let ElementId::G = id {
if is_start { if is_start {
p.push(GCode::Comment(Box::new(node.id().to_string()))); namestack.push(node.id().to_string());
} else {
namestack.pop();
} }
} }
if let Some(&AttributeValue::Transform(ref trans)) = attrs.get_value(AttributeId::Transform) if let Some(&AttributeValue::Transform(ref trans)) = attrs.get_value(AttributeId::Transform)
@ -157,7 +161,13 @@ fn svg2program(doc: &svgdom::Document, opts: ProgramOptions, mach: Machine) -> P
match id { match id {
ElementId::Path => { ElementId::Path => {
if let Some(&AttributeValue::Path(ref path)) = attrs.get_value(AttributeId::D) { if let Some(&AttributeValue::Path(ref path)) = attrs.get_value(AttributeId::D) {
p.push(GCode::Comment(Box::new(node.id().to_string()))); let prefix: String =
namestack.iter().fold(String::new(), |mut acc, name| {
acc += name;
acc += "-->";
acc
});
p.push(GCode::Comment(Box::new(prefix + &node.id())));
t.reset(); t.reset();
for segment in path.iter() { for segment in path.iter() {
let segment_gcode = match segment { let segment_gcode = match segment {

Loading…
Cancel
Save