21.0.0 — Sketchup

int main() SUInitialize(); print_selection_count(); SUTerminate(); return 0;

model = face.model model.start_operation("Extrude", true) normal = face.normal offset_vector = normal.clone offset_vector.length = distance # Extrude: copy face, move it, then create side faces new_face = face.entities.add_face(face.vertices) new_face.material = face.material # Move the new face tr = Geom::Transformation.translation(offset_vector) new_face.transform!(tr) # Create side faces (simple version) face.loops.each do |loop| edges = loop.edges edges.each do |edge| v1 = edge.start.position v2 = edge.end.position v1_new = v1 + offset_vector v2_new = v2 + offset_vector face.entities.add_face(v1, v2, v2_new, v1_new) end end model.commit_operation end end unless file_loaded?( FILE ) cmd = UI::Command.new("Extrude by 10cm") do model = Sketchup.active_model sel = model.selection if sel.first.is_a?(Sketchup::Face) MyTools::ExtrudeByDistance.extrude(sel.first, 10.cm) else UI.messagebox("Select a single face") end end cmd.tooltip = "Extrude selected face" UI.menu("Plugins").add_item(cmd) file_loaded( FILE ) end end sketchup 21.0.0

To develop a feature for (part of the 2021 release), you’ll work with the SketchUp C++ SDK or Ruby API , depending on what you need. int main() SUInitialize()

SUEntitiesRef entities = SU_INVALID; SUModelGetEntities(model, &entities); model = face.model model.start_operation("Extrude"

#include <SketchUpAPI/model/defs.h> #include <SketchUpAPI/initialize.h> #include <SketchUpAPI/application/application.h> #include <SketchUpAPI/model/model.h> #include <SketchUpAPI/model/entities.h> #include <iostream> void print_selection_count() SUModelRef model = SU_INVALID; SUApplicationGetActiveModel(&model); if (!model) return;