Class: Sketchup::Group

Inherits:
Drawingelement show all
Defined in:
lib/sketchup-api-stubs/stubs/Sketchup/Group.rb

Overview

A Group class contains methods for manipulating groups of entities.

Groups in SketchUp are very similar to components, but can from a user point of view be thought of as unique objects. Groups can be instanced when copied but are silently made unique when edited through the GUI. To honor this behavior, make sure to call #make_unique before modifying a group through the API.

Version:

  • SketchUp 6.0

Instance Method Summary collapse

Methods inherited from Drawingelement

#bounds, #casts_shadows=, #casts_shadows?, #erase!, #hidden=, #hidden?, #layer, #layer=, #material, #material=, #receives_shadows=, #receives_shadows?, #visible=, #visible?

Methods inherited from Entity

#attribute_dictionaries, #attribute_dictionary, #delete_attribute, #deleted?, #entityID, #get_attribute, #inspect, #model, #parent, #persistent_id, #set_attribute, #to_s, #typename, #valid?

Instance Method Details

#add_observer(observer) ⇒ Boolean

The add_observer method is used to add a ComponentInstance observer to the group.

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])
status = group.add_observer observer

Parameters:

  • observer (Object)

    An observer.

Returns:

  • (Boolean)

    true if successful, false if unsuccessful.

Version:

  • SketchUp 6.0



32
33
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 32

def add_observer(observer)
end

#copySketchup::Group

The copy method is used to create a new Group object that is a copy of the group.

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])
group2 = group.copy

Returns:

Version:

  • SketchUp 6.0



47
48
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 47

def copy
end

#definitionSketchup::ComponentDefinition

The definition method is used to retrieve the component definition for this group.

Examples:

group = Sketchup.active_model.entities.add_group
definition = group.definition

Returns:

Version:

  • SketchUp 2015



61
62
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 61

def definition
end

#descriptionString

The description method is used to retrieve the description for the group.

Examples:

depth = 100
width = 100
model = Sketchup.active_model
entities = model.active_entities
pts = []
pts[0] = [0, 0, 0]
pts[1] = [width, 0, 0]
pts[2] = [width, depth, 0]
pts[3] = [0, depth, 0]
# Add the group to the entities in the model
group = entities.add_group

# Get the entities within the group
entities2 = group.entities

# Add a face to within the group
face = entities2.add_face pts
group.description = "This is a Group with a 2d Face"
description = group.description

Returns:

  • (String)

    a string description if successful

Version:

  • SketchUp 6.0



90
91
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 90

def description
end

#description=(description) ⇒ String

The description= method is used to set the description for the group.

Examples:

depth = 100
width = 100
model = Sketchup.active_model
entities = model.active_entities
pts = []
pts[0] = [0, 0, 0]
pts[1] = [width, 0, 0]
pts[2] = [width, depth, 0]
pts[3] = [0, depth, 0]

# Add the group to the entities in the model
group = entities.add_group

# Get the entities within the group
entities2 = group.entities

# Add a face to within the group
face = entities2.add_face pts
group.description = "This is a Group with a 2d Face"
description = group.description
if (description)
  UI.messagebox description
else
  UI.messagebox "Failure"
end

Parameters:

  • description (String)

    A string description.

Returns:

  • (String)

    the new description if successful

Version:

  • SketchUp 6.0



128
129
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 128

def description=(description)
end

#entitiesSketchup::Entities

The entities method is used to retrieve a collection of entities in the group.

Examples:

depth = 100
width = 100
model = Sketchup.active_model
entities = model.active_entities
pts = []
pts[0] = [0, 0, 0]
pts[1] = [width, 0, 0]
pts[2] = [width, depth, 0]
pts[3] = [0, depth, 0]
# Add the group to the entities in the model
group = entities.add_group

# Get the entities within the group
entities2 = group.entities

# Add a face to within the group
face = entities2.add_face pts
entities = group.entities
if (entities)
  UI.messagebox entities
else
  UI.messagebox "Failure"
end

Returns:

Version:

  • SketchUp 6.0



162
163
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 162

def entities
end

#equals?(group) ⇒ Boolean

The equals? method is used to determine if a group is geometrically equivalent to another group.

Examples:

entities = Sketchup.active_model.entities
group1 = entities[0]
group2 = entities[1]
status = group1.equals?(group2)

Parameters:

Returns:

  • (Boolean)

Version:

  • SketchUp 8.0



180
181
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 180

def equals?(group)
end

#explodeArray<Sketchup::Drawingelement>

The explode method is used to explode the group into individual entities.

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])

array = group.explode
if array
  UI.messagebox "Exploded the group"
else
  UI.messagebox "Failure"
end

Returns:

Version:

  • SketchUp 6.0



201
202
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 201

def explode
end

#glued_toSketchup::Face, ...

The #glued_to method is used to retrieve the entity that this group is glued to.

Examples:

point = Geom::Point3d.new(10, 20, 30)
transform = Geom::Transformation.new(point)
model = Sketchup.active_model
entities = model.active_entities
group = entities.add_group
group.entities.add_face([[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]])
status = group.glued_to

Returns:

Version:

  • SketchUp 2021.1



219
220
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 219

def glued_to
end

#glued_to=(drawing_element) ⇒ Sketchup::Face, ...

The #glued_to= method glues this group to a drawing element. When moving this other drawing elment with the Move tool, the glued group moves with it.

Examples:

model = Sketchup.active_model
entities = model.active_entities

# Create a face
face = entities.add_face([[0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0]])

# Create a group
definitions = model.definitions
group = entities.add_group
group.entities.add_face([[0, 0, 0], [10, 0, 0], [10, 10, 0], [0, 10, 0]])

# Make group "gluable"
group.definition.behavior.is2d = true

# Glue the group to the face.
# If you now move the face, the group will follow.
group.glued_to = face

Parameters:

Returns:

Raises:

  • ArgumentError if the Behavior for this group doesn’t allow gluing, if the alignment is wrong, or if this would lead to cyclic gluing.

Version:

  • SketchUp 2021.1



252
253
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 252

def glued_to=(drawing_element)
end

#guidString

The guid method is used to get the base 64 encoded unique id for this SketchUp object.

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])
guid = group.guid

Returns:

  • (String)

    a unique 22 character string

Version:

  • SketchUp 2014



267
268
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 267

def guid
end

#intersect(group) ⇒ Sketchup::Group?

Note:

This method is not available in SketchUp Make.

The intersect method is used to compute the boolean intersection of two groups representing manifold solid volumes (this & arg). If the specified objects (this and arg) do not represent manifold volumes, this method fails.

Examples:

entities = Sketchup.active_model.entities
group1 = entities[0]
group2 = entities[1]
result = group1.intersect(group2)

Parameters:

Returns:

  • (Sketchup::Group, nil)

    The resultant group if the two objects (this and arg) represent manifold solids and the operation succeeds. Otherwise nil is returned.

Version:

  • SketchUp 8.0



290
291
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 290

def intersect(group)
end

#local_boundsGeom::BoundingBox

Deprecated.

In favor of ‘group.definition.bounds`.

The #local_bounds method is used to retrieve the Geom::BoundingBox bounding the contents of a Sketchup::Group, in the group’s own internal coordinate system.

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])
transformation = Geom::Transformation.new([100,0,0])

# Note that local_bounds_1 and local_bounds_2 will be identical, since
# they both find the bounding box in group's untransformed state.
local_bounds_1 = group.local_bounds
group.transform! transformation
local_bounds_2 = group.local_bounds

Returns:

Version:

  • SketchUp 7.0



314
315
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 314

def local_bounds
end

#locked=(lock) ⇒ Boolean

The locked= method is used to lock a group.

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])
status = group.locked = true

Parameters:

  • lock (Boolean)

Returns:

  • (Boolean)

    true if the group is locked, false if not

Version:

  • SketchUp 6.0



330
331
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 330

def locked=(lock)
end

#locked?Boolean

The locked? method is used to determine if a group is locked.

Examples:

depth = 100
width = 100
model = Sketchup.active_model
entities = model.active_entities
pts = []
pts[0] = [0, 0, 0]
pts[1] = [width, 0, 0]
pts[2] = [width, depth, 0]
pts[3] = [0, depth, 0]

# Add the group to the entities in the model
group = entities.add_group
status = group.locked?
UI.messagebox status

Returns:

  • (Boolean)

Version:

  • SketchUp 6.0



354
355
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 354

def locked?
end

#make_uniqueSketchup::Group

The #make_unique method is used to force a group to have a unique definition. If the group is already unique in the model, nothing happens.

Copying a group in SketchUp will create a group that shares the same definition. SketchUp implicitly makes group unique when edited from the GUI, and from a user point of view groups could be thought of as always being unique. To honor this behavior, call this method before editing a group through the API.

Examples:

# Assume we have 2 groups, one copied from the other and sharing definitions
groups = Sketchup.active_model.entities.grep(Sketchup::Group)
groups[0].make_unique
if (groups[0].entities.to_a == groups[1].entities.to_a)
  puts "This should not happen since we made the groups unique"
end

Returns:

Version:

  • SketchUp 6.0



377
378
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 377

def make_unique
end

#manifold?Boolean

The manifold? method is used to determine if a group is manifold.

Examples:

entities = Sketchup.active_model.entities
definition = Sketchup.active_model.definitions[0]
transformation = Geom::Transformation.new([0,0,0])
group = entities.add_instance(definition, transformation)
status = group.manifold?

Returns:

  • (Boolean)

Version:

  • SketchUp 8.0



392
393
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 392

def manifold?
end

#move!(transformation) ⇒ Sketchup::Group

Note:

Despite the name being similar to #transform!, this method closer corresponds to #transformation=.

The #move! method is used to set the transformation of this group instance, similarly to #transformation= but without recording to the undo stack.

This method is useful for moving entities inside of an animation or page transition.

Examples:

point = Geom::Point3d.new 500,500,500
transformation = Geom::Transformation.new point
depth = 100
width = 100
model = Sketchup.active_model
entities = model.active_entities
pts = []
pts[0] = [0, 0, 0]
pts[1] = [width, 0, 0]
pts[2] = [width, depth, 0]
pts[3] = [0, depth, 0]

# Add the group to the entities in the model
group = entities.add_group

# Get the entities within the group
entities2 = group.entities

# Add a face to within the group
face = entities2.add_face pts
UI.messagebox "Group before Move"
group = group.move!(transformation)

Parameters:

Returns:

Version:

  • SketchUp 6.0



434
435
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 434

def move!(transformation)
end

#nameString

The name method is used to retrieve the name of the group.

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])
group.name = "A Line"
name = group.name

Returns:

  • (String)

    The name of the group if successful

Version:

  • SketchUp 6.0



449
450
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 449

def name
end

#name=(name) ⇒ String

The name= method is used to set the description for the group.

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])
group.name = "A Line"
name = group.name

Parameters:

  • name (String)

    A string name.

Returns:

  • (String)

    a new name if successful

Version:

  • SketchUp 6.0



467
468
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 467

def name=(name)
end

#outer_shell(group) ⇒ Sketchup::Group?

The outer_shell method is used to compute the outer shell of the two groups representing manifold solid volumes (this || arg). If the specified objects (this and arg) do not represent manifold volumes, this method fails.

Examples:

entities = Sketchup.active_model.entities
group1 = entities[0]
group2 = entities[1]
result = group1.outer_shell(group2)

Parameters:

Returns:

  • (Sketchup::Group, nil)

    The resultant group if the two objects (this and arg) represent manifold solids and the operation succeeds otherwise nil is returned.

Version:

  • SketchUp 8.0



488
489
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 488

def outer_shell(group)
end

#remove_observer(observer) ⇒ Boolean

The remove_observer method is used to remove a ComponentInstance observer from the group.

Examples:

group = Sketchup.active_model.entities[0]
if group != nil
  if group.is_a? Sketchup::Group
    status = group.remove_observer observer
  end
end

Parameters:

  • observer (Object)

    An observer.

Returns:

  • (Boolean)

    true if successful, false if unsuccessful.

Version:

  • SketchUp 6.0



508
509
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 508

def remove_observer(observer)
end

#show_differences(group, verbose) ⇒ Boolean

The show_differences method is used to determine if a group is geometrically equivalent to another group and in addition move the non- matching and matching geometry to new layers.

This method will move both groups to Layer0. Geometry that is the same in both groups will be moved to a new layer named group_name + “_same”. Geometry that is not the same will be moved to a layer named group_name + “_diff”.

If verbose is true, a list of all the geometry that is different from one group to the other is displayed texturally in the Ruby Console.

Examples:

entities = Sketchup.active_model.entities
group1 = entities[0]
group2 = entities[1]
status = group1.show_differences(group2, true)

Parameters:

  • group (Sketchup::Group, Sketchup::ComponentInstance)

    The group to be compared with.

  • verbose (Boolean)

    A boolean flag indicating whether to display a textural report of the found differences to the Ruby console.

Returns:

  • (Boolean)

    true if the groups are geometrically equivalent. Otherwise false.

Version:

  • SketchUp 8.0



540
541
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 540

def show_differences(group, verbose)
end

#split(group) ⇒ Array(Sketchup::Group, Sketchup::Group, Sketchup::Group)?

Note:

This method is not available in SketchUp Make.

The split method is used to compute the boolean split (map overlay) of the two groups representing manifold solid volumes (this ^ arg). If the specified objects (this and arg) do not represent manifold volumes, this method fails.

Examples:

entities = Sketchup.active_model.entities
group1 = entities[0]
group2 = entities[1]
result = group1.split(group2)

Parameters:

Returns:

  • (Array(Sketchup::Group, Sketchup::Group, Sketchup::Group), nil)

    A vector (array) of the three resultant groups If the two objects (this and arg) represent manifold solids and the operation succeeds otherwise nil is returned. The 3 groups are as follows: The intersection of volume 1 & volume 2, the difference of volume 1 minus volume 2, and the reverse difference of volume 2 minus volume 1.

Version:

  • SketchUp 8.0



568
569
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 568

def split(group)
end

#subtract(group) ⇒ Sketchup::Group?

Note:

This method is not available in SketchUp Make.

The subtract method is used to compute the boolean difference of the two groups representing manifold solid volumes (this - arg). If the specified objects (this and arg) do not represent manifold volumes, this method fails.

Examples:

entities = Sketchup.active_model.entities
group1 = entities[0]
group2 = entities[1]
result = group1.subtract(group2)

Parameters:

Returns:

  • (Sketchup::Group, nil)

    The resultant group if the two objects (this and arg) represent manifold solids and the operation succeeds. Otherwise nil is returned.

Version:

  • SketchUp 8.0



591
592
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 591

def subtract(group)
end

#to_componentSketchup::ComponentInstance

The to_component method is used to convert the group to a component instance.

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])

# change the group to a component instance
group.to_component

Returns:

Version:

  • SketchUp 6.0



608
609
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 608

def to_component
end

#transform!(transform) ⇒ Sketchup::Group

The transform! method is used to apply a transformation to a group.

Examples:

point = Geom::Point3d.new 500,500,500
t = Geom::Transformation.new point
depth = 100
width = 100
model = Sketchup.active_model
entities = model.active_entities
pts = []
pts[0] = [0, 0, 0]
pts[1] = [width, 0, 0]
pts[2] = [width, depth, 0]
pts[3] = [0, depth, 0]

# Add the group to the entities in the model
group = entities.add_group

# Get the entities within the group
entities2 = group.entities

# Add a face to within the group
face = entities2.add_face pts
UI.messagebox "Group before Move"
group = group.transform! t
if (group)
  UI.messagebox "Group after move"
  UI.messagebox group
else
  UI.messagebox "Failure"
end

Parameters:

Returns:

Version:

  • SketchUp 6.0



649
650
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 649

def transform!(transform)
end

#transformationGeom::Transformation

The transformation method is used to retrieve the transformation for the group.

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])

trans = group.transformation

Returns:

Version:

  • SketchUp 6.0



665
666
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 665

def transformation
end

#transformation=(transformation) ⇒ Object

The #transformation= method is used to set the transformation of this group

Examples:

# Add a group to the model.
group = Sketchup.active_model.entities.add_group
group.entities.add_line([0,0,0],[100,100,100])

new_transformation = Geom::Transformation.new([100,0,0])
group.transformation = new_transformation

Parameters:

Version:

  • SketchUp 6.0



682
683
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 682

def transformation=(transformation)
end

#trim(group) ⇒ Sketchup::Group?

Note:

This method is not available in SketchUp Make.

The trim method is used to compute the (non-destructive) boolean difference of the two groups representing manifold solid volumes (this - arg). If the specified objects (this and arg) do not represent manifold volumes, this method fails.

Examples:

entities = Sketchup.active_model.entities
group1 = entities[0]
group2 = entities[1]
result = group1.trim(group2)

Parameters:

Returns:

  • (Sketchup::Group, nil)

    The resultant group if the two objects (this and arg) represent manifold solids and the operation succeeds otherwise nil is returned.

Version:

  • SketchUp 8.0



706
707
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 706

def trim(group)
end

#union(group) ⇒ Sketchup::Group?

Note:

This method is not available in SketchUp Make.

The union method is used to compute the boolean union of the two groups representing manifold solid volumes (this | arg). If the specified objects (this and arg) do not represent manifold volumes, this method fails.

Examples:

entities = Sketchup.active_model.entities
group1 = entities[0]
group2 = entities[1]
result = group1.union(group2)

Parameters:

Returns:

  • (Sketchup::Group, nil)

    The resultant group if the two objects (this and arg) represent manifold solids and the operation succeeds. Otherwise nil is returned.

Version:

  • SketchUp 8.0



729
730
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 729

def union(group)
end

#volumeFloat

The volume method is used to compute the volume of this group if and only if this group is manifold.

Examples:

entities = Sketchup.active_model.entities
definition = Sketchup.active_model.definitions[0]
transformation = Geom::Transformation.new([0,0,0])
group = entities.add_instance(definition, transformation)
volume = group.volume

Returns:

  • (Float)

    If the group represents a manifold volume, volume will be a positive value. If volume is negative, the group is not manifold.

Version:

  • SketchUp 8.0



747
748
# File 'lib/sketchup-api-stubs/stubs/Sketchup/Group.rb', line 747

def volume
end