Author | Manuela Ruiz (mruiz@lcc.uma.es) |
This class represents a rule
rule_id: internal id for the rule alpha: the left RuleLabelledShape beta: the right RuleLabelledShape
Initializes the rule
# File lib/main-structures.rb, line 49 49: def initialize(rule_id, alpha, beta, line_group, arrow_group, group_origin_left, group_origin_right) 50: 51: @rule_id = rule_id 52: 53: @alpha = alpha 54: @alpha.host_rule_id = rule_id 55: @alpha.host_rule_part = Constants::LEFT 56: 57: @beta = beta 58: @beta.host_rule_id = rule_id 59: @beta.host_rule_part = Constants::RIGHT 60: 61: 62: @line_group = line_group 63: @arrow_group = arrow_group 64: @group_origin_left = group_origin_left 65: @group_origin_right = group_origin_right 66: 67: end
returns | the resulting shape of making the difference: alpha - beta (left and right shapes, respectively) |
# File lib/main-structures.rb, line 151 151: def alpha_minus_beta 152: alpha_minus_beta = @alpha.clone 153: alpha_minus_beta.shape_expression(@beta, Constants::DIFFERENCE, Constants::SEGMENTS) 154: alpha_minus_beta.shape_expression(@beta, Constants::DIFFERENCE, Constants::POINTS) 155: return alpha_minus_beta 156: end
returns | the resulting shape of making the difference: beta - alpha (right and left shapes, respectively) |
# File lib/main-structures.rb, line 159 159: def beta_minus_alpha 160: 161: beta_minus_alpha = @beta.clone 162: beta_minus_alpha.shape_expression(@alpha, Constants::DIFFERENCE, Constants::SEGMENTS) 163: beta_minus_alpha.shape_expression(@alpha, Constants::DIFFERENCE, Constants::POINTS) 164: return beta_minus_alpha 165: end
Erases the SU objects attached to the rule
# File lib/main-structures.rb, line 168 168: def erase() 169: if Shade.using_sketchup 170: entities = Sketchup.active_model.entities 171: 172: Sketchup.active_model.layers.each { |layer| 173: 174: if @arrow_group 175: if @arrow_group[layer.name] 176: @arrow_group[layer.name].locked = false 177: entities.erase_entities @arrow_group[layer.name] 178: end 179: end 180: 181: if @line_group 182: if @line_group[layer.name] 183: @line_group[layer.name].locked = false 184: entities.erase_entities @line_group[layer.name] 185: end 186: end 187: 188: if @group_origin_left 189: if @group_origin_left[layer.name] 190: @group_origin_left[layer.name].locked = false 191: entities.erase_entities @group_origin_left[layer.name] 192: end 193: end 194: 195: if @group_origin_right 196: if @group_origin_right[layer.name] 197: @group_origin_right[layer.name].locked = false 198: entities.erase_entities @group_origin_right[layer.name] 199: end 200: end 201: } 202: 203: @alpha.erase 204: @beta.erase 205: end 206: end
returns | the left shape of the rule |
# File lib/main-structures.rb, line 70 70: def left 71: return @alpha 72: end
Repaints the rule
# File lib/main-structures.rb, line 80 80: def repaint 81: if Shade.using_sketchup 82: @alpha.paint 83: @beta.paint 84: 85: entities = Sketchup.active_model.entities 86: 87: t = Shade.project.execution.grammar.get_rule_index(self) 88: 89: # Transform the layout transformation of the origins 90: t_left = Geom::Transformation.new 91: t_right = Geom::Transformation.new 92: t.times do 93: t_left = Constants::DESCEND_T * t_left 94: t_right = Constants::DESCEND_T * t_right 95: end 96: t_left = Constants::LEFT_T * t_left 97: t_right = Constants::RIGHT_T * t_right 98: 99: # Draw an arrow, for the rule 100: point1 = Constants::PTS_ARROW[0].clone 101: point2 = Constants::PTS_ARROW[1].clone 102: point3 = Constants::PTS_ARROW[2].clone 103: point4 = Constants::PTS_ARROW[3].clone 104: 105: t.times do 106: point1.transform! Constants::DESCEND_T 107: point2.transform! Constants::DESCEND_T 108: point3.transform! Constants::DESCEND_T 109: point4.transform! Constants::DESCEND_T 110: end 111: 112: @arrow_group = entities.add_group 113: @arrow_group.entities.add_edges point1, point2 114: @arrow_group.entities.add_edges point3, point2 115: @arrow_group.entities.add_edges point4, point2 116: @arrow_group.locked = true 117: 118: #Draw the origin references 119: point1 = Constants::PTS_ORIGIN[0].clone 120: point2 = Constants::PTS_ORIGIN[1].clone 121: point3 = Constants::PTS_ORIGIN[2].clone 122: point4 = Constants::PTS_ORIGIN[3].clone 123: 124: @group_origin_left = entities.add_group 125: @group_origin_left.entities.add_edges point1, point3 126: @group_origin_left.entities.add_edges point2, point4 127: @group_origin_left.transformation = t_left 128: @group_origin_left.locked = true 129: 130: @group_origin_right = entities.add_group 131: @group_origin_right.entities.add_edges point1, point3 132: @group_origin_right.entities.add_edges point2, point4 133: @group_origin_right.transformation = t_right 134: @group_origin_right.locked = true 135: 136: #Draw horizontal line 137: point_h1 = Constants::PTS_H[0].clone 138: point_h2 = Constants::PTS_H[1].clone 139: 140: t.times do 141: point_h1.transform! Constants::DESCEND_T 142: point_h2.transform! Constants::DESCEND_T 143: end 144: @line_group = entities.add_group 145: @line_group.entities.add_line point_h1,point_h2 146: @line_group.locked = true 147: end 148: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.