### Home Classes Methods

### In Files

- lib/constraints.rb

### Parent

Constraint

### Methods

- ::new
- #area=
- #delete
- #satisfied?

### Files

- LessThan5BlueLabels.txt
- AtLeast2LargeSegments.txt

### Class Index

Quicksearch

- AddLabelTool
- AllRulesAppliedGoal
- Area
- AreaConstraint
- Array
- BalancedBinaryTree
- BalancedBinaryTreeNode
- CloseObserver
- Constants
- Constraint
- CurrentLabelledShape
- DistinctShapeConstraint
- Execution
- Goal
- Grammar
- Label
- LabelledShape
- LineDescriptor
- LinearLinkedList
- LinearLinkedListNode
- NoLabelsGoal
- NoMoreRulesGoal
- NoScalesConstraint
- Numeric
- Object
- OrderedPoint
- PiList
- Point
- Project
- Robot
- Rule
- RuleGroupsObserver
- RuleLabelledShape
- RuleShapeObserver
- Segment
- ShaDeLayersObserver
- Shade
- ShadeUtils
- UndoObserver

No matching classes.

# AreaConstraint

Author | Manuela Ruiz (mruiz@lcc.uma.es)

A sort of Constraint: the shapes in the design cannot be outside an area

### Attributes

area[R]

Reader the involved area

### Public Class Methods

new(points = nil) click to toggle source

points | array of points limitting the area

Initializing

         # File lib/constraints.rb, line 133
    133:         def initialize(points = nil)

    134:                 if points

    135:                         @area = Area.new points

    136:                 else

    137:                         @area = Area.new Constants::PTS_AREA.clone

    138:                 end

    139:                 @name = Constants::AREA_CONSTRAINT_NAME

    140:         end

### Public Instance Methods

area=(new_area) click to toggle source

Writer for the involved area

         # File lib/constraints.rb, line 189
    189:         def area=(new_area)

    190:                 @area.erase

    191:                 @area = new_area

    192:         end

delete() click to toggle source

Deletes the area

         # File lib/constraints.rb, line 184
    184:         def delete()

    185:                 @area.erase

    186:         end

satisfied?() click to toggle source

Returns true iff the shapes in the design are inside the area

         # File lib/constraints.rb, line 143
    143:         def satisfied?()

    144:                 execution = Shade.project.execution

    145:

    146:                 satisfied = true

    147:                 j = 0

    148:                 n_layers = Sketchup.active_model.layers.length

    149:                 layer_name = "Layer0"

    150:                 while (satisfied and (j < n_layers))

    151:                         layer_name = Sketchup.active_model.layers[j].name

    152:

    153:                         segments = execution.current_shape.s[layer_name]

    154:                         segments.reset_iterator

    155:

    156:                         while satisfied and (s_node = segments.get_next)

    157:                                 s_list = s_node.list

    158:                                 s_list.reset_iterator

    159:                                 while satisfied and (s = s_list.get_next)

    160:                                         satisfied = ((@area.cover_point? s.key.tail.point.transform(Constants::AXIOM_T)) && (@area.cover_point? s.key.head.point.transform(Constants::AXIOM_T)))

    161:                                 end

    162:                         end

    163:

    164:                         if satisfied

    165:                                 points = execution.current_shape.p[layer_name]

    166:                                 points.reset_iterator

    167:                                 while satisfied and (p_node = points.get_next)

    168:                                         if !(p_node.key.value == Constants::INTERSECTION_LABEL)

    169:                                                 p_list = p_node.list

    170:                                                 p_list.reset_iterator

    171:                                                 while satisfied and (p = p_list.get_next)

    172:                                                         satisfied = (@area.cover_point? p.key.point.transform(Constants::AXIOM_T))

    173:                                                 end

    174:                                         end

    175:                                 end

    176:                         end

    177:

    178:                         j += 1

    179:                 end

    180:                 return satisfied

    181:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.