Altair EEvision™

Reserved Attributes

This document is a specification for certain reserved EDB attributes that are stored in the EDB. The EDB Creator API describes how to store (general purpose) attributes (like other objects) in the EDB; here, we define the meaning of these reserved attributes for the Altair EEvision™ application.

List of Attributes

Reserved attributes all start with a leading space character in their names. To make that space character visible, we write it, e.g., as follows: "␣color" for an attribute whose name is a space followed by the string color. In contrast to normal, general-purpose attributes, whose string values are usually displayed in the GUI or made available to other parts of the application through the GUI API, the reserved attributes may change the rendering of its object. Some may depend on the current EEvision settings (initialized by eev.conf).

Reserved
attribute
Supported at
object type
Used
by
Attribute value
description
Attribute value
example
␣color Wire EEV Defines one, two, or three colors to be displayed in a small rectangular box at the wire – depending on the value of config.wireMark in the Settings. The color values are stored as space-separated fields as the value of the attribute (actually one color, a pair, or a triplet of colors).   pink #ffa500 blue
Component EEV Defines either the component's or connector's background color, or its background and foreground color (if the value is a pair of colors).   #8080ff
Connector EEV   #8080ff red
␣imagedsp ECU or UNDEF Component EEV   Defines an image to be displayed inside the component body. The value of the attribute is a comma-separated list of fields.   sensor.svg,100,100
␣symdef SVG Component EEV   Defines the symbol shape to be displayed as component body. This symbol shape defines label locations, body size and usually includes a centered SVG image. It must be formatted as Tcl list.   DEF fpath 0 0 0 80 97 80 97 0 0 0 linewidth 0 imagedsp Relais.svg -ul 0 0 97 80 attrdsp @name -lc 74 -2 12
SVG Cavity Defines the pin-related parts of the symbol shape, which is the pin location and any pin label location. For backward compatibility this is optional; if this attribute is not given, then all data is expected to be stored in the SVG component's symdef attribute. Technically, EEvision will concatenate the body's symdef and all cavities' symdef into one description; however, the pinnames (the second word in the symdef values) will be replaced by any internal name needed to solve potential name conflict issues gracefully.   pin 12 left -loc 18 62 18 62
pinattrdsp @name -ul 13 68 10
␣symbol SVG Component EEV Defines the symbol shape by name, referring to a symbol definition by name in an external symbol file. This attribute is deprecated. Future versions of EEvision will not support it. Please use "␣symdef" instead.   Relais
␣ecfile Cavity end
circuit
  Defines the end-circuit file to be optionally displayed related to a certain cavity. Formatted as comma-separated fields.   G51.svg,1,IN1,left
␣index Edb root file
select
  Defines the names of root attributes that are optionally displayed in the eevision.html landing page. Formatted as tab-separated fields.   desc author vers
␣href any EEV
info
  Defines an HTML hyperlink to be displayed in the info window and balloon window for the object. As an exception to EDB standards, multiple (duplicate) "␣href" attribute are supported. Formatted as comma-separated fields. Link,https://www.altair.com,Altair
␣image any EEV
info
  Defines an HTML image to be displayed in the info and balloon window for the object. Formatted as comma-separated fields. Multiple "␣image" attributes are supported. Image, ecu.png, 320, 240
␣video any EEV
info
  Defines an HTML video to be displayed in the info and balloon window for the object. Formatted as comma-separated fields. Multiple "␣video" attributes are supported. Video, ecu.mp4, 320, 240
␣srcref any EEV
info
  Defines references to the original source file. These attributes are automatically created by an EDB converter tool (currently only created by edml2edb). at118m.edml:5,10
more.edml:3
␣expr CONFIG Module 100% filtering Defines a Boolean expression to be evaluated at EEvision startup with 100% filtering (defined by URL parameters fv).   K12 & (S33P | TK > 12)
␣smartstop Cavity, Connector, Component EEV extract Defines stop objects for the smart extraction by the Extract button or by the ExtractOne API function if the options.smart argument is not set to "off". The value of the attribute is an arbitrary string; it only matters whether the object has a "␣smartstop" attribute or not.  
␣diff
␣length
␣weight
␣source
Internally created and used by the edbdiff, docgen, and details plugins as well as EDB transformations for logical and block mode. They are considered as experimental.

The Attribute Value Syntax

␣color
A color is defined either in hex format or by a color name, optionally followed by a slash and the transparency of the color. Without the slash-separated transparency, the color is opaque. The hex format is prefixed with a # character, followed by 6 hex digits, e.g., #ffa500 for orange color – with the first two hex-digits representing red, the next two green, and the final two blue, each in a range from 0x00 (dark) to 0xff (bright). For half-transparent colors, the hex format can be appended by a slash and two more hex digits, defining the transparency in a range from 0x00 (opaque) to 0xff (full transparent). For example: #ffa500/7f defines a 50% transparent orange color.
Alternatively to the hex format, one of the following predefined color names can be used:
aliceblue  
antiquewhite  
aqua  
aquamarine  
azure  
beige  
bisque  
black  
blanchedalmond  
blue  
blueviolet  
brown  
burlywood  
cadetblue  
chartreuse  
chocolate  
coral  
cornflowerblue  
cornsilk  
crimson  
cyan  
darkblue  
darkcyan  
darkgoldenrod  
darkgray  
darkgreen  
darkgrey  
darkkhaki  
darkmagenta  
darkolivegreen  
darkorange  
darkorchid  
darkred  
darksalmon  
darkseagreen  
darkslateblue  
darkslategray  
darkslategrey  
darkturquoise  
darkviolet  
deeppink  
deepskyblue  
dimgray  
dimgrey  
dodgerblue  
firebrick  
floralwhite  
forestgreen  
fuchsia  
gainsboro  
ghostwhite  
gold  
goldenrod  
gray  
green  
greenyellow  
grey  
honeydew  
hotpink  
indianred  
indigo  
ivory  
khaki  
lavender  
lavenderblush  
lawngreen  
lemonchiffon  
lightblue  
lightcoral  
lightcyan  
lightgoldenrodyellow  
lightgray  
lightgreen  
lightgrey  
lightpink  
lightsalmon  
lightseagreen  
lightskyblue  
lightslategray  
lightslategrey  
lightsteelblue  
lightyellow  
lime  
limegreen  
linen  
magenta  
maroon  
mediumaquamarine  
mediumblue  
mediumorchid  
mediumpurple  
mediumseagreen  
mediumslateblue  
mediumspringgreen  
mediumturquoise  
mediumvioletred  
midnightblue  
mintcream  
mistyrose  
moccasin  
navajowhite  
navy  
oldlace  
olive  
olivedrab  
orange  
orangered  
orchid  
palegoldenrod  
palegreen  
paleturquoise  
palevioletred  
papayawhip  
peachpuff  
peru  
pink  
plum  
powderblue  
purple  
red  
rosybrown  
royalblue  
saddlebrown  
salmon  
sandybrown  
seagreen  
seashell  
sienna  
silver  
skyblue  
slateblue  
slategray  
slategrey  
snow  
springgreen  
steelblue  
tan  
teal  
thistle  
tomato  
turquoise  
violet  
wheat  
white  
whitesmoke  
yellow  
yellowgreen  .
For semi-transparent colors, the color name above can be appended by a slash and a decimal number in a range from 0 (opaque) to 100 (full transparent) and a percent character. For example: gray/50% defines a 50% transparent gray color. As an exception the name ? is supported for no/unknown color (same meaning as not defining the color at all) and can be used to define only some colors in a pair or triplet, like: ? ? steelblue.
Validate color in the EDB Creator API by calling EdbValidateAttr("␣color", value) or set the EdbStrictFValidAttr flag in the EDB, before calling EdbNewAttr("␣color", value).
␣imagedsp
This attribute defines an image to be displayed inside a Component. The attribute value is the image name plus optional comma-separated width and height of the displayed image. For instance, "sensor.svg,40,50" (with width=40 and height=50) or "sensor.svg" (with default width 100 and default height 100). If the image name includes a suffix (here .svg), then the image is loaded from a location relative to the location of the .edb file. If the image name includes no suffix, like in "A,40,50" or "A", then the corresponding EEvision built-in image is loaded.
Built-in Images: There is a built-in image for each upper-case character from A to Z as listed here (some are empty):
A = A
B = B
C = C
D = D
E = E
F = F
G = G
H = H
I = I
J = J
K = K
L = L
M = M
N = N
O = O
P = P
Q = Q
R = R
S = S
T = T
U = U
V = V
W = W
X = X
Y = Y
Z = Z
Validate imagedsp: TODO
␣symdef
The string value of the “␣symdef” attribute (as well as the syntax of the symlib file, referred to by the “ symbol” attribute) is a space-separated list of items – actually following the syntax of Tcl lists (if there are spaces or other special characters in an item). Each item is either a keyword or a string value representing a name or a number.
Validate symdef: TODO
␣ecfile
The "␣ecfile" attribute is used by the endcircuit plugin to display the inner circuitry of a component. A detailed description of the syntax of the "␣ecfile" attribute can be found in the documentation of the endcircuit plugin.
Validate ecfile: TODO
␣index

This attribute at the EDB database root node is evaluated by the default EEvision landing page eevision.html. For the currently selected dataset and when “Show details” is activated, the values of those root attributes are shown whose names are listed in the value string of the "␣index" attribute.

The list of attribute names needs to be separated by tab characters, not spaces!

Validate index: TODO
␣href
Balloon Window for the component FZM, showing its attributes.
EEvision's balloon window showing – apart from the normal attributes Alias, CompID, Description, Harness, and PartNumber – an image, a video, and a link. They were created using the reserved attributes "␣image", "␣video", and "␣href".
The "␣href" attribute is used by the EEvision GUI to display links to other web pages in the info and balloon window (see Figure 1). For this, the value of the attribute needs to be a list of three comma-separated entries, e.g.,
"␣href" = "Webpage,https://www.altair.com,Altair Engineering Inc.".
This attribute generates a line in the attribute table of the info and balloon window. The value in the “Name” column is “Webpage”; the entry in the “Value” column is a link with the name “Altair Engineering Inc.” that points to the given URL. If multiple links should be generated, several attributes with the same name "␣href" can be created.
Validate href: TODO
␣image
The "␣image" attribute is used to display images in the info and balloon window (see Figure 1). The value of the "␣image" attribute is a comma-separated list of four entries:
  1. Name of the entry in the attribute table
  2. File name of the image file (including extension, relative to the directory of the EDB file)
  3. Width of the image in pixels or “auto” if the width should be determined automatically.
  4. Height of the image in pixels or “auto” if the height should be determined automatically.
If either width or height is specified as “auto”, the image is scaled preserving its aspect ratio. If both dimensions are “auto” the natural size of the image is used as long as its width does not exceed half of the width of viewport.
Example:
"␣image" = "FZM,fzm_plug.png,300,auto"
Validate image: TODO
␣video
We can use the "␣video" attribute to insert a video into the attribute table of an object's info or balloon window (see Figure 1). The syntax of the "␣video" attribute is the same as the syntax of the "␣image" attribute.
Example:
"␣video" = "FZM,fzm_video.mp4,300,auto"
Validate video: TODO
␣srcref
The string value of the "␣srcref" attribute is a file name, followed by a colon (:), followed by a comma separated list of line numbers or line number ranges (indicated by a dash (-)). For example at118m.edml:5,10,102-108,210 defines references to the source file at118m.edml at lines 5, 10, 102 to 108, and 210.
␣expr
The string value of the CONFIG Module's "␣expr" attribute defines a Boolean expression based on operators and input variables. The operators are | (or), & (and), ! (prefix not), ' (postfix not) and () (braces). The operator precedence is | < & < ! < '. The input variable names consist of alpha and numeric characters and “_”, but the first character must be an alpha or “_”. The variable names are case-sensitive. The input variables are given as true (if set by the URL parameter fv) or given as false (if not set). For the 100% filtering, each CONFIG Module's Boolean expression is evaluated to true or false. True means, this CONFIG Module is added to the filtering result. False means, this CONFIG Module is not added. Here is an example truth table:
input variables Boolean expression
A12 & B7 | !A3
      ⇒ true
    fv=A3 ⇒ false
  fv=B7   ⇒ true
  fv=B7 fv=A3 ⇒ false
fv=A12     ⇒ true
fv=A12   fv=A3 ⇒ false
fv=A12 fv=B7   ⇒ true
fv=A12 fv=B7 fv=A3 ⇒ true
If the Boolean expression has a syntax error, then the evaluation returns false unless a special variable _debug_ is set by “fv=_debug_”. If so, then processing stops and the syntax error will be reported at start-up time.
As mentioned above, the input variables are normally only 0=false (if not set) or 1=true (if set by the fv URL parameter). But there is an integer extension allowing each input variable to be set to any positive integer, e.g., fv=B7=100. Then, it may be useful to check for integer ranges in the Boolean expression, using additional operators: <, > and = plus constant integer numbers, as shown in the following incomplete example truth table:
input variables Boolean expression
A12 & B7 < 42 | !A3
fv=A12 fv=B7=150 fv=A3 ⇒ false (true & false | !true)
fv=A12 fv=B7=40 fv=A3 ⇒ true (true & true | !true)
fv=A12   fv=A3 ⇒ ditto, B7 is not set (ergo 0)
The precedence of the operators <, >, = is higher than & but lower than !.
There is an additional general purpose operator ? … : … to combine sub-expressions like: “subexpr0 ? subexpr1 : subexpr2” with the same meaning as in common programming languages. This operator has the lowest precedence (lower than |). As common in programming languages, all operators are left associative, except for the operator ' (postfix not), which is right associative.
Validate expr in the EDB Creator API by calling EdbValidateAttr(mod, "␣expr", value) or set the EdbStrictFValidAttr flag in the EDB, before calling EdbNewAttr(mod, "␣expr", value). If it succeeds, the EdbValidateAttr(mod, "␣expr", value) additionally returns a list of variables that occur in the Boolean expression (as an extra service to the caller).