Nothing special. The client chose one of three proposals.
Robert
@gullfo said:
nice box, nice balls.
Thanks. The customer wants something more exclusive. I'm looking for inspiration. Apparently squares and triangles are fashionable now.
Hi everyone,
I’m having trouble with a custom SketchUp tool that was created by AI. The tool correctly highlights a selected plane and applies materials to it when clicked. Additionally, this code works for closed groups and components. However, the CTRL modifier functionality is not working as expected. Here’s a summary of the issues I’m facing:
Plane Highlighting: The tool highlights the plane correctly when hovered over and works on closed groups and components.
Material Application: Materials are correctly applied to the selected plane or to closed groups and components when clicked.
CTRL Modifier: The CTRL key should trigger the application of the material to the entire object (group or component) rather than just the selected plane. This should work for both closed groups and components, but this functionality is not working.
Here is the relevant code:
module CustomSelectionTool
class SelectPlaneTool
def initialize
@ip = Sketchup::InputPoint.new
@view = Sketchup.active_model.active_view
@last_face = nil
@model = Sketchup.active_model
@selection = @model.selection
@materials = @model.materials
end
def onMouseMove(flags, x, y, view)
@ip.pick(view, x, y)
face = @ip.face
if face && face.is_a?(Sketchup::Face)
if face != @last_face
# Clear previous selection
@selection.clear
# Select the new face
@selection.add(face)
@last_face = face
view.invalidate
end
else
if @last_face
# Clear selection when there is no face
@selection.clear
@last_face = nil
view.invalidate
end
end
view.tooltip = @last_face ? "Face selected" : "No face selected"
end
def onLButtonDown(flags, x, y, view)
if @last_face
if (flags & MK_CONTROL) == MK_CONTROL
# Apply material to the entire object (group or component)
apply_material_to_object(@last_face.parent)
else
# Apply material to the selected face
apply_material(@last_face)
end
@last_face = nil
view.invalidate
end
end
def apply_material(face)
material = @model.materials.current
if material
face.material = material
else
puts "No material to apply"
end
end
def apply_material_to_object(entity)
material = @model.materials.current
if material
if entity.is_a?(Sketchup::Group) || entity.is_a?(Sketchup::ComponentInstance)
entity.entities.grep(Sketchup::Face).each { |f| f.material = material }
elsif entity.is_a?(Sketchup::Face)
entity.material = material
else
puts "Cannot apply material to this type of object"
end
else
puts "No material to apply"
end
end
end
def self.activate_select_plane_tool
Sketchup.active_model.select_tool(SelectPlaneTool.new)
end
end
if !file_loaded?(__FILE__)
UI.menu('Plugins').add_item('Select Plane Tool') {
CustomSelectionTool.activate_select_plane_tool
}
file_loaded(__FILE__)
end
What I’ve Tried:
Using Sketchup::InputModifier::CTRL to check if the CTRL key is pressed.
Ensuring the current material is selected before applying it.
Any suggestions or insights on why the CTRL key functionality is not applying the material to the entire object (including closed groups and components) as intended would be greatly appreciated. Thank you!
The code is written in Ruby 1.8, which is compatible with SketchUp 8.
Robert
There is no chance for the plugin to work in SU8?
Robert
@TIG said in [Plugin] Center of Gravity:
restart SketchUp and see if that helps...
Unfortunately it didn't help.
Robert
@TIG Should I look for an older version or is there any way to make it work in 8.0 Pro?
Is it possible to copy the contents of the VCB window to the system clipboard using a script (SU8)?
Robert
Cabinet. Recess for a TV decoder.
I was hoping they would choose a lightened version.
Robert
@gullfo said:
nice box, nice balls.
Thanks. The customer wants something more exclusive. I'm looking for inspiration. Apparently squares and triangles are fashionable now.