下面是VisionPro的坐标空间树Coordinate Space Names文档中文版,此主题主要讲了VisionPro的坐标空间树的功能,及注意事项。
在VisionPro中,每个图像都有一个关联的坐标空间树。坐标空间树中的每个空间都有一个名称。你可以用这些名字
- 查找现有空间。
- 在创建新空间或重命名现有空间时标识空间。
- 指示存在哪些空间以及它们之间的父/子关系。
- 提取树中不同空间之间的坐标变换。
可以用三种方式表示任何非根空间的名称:
- 作为一个单独的非限定(NQ)名称,
- 作为通过树的完全限定(FQ)路径名,从根空间开始,或
- 作为部分限定(PQ)路径名,从用户提供的空间开始。
非限定(NQ)空间名称
给非根坐标空间的单个名称是其非限定名称。非限定名必须符合以下语法规则:
- 名称必须至少包含一个字符。
- 名称不能包含任何非打印字符。
- 名称不能包含任何类型(/或\)的斜杠。
- 名称不能包含除空格字符以外的任何空格。
- 名称不能是“.”、“…”、“…”、“^”或“$”。
- 名称不能以空格字符开头或结尾。
- 名称不能以标点字符开头(由ISO iswpunct()函数定义)。
非限定名作为新空间名
可以使用NQ名称指定新坐标系的名称或现有坐标系的替换名称。在这种情况下,必须指定与共享同一父空间的所有其他空间的NQ名称不同的名称。名称比较不区分大小写。如果名称不唯一,则默认情况下坐标空间树将返回错误,并且无法创建新空间。
共享同一父级的所有坐标空间必须具有唯一的NQ名称,但这不能保证NQ名称在整个坐标空间树中是唯一的。一个NQ名称可以附加到树中的多个空间。
非限定名称作为查找名称
也可以使用非限定名查找树中已存在的坐标空间。在查找期间,将对给定的NQ名称进行搜索,从根空间开始并递归地扩展到所有子空间。如果在搜索过程中只找到一次NQ名称,则找到的空间是唯一的所需空间。如果找不到该名称或多次找到该名称,则会产生错误。
完全限定(FQ)空间名称
完全限定名是从根空间开始的完整路径名。它指定树中的唯一空间。典型的FQ名称是通过将NQ名称连接到根空间的名称上,并用斜线字符“\”分隔每个NQ名称来创建的。例如,根为a的树中空间X的完全限定名可能是“a\B\C\X”。
坐标空间树始终返回以“\”字符分隔的FQ名称,但它接受向前“/”或向后“\”斜杠作为输入名称的合法分隔符。为了方便起见,名称“^”被视为根空间的别名。因此,下面的完全限定名是合法的,与前面的示例相同:“^\B\C\X”。
FQ名称有两个主要优点:
它们解决了树中潜在的歧义。例如,如果树包含两个NQ名称为“X”的空格,则名称“X”不明确,但“a\B\C\X”不明确。
它们在大型树中提供更高效的查找操作,因为不需要搜索。
根空间名称
根空间的名称是完全限定的名称。您不定义此空间,但可以更改其名称。如果重命名根空间,则新名称必须遵循NQ名称的所有规则,但可能以标点字符开头。
注意:不应更改附加到图像的任何坐标空间树的根空间名称。这些树的根空间必须为“@”,VisionPro才能正常运行。
部分限定(PQ)空间名称
部分限定名是以斜线分隔的路径名,它以指定的树中的空间开始,并指示树中的唯一空间。部分限定名需要这个单独的起始空间名来解决任何空间名的歧义。在VisionPro中,图像的选定空间名称通常用作起始空间。例如,空间名“.”通常被解释为当前图像的选定空间名。
部分限定名必须以“.”(当前用户提供的空间的别名)或“.”(其父空间的别名)开头。可以使用“\”字符作为分隔符连接其他名称。附加名称可以是NQ名称、“.”、“.”或这三个名称的组合。
部分限定名具有与FQ名称相同的优点:它们是明确的,并且查找效率高。它们还允许较短的名称字符串,并将您与树中不是起始空间的子空间的所有空间隔离。
特殊空间名称符号
您创建的每个用户空间都有一个唯一的名称;您可以在创建用户空间时指定空间的名称。除用户名外,以下特殊空间名称由VisionPro定义:
符号 | 描述 |
@ | 根空间。 |
# | 像素空间。 |
* | 显示像素空间。只有在为图形指定空间名称时,才能使用此特殊名称。 |
^ | 根空间的别名。 |
. | 图像的当前选定空间名称。只能将此特殊名称与由cogImageobject实现的方法一起使用;CogCoordinateSpaceTree没有“选定空间”。 |
.. | 当前选定空间的父空间名称。 |
$ | 父空间为其子空间创建的子坐标空间。VisionPro图形系统使用“$”允许形状的多代层次结构。可以使用图形的GetParentFromChildTransform方法获取此空间。 |
检查空间名称语法
您可能需要检查空间名称的有效性,如果该名称非法或未出现在坐标空间树中,则返回错误。如果有合适的树,您可以很容易地做到这一点。使用树的VerifyName或LookUpName方法。但是,如果树不可用,则可以使用CheckSpaceNameSyntax方法检查提供的空间名称的有效性。
评论 (0)