Add support for Orca-specific extrusion roles

This commit is contained in:
Andrew Sun 2025-09-20 15:09:55 -04:00
parent 9359aa8607
commit d539540a65
7 changed files with 55 additions and 8 deletions

View file

@ -140,6 +140,12 @@ enum class EGCodeExtrusionRole : uint8_t
SupportMaterialInterface,
WipeTower,
Custom,
// ORCA
BottomSurface,
InternalBridgeInfill,
Brim,
SupportTransition,
Mixed,
COUNT
};

View file

@ -370,7 +370,11 @@ public:
EGCodeExtrusionRole::InternalInfill, EGCodeExtrusionRole::SolidInfill, EGCodeExtrusionRole::TopSolidInfill,
EGCodeExtrusionRole::Ironing, EGCodeExtrusionRole::BridgeInfill, EGCodeExtrusionRole::GapFill,
EGCodeExtrusionRole::Skirt, EGCodeExtrusionRole::SupportMaterial, EGCodeExtrusionRole::SupportMaterialInterface,
EGCodeExtrusionRole::WipeTower, EGCodeExtrusionRole::Custom }) const;
EGCodeExtrusionRole::WipeTower, EGCodeExtrusionRole::Custom,
// ORCA
EGCodeExtrusionRole::BottomSurface, EGCodeExtrusionRole::InternalBridgeInfill, EGCodeExtrusionRole::Brim,
EGCodeExtrusionRole::SupportTransition, EGCodeExtrusionRole::Mixed
}) const;
//
// Return the size of the used cpu memory, in bytes
//

View file

@ -61,7 +61,12 @@ struct Settings
true, // SupportMaterial
true, // SupportMaterialInterface
true, // WipeTower
true // Custom
true, // Custom
// ORCA
true, // BottomSurface
true, // InternalBridgeInfill
true, // Brim
true, // SupportTransition
};
};

View file

@ -295,7 +295,12 @@ static const std::array<Color, size_t(EGCodeExtrusionRole::COUNT)> DEFAULT_EXTRU
{ 0, 255, 0 }, // SupportMaterial
{ 0, 128, 0 }, // SupportMaterialInterface
{ 179, 227, 171 }, // WipeTower
{ 94, 209, 148 } // Custom
{ 94, 209, 148 }, // Custom
// ORCA
{ 102, 92, 199 }, // BottomSurface
{ 77, 128, 186 }, // InternalBridgeInfill
{ 0, 59, 110 }, // Brim
{ 0, 64, 0 }, // SupportTransition
} };
static const std::array<Color, size_t(EOptionType::COUNT)> DEFAULT_OPTIONS_COLORS{ {
@ -1019,7 +1024,9 @@ void ViewerImpl::load(GCodeInputData&& gcode_data)
v.role != EGCodeExtrusionRole::SupportMaterial &&
v.role != EGCodeExtrusionRole::SupportMaterialInterface &&
v.role != EGCodeExtrusionRole::WipeTower &&
v.role != EGCodeExtrusionRole::Custom) {
v.role != EGCodeExtrusionRole::Custom &&
v.role != EGCodeExtrusionRole::Brim &&
v.role != EGCodeExtrusionRole::SupportTransition) {
m_cog_marker.update(0.5f * (v.position + m_vertices[i - 1].position), v.weight);
}
#endif // VGCODE_ENABLE_COG_AND_TOOL_MARKERS

View file

@ -110,7 +110,11 @@ public:
EGCodeExtrusionRole::InternalInfill, EGCodeExtrusionRole::SolidInfill, EGCodeExtrusionRole::TopSolidInfill,
EGCodeExtrusionRole::Ironing, EGCodeExtrusionRole::BridgeInfill, EGCodeExtrusionRole::GapFill,
EGCodeExtrusionRole::Skirt, EGCodeExtrusionRole::SupportMaterial, EGCodeExtrusionRole::SupportMaterialInterface,
EGCodeExtrusionRole::WipeTower, EGCodeExtrusionRole::Custom }) const;
EGCodeExtrusionRole::WipeTower, EGCodeExtrusionRole::Custom,
// ORCA
EGCodeExtrusionRole::BottomSurface, EGCodeExtrusionRole::InternalBridgeInfill, EGCodeExtrusionRole::Brim,
EGCodeExtrusionRole::SupportTransition, EGCodeExtrusionRole::Mixed
}) const;
bool is_option_visible(EOptionType type) const;
void toggle_option_visibility(EOptionType type);

View file

@ -434,11 +434,17 @@ static std::string to_string(libvgcode::EGCodeExtrusionRole role)
case libvgcode::EGCodeExtrusionRole::Ironing: { return _u8L("Ironing"); }
case libvgcode::EGCodeExtrusionRole::BridgeInfill: { return _u8L("Bridge infill"); }
case libvgcode::EGCodeExtrusionRole::GapFill: { return _u8L("Gap fill"); }
case libvgcode::EGCodeExtrusionRole::Skirt: { return _u8L("Skirt/Brim"); }
case libvgcode::EGCodeExtrusionRole::Skirt: { return _u8L("Skirt"); } // ORCA
case libvgcode::EGCodeExtrusionRole::SupportMaterial: { return _u8L("Support material"); }
case libvgcode::EGCodeExtrusionRole::SupportMaterialInterface: { return _u8L("Support material interface"); }
case libvgcode::EGCodeExtrusionRole::WipeTower: { return _u8L("Wipe tower"); }
case libvgcode::EGCodeExtrusionRole::Custom: { return _u8L("Custom"); }
// ORCA
case libvgcode::EGCodeExtrusionRole::BottomSurface: { return _u8L("Bottom surface"); }
case libvgcode::EGCodeExtrusionRole::InternalBridgeInfill: { return _u8L("Internal bridge infill"); }
case libvgcode::EGCodeExtrusionRole::Brim: { return _u8L("Brim"); }
case libvgcode::EGCodeExtrusionRole::SupportTransition: { return _u8L("Support transition"); }
case libvgcode::EGCodeExtrusionRole::Mixed: { return _u8L("Mixed"); }
default: { return _u8L("Unknown"); }
}
}
@ -1182,8 +1188,11 @@ void GCodeViewer::load_as_gcode(const GCodeProcessorResult& gcode_result, const
libvgcode::EGCodeExtrusionRole::InternalInfill, libvgcode::EGCodeExtrusionRole::SolidInfill, libvgcode::EGCodeExtrusionRole::TopSolidInfill,
libvgcode::EGCodeExtrusionRole::Ironing, libvgcode::EGCodeExtrusionRole::BridgeInfill, libvgcode::EGCodeExtrusionRole::GapFill,
libvgcode::EGCodeExtrusionRole::Skirt, libvgcode::EGCodeExtrusionRole::SupportMaterial, libvgcode::EGCodeExtrusionRole::SupportMaterialInterface,
libvgcode::EGCodeExtrusionRole::WipeTower
});
libvgcode::EGCodeExtrusionRole::WipeTower,
// ORCA
libvgcode::EGCodeExtrusionRole::BottomSurface, libvgcode::EGCodeExtrusionRole::InternalBridgeInfill, libvgcode::EGCodeExtrusionRole::Brim,
libvgcode::EGCodeExtrusionRole::SupportTransition, libvgcode::EGCodeExtrusionRole::Mixed
});
m_paths_bounding_box = BoundingBoxf3(libvgcode::convert(bbox[0]).cast<double>(), libvgcode::convert(bbox[1]).cast<double>());
if (wxGetApp().is_editor())

View file

@ -82,6 +82,12 @@ Slic3r::ExtrusionRole convert(EGCodeExtrusionRole role)
case EGCodeExtrusionRole::SupportMaterialInterface: { return Slic3r::ExtrusionRole::erSupportMaterialInterface; }
case EGCodeExtrusionRole::WipeTower: { return Slic3r::ExtrusionRole::erWipeTower; }
case EGCodeExtrusionRole::Custom: { return Slic3r::ExtrusionRole::erCustom; }
// ORCA
case EGCodeExtrusionRole::BottomSurface: { return Slic3r::ExtrusionRole::erBottomSurface; }
case EGCodeExtrusionRole::InternalBridgeInfill: { return Slic3r::ExtrusionRole::erInternalBridgeInfill; }
case EGCodeExtrusionRole::Brim: { return Slic3r::ExtrusionRole::erBrim; }
case EGCodeExtrusionRole::SupportTransition: { return Slic3r::ExtrusionRole::erSupportTransition; }
case EGCodeExtrusionRole::Mixed: { return Slic3r::ExtrusionRole::erMixed; }
default: { return Slic3r::ExtrusionRole::erNone; }
}
}
@ -105,6 +111,12 @@ EGCodeExtrusionRole convert(Slic3r::ExtrusionRole role)
case Slic3r::ExtrusionRole::erSupportMaterialInterface: { return EGCodeExtrusionRole::SupportMaterialInterface; }
case Slic3r::ExtrusionRole::erWipeTower: { return EGCodeExtrusionRole::WipeTower; }
case Slic3r::ExtrusionRole::erCustom: { return EGCodeExtrusionRole::Custom; }
// ORCA
case Slic3r::ExtrusionRole::erBottomSurface: { return EGCodeExtrusionRole::BottomSurface; }
case Slic3r::ExtrusionRole::erInternalBridgeInfill: { return EGCodeExtrusionRole::InternalBridgeInfill; }
case Slic3r::ExtrusionRole::erBrim: { return EGCodeExtrusionRole::Brim; }
case Slic3r::ExtrusionRole::erSupportTransition: { return EGCodeExtrusionRole::SupportTransition; }
case Slic3r::ExtrusionRole::erMixed: { return EGCodeExtrusionRole::Mixed; }
default: { return EGCodeExtrusionRole::None; }
}
}