Changelog

Patch 1.1.6

Bugs Fixed

  • Fixed a bug where attributes_set might not reflect the actual state of the Shape after subtracting Shapes.


Patch 1.1.5

Bugs Fixed

  • Fixed several precision and tolerance-related bugs


Patch 1.1.4

Bugs Fixed

  • Fixed a bug where first-time setup doesn’t actually install dependencies.

  • Fixed a bug in RuleSequences that makes the angle and degree parameters not work as expected.


Patch 1.1.3

Bugs Fixed

  • Fixed a bug where generating a convex hull to outline a search result would fail when the query shape is not actually 2D

  • Changed convex hull calculation to only be performed when necessary, not every query

  • Fixed a bug that causes very long delays between rule applications when running SMAL and SMAL2


Patch 1.1.2

Changes

  • Matching under Isometry and Similarity is definitely faster now.

  • More Marquee commands! You can now select search/modification regions with circles, polylines, and lassos (sketches).

  • The toolbar has been updated to reflect the new commands. If you have previously installed Shape Machine, you will need to follow the instructions in the installation guide to get the new toolbar.

  • Created two new versions of the toolbar: ShapeMachine and ShapeMachineClassic. The “classic” version has icons that are more aligned with the old toolbar, and the new one uses more symbolic icons. The classic toolbar can be downloaded from the SharePoint.

Bugs Fixed

  • Fixed a bug that doesn’t restrict Isometry and Similarity to uniform scaling.


Patch 1.1.1

Changes

  • Matching under Isometry and Similarity should hopefully be faster.

Bugs Fixed

  • Fixed a bug that causes Mac users to crash after selecting geometry for the first time with the following commands: SMAL, SMAL2, MQDRectangle, MQDRectangleD.


Minor Version 1.1.0

New Features

  • New Commands:

    • Marquee Search (Rectangle) - Select a design, specify a search region, and find all matches of that search region in your design (MQRectangle).

      • Variant: MQRectangleD forces no reflections.

    • Marquee Replace (Rectangle) - Select a design, specify a search region, modify the geometry within that region however you’d like, and select where else in the design you’d like to apply those changes (MQDRectangle).

      • Variant: MQDRectangleD forces no reflections.

  • Changed Commands:

    • DrawScript (SMAL and SMAL2) now run in the background. What does this mean?

      1. You can once again see the rules being applied in real time, even on Mac!

      2. You can also move around and zoom in/out while the rules are being applied.

      3. Program compilation no longer prevents you from doing anything. You’ll need to be patient in order to make sure it has time to compile before you try to select the initial design. In a future version, there will be popups letting you know when you can proceed.

  • There’s a new toolbar! It has buttons for the new commands. You’ll probably need to go into the toolbar settings and select the group of 5 tabs in order to see the new two.

  • Shape Machine should be noticeably faster on complicated designs.

  • New Rule Type: Mark Intersections

    • This new rule is available for DrawScript (SMAL and SMAL2) and allows users to mark intersections of carriers within the current design.

    • Carriers are the infinite underlying geometry underlying the geometry we see. So two collinear lines are on the same carrier, and two arcs with the same center and radius are on the same carrier. You can think of it like the equation underlying the geometry.

    • The LHS of the rule should contain geometry that specifies exactly two carriers. These could be made of multiple shape elements, allowing you to specify multiple layers and attributes that must be found along a carrier when looking for intersections. For example, two arcs/circles with different colors means the marked intersections will only be on carriers in the design with those same colors. The attribute matching behavior will be ignored if “Match Attributes” is set to 0.

    • The RHS of the rule can contain any Shape Machine-recognized geometry you want. The only information considered are the attributes of all geometry on the RHS. At each found intersection, a point will be placed for each unique attribute in the RHS with those attributes.

    • Note that because this rule marks intersections of carriers, it can create points that are not coincident to existing geometry in the design. In a future version, this may be a toggleable option.

Upcoming Features

  • Popup during DrawScript instructing you when you can select the design.

  • Popup during DrawScript indicating which rule is currently being applied.

  • Faster search region isolation during the Marquee commands.

Bugs Fixed

  • Fixed a bug in replacement under Similarity and Affinity that tried to only apply replacements under Isometry, when using the single application commands (SMD2, SMD3).


Patch 1.0.4

Changes

  • Printing the production history no longer shows production steps with no change.

  • When an exception occurs, you will be prompted to submit a bug report if you believe the exception to be a bug.

Bugs Fixed

  • Fixed a KeyError that can occur under Selection Mode 3 and when running the manual find or replace commands (SMD*/SMS*).


Patch 1.0.3

Features Added

  • Extended the animation feature to include the ability to highlight matched and replaced geometry. Configurable with a menu.

Bugs Fixed

  • Fixed a bug that could sometimes happen during Drawscript+ that could sometimes occur due to a block not getting recognized as being associated to a TextDot.


Patch 1.0.2

Bugs Fixed

  • Fixed a bug where attempting to apply a rule under Isometry or Similarity could sometimes result in a KeyError


Patch 1.0.1

Changes

  • Using points should now be much much faster.

Technical Details

  • When solving for all transformations f that map u into w, query anchor points are chosen by prioritizing them against w’s signature in a way that minimizes plausible transformations. This prioritization is as follows:

    • First, sort u’s registration points by number of direct attributes, descending.

      • A direct attribute is an attribute applied to the point itself and not the spokes going through it.

      • These are created by points and arcs.

    • Next, sort them by the minimum number of occurrences in w of all of their direct attributes, ascending.

      • Low occurrence count in w of an attribute in u means less plausible transformations.

    • Next, sort by the number of spokes passing through them, descending.

      • Spokes are created by line carriers passing through a registration point.

      • More spokes means less potential matches in w.

    • Finally, sort them by the minimum number of occurences in w of all of their spoke attributes, ascending.


Version 1.0

Welcome to Shape Machine 1.0 for Rhino 8!

All future versions of Shape Machine will be exclusive to Rhino 8. Upgrading your Rhino 7 license to Rhino 8 is cheaper than buying a new one and lets you keep your Rhino 7 license. You can also get a temporary, 90-day license for free!

New Features

  • Faster, better, stronger!

  • Shape Machine no longer outputs geometry with manually set colors and linetypes.

    • This means you no longer have to reset geometry info to “By Layer”!

    • If you changed the color/linetype off of “By Layer”, it will preserve this.

  • No more user authorization step!

    • We’ll bring this back in the future, but since we’re only giving it out to

      students at Georgia Tech at the moment, it’s not important.

  • Your initial DrawScript+ block can now have different names:

    • 0 (the number zero)

    • main

    • Whatever you want, if it’s the only selected block. If multiple blocks are selected and none with the name 0 or main are found, you will be asked to type in the name of the block to use as the start point.

  • After running DrawScript or DrawScript+, you will be asked if you would like to output the design history as an animation! If you select yes, you can specify a .gif file you’d like to save it as.

  • Marquee Selection: select your design and draw a rectangle around geometry within the design to search for!

    • You will be asked to select the design, then you will be instructed to draw a rectangle. Whatever is inside the rectangle will be searched for as if you used the Isometry search. The geometry in the rectangle needs to be selected as part of your initial design.

    • Run the command MQRectangle in the command palette.

    • Run MQRectangleD to search under Direct Isometry.

  • You can change Shape Machine template layers to be sub-layers now! This can clean up your layers tab. You don’t have to change them, but if you’d like to, I’d suggest making a layer called “Shape Machine” and dragging the Shape Machine layers into it.

    • Note that this will mess with copy/paste because it won’t know to merge layers

      from copied-in geometry into your new sublayers. Shape Machine will know they’re the same, but it won’t automatically merge them for you. You’ll have to do that yourself.

Bugs Fixed

  • Fixed a bug where Windows users with Rhino installed not on the C drive can’t install Shape Machine.

  • Fixed a bug where having a line with its endpoints marked with points, at least one of which isn’t present in the design, on the LHS of a rule crashes Shape Machine.

  • The DrawScript “Degree” parameter now only takes affect under Affinity (as intended).

  • Fixed some bugs related to finding and inserting nearly-degenerate triangles.

Technical Details

  • Rhino 8 introduced CPython 3.9.12 support. Shape Machine has been upgraded to match.

    • This is why Rhino 7 is no longer supported.

  • Using NumPy for all vector and matrix math

  • Geometry maximization during adding/subtracting shapes is only performed along modified carriers. This can speed up the fuse process significantly.

  • During maximization, approximately coequal geometry is projected onto an “average” carrier. This helps reduce long-term floating point error.

  • A shape’s signature now includes information about the direction of lines passing through registration points, the attributes of the carriers that create the registration points, and the radius of any arc carriers centered at each registration point.

    • This takes more time in the signature generation process, but speeds up the embedding

      process significantly.


LEGACY CHANGELOG

Version 0.1.6

Bugs Fixed

  • Fixed a bug where Drawscript would occasionally crash with the message:

    AttributeError: ‘list’ object has no attribute ‘items’

  • Possible fix for a bug where Drawscript compilation would occasionally fail with a message about something not existing in the ObjectTable.


Version 0.1.5

Bugs Fixed

  • Fixed a bug where conditionals in Drawscript+ wouldn’t jump if multiple matches were found.


Version 0.1.4

Bugs Fixed

  • Squashed a bug where corrupted objects within Drawscript breaks compilation.


Version 0.1.3

New Features

  • Included templates for Drawscript+ and single rules with the plugin.

Bugs Fixed

  • Fixed an issue where polylines within a rule get duplicated upon compilation.


Version 0.1.2

New Features

  • Slight performance improvements for Drawscript compilation and execution.

  • Drawscript+ blocks no longer need to be labeled by numbers, any text works.

  • You no longer need a block labeled with a 0 to serve as a starting point for your script.

    • If one cannot be found, it will ask you to choose one of your selected blocks to use as the starting point.

  • If ShapeMachine encounters an error during its computation, it reports the error to the command history log.

    • This makes it a lot easier for devs at the SCL to figure out what’s going wrong.

Bugs Fixed

  • Fixed an issue in 0.1.1 where layers would reset to your active layer upon rule application.