Changes include:
Add internal function list/tuple(). Spreadsheet range expression can be expanded to list or tuple, e.g.
Code: Select all
list(A1:A10)
Code: Select all
<<This is formatted string %s and %s>> % tuple(A1; A2)
Code: Select all
A1[B2+1][C3][D4:-1]
New constant, None, True, true, False, false.
Sub-object referencing scheme. This can be useful if for example, the 'Group' below is a link to an external object, so Box is not inside the same document.
Code: Select all
Group.<<Box.>>.Placement
# or, with sub-object label referencing
Group.<<$Cube.>>.Placement
EDIT: To serve as a temporary document of the extended expression engine. I'll list some additional features here.
New local property referencing syntax. Say you want to reference an object's placement base in an expression for the same object. The old syntax Placement.Base may have ambiguity problem in case there is an object also named as 'Placement'. You can use the new local property referencing syntax .Placement.Base to avoid ambiguity.
New built-in functions,
Code: Select all
create(type, ...)
# Creates a python object of 'type'
# 'type' shall be a string. Currently supported types are, placement, rotation, vector, and matrix.
# Additional argument are passed to those python object's constructor.
# E.g. create(<<vector>>, 1, 0, 0)
mscale(matrix, vector)
mscale(matrix, number, number, number)
# Scale the matrix with the given vector
minvert(matrix|placement|rotation)
# Invert the given matrix, placement or rotation
There is a new way to batch edit expressions using treeview context menu item 'Expression actions...'. There are sub menu actions,
* Copy selected: copy only expressions of the selected objects
* Copy active document: copy expressions of all objects in the active document
* Copy all document: copy expressions of all objects in all open documents.
* Paste: paste what every expressions in the clipboard
The copied expression is in plain text format, and you can edit it using any text editor. Each expression is preceded by two special lines with marker ##@@. The first line contains
Code: Select all
<binding_property_path> <document_name>#<object_internal_name>.<expression_hosting_property> (<object_label>)
Code: Select all
##@@ .Placement.Base.x Unnamed#Box.ExpressionEngine (Cube)
##@@
Width
##@@ A1 Unnamed#Spreadsheet.cells (Spreadsheet)
##@@
Box.Placement.Base
##@@ A2 Unnamed#Spreadsheet.cells (Spreadsheet)
##@@<Cell alias="box_base" />
create(<<vector>>; Box.Width; Box.Height; Box.Length)