Sketchup 21.0.0 ❲EXCLUSIVE❳

size_t count = 0; SUEntitiesGetNumSelected(entities, &count);

# Extrude selected face by a distance (along normal) module MyTools class ExtrudeByDistance def self.extrude(face, distance) return unless face.is_a?(Sketchup::Face)

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

SUEntitiesRef entities = SU_INVALID; SUModelGetEntities(model, &entities);

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. A minimal main

Load in SketchUp: Extensions > Ruby Console > File > Open or paste code. This requires the SDK. A minimal main.cpp for a command that prints selection count:

#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; void print_selection_count() SUModelRef model = SU_INVALID

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

std::cout << "Selected entities: " << count << std::endl;