ReplacementRule

class ReplacementRule(application_type: RuleApplicationType | Evaluatable[RuleApplicationType], query: ShapeQuery, rhs: Shape)

A ReplacementRule computes the x -> y rule schema.

Specifically, given a lhs u, rhs v, and design w, it computes the transformations f_i that embed u in w. Then it replaces w with w - f_i(u) + f_i(v) appropriate to the application_type. The selection mode chooses the f_i to apply. If the selection mode is ALL, w is replaced by w - Σf_i(u) + Σf_i(v). The transformations are computed with the query_transformation’s compute() method.

Parameters:
  • application_type – The RuleApplicationType to use when selecting a match to apply the rule to.

  • query – The ShapeQuery to use when searching (u).

  • rhs – The Shape to replace the lhs with in a design (v).

Attributes

rhs

The Shape to replace the lhs with in a design.

application_type

The RuleApplicationType to use when selecting a match to apply the rule to.

Methods

apply_to

Apply this Rule to a Shape.

apply_to(shape: Shape, communication_layer: CommunicationLayer, in_automation: bool = False, _to_design: ndarray = array([0., 0., 0.])) Tuple[Rule, List[Tuple[Shape, Shape]], Shape, Shape, Shape, Shape]

Apply this Rule to a Shape.

Parameters:
  • shape – The shape to apply this rule to.

  • communication_layer – The CommunicationLayer to use during rule application.

  • in_automation – Whether this rule is being applied as part of an automation (e.g.: as part of a RuleSequence or Program).

  • _to_design – Vector used to relocate the matches to the design in application previews and enumerations. This is needed because the ShapeMachine engine internally shifts its initial_design to the origin to reduce floating-point error.

Returns:

The shape created as a result of rule application.

application_type

The RuleApplicationType to use when selecting a match to apply the rule to.

rhs

The Shape to replace the lhs with in a design.