规则内联

本部分将介绍几何标签的基本概念。

组件标签

标签是基于字符串的信息,直接存储在形状几何资产的拓扑组件上。 每个面、边和折点可以具有任意数量的标签。 其用途是从语义上标识几何的不同部分,例如在使用 comp 操作时。

标签是用于定义其名称的字符串。 示例:"Name"

标签等级

可以使用名称分隔符“.”(点)按等级对标签进行分组。 示例:"Name1.Name2""Name1.Name3"

标签内以点分隔的名称称为子标签

标签查询

标签查询是一个字符串,可能包含用于替换子标签的通配符。 存在两个通配符:

?(问号)

精确匹配 1 个子标签。 示例:"?.Name"

*(星号)

匹配 1 个或多个子标签。 示例:"Name1.*.Name2"

基于等级分组,标签查询 "Name1" 不仅可匹配精确标签 "Name1",还可匹配带有附加子标签的标签,例如 "Name1.Name2""Name1.Name2.Name3"

相关内容

自动标签

所选几何创建操作将自动应用预定义标签。 这些标签可从语义上标识输出几何的不同部分。

某个操作应用的自动标签仍然可以访问,直到再次调用该操作并将其替换为新标签为止。

操作在面上应用自动标签

面组件分为三种主要类型:底部、侧面和顶部。 底部组件对应于原始面,可以进一步将新侧面分类为内部或外部,具体取决于其是否从孔中发出。

拉伸

Init --> 
    extrude(4)
    comp(f) { isTagged("extrude.bottom")     : Blue 
            | isTagged("extrude.side.outer") : Yellow
            | isTagged("extrude.side.inner") : Red
            | isTagged("extrude.top")        : Green }

请参阅 extrude 操作。

自动标签拉伸

包络矩形

Init --> 
    envelope(normal,4, 2.5,45, 3,45, 3.5,50, 2,50)
    comp(f) { isTagged("envelope.bottom")     : Blue 
            | isTagged("envelope.side.base")  : Yellow
            | isTagged("envelope.side.slope") : Orange
            | isTagged("envelope.side.inner") : Red
            | isTagged("envelope.top")        : Green }

请参阅 envelope 操作。

自动标签包络矩形

锥化

Init --> 
    taper(4)
    comp(f) { isTagged("taper.bottom") : Blue 
            | isTagged("taper.side")   : Yellow }

请参阅 taper 操作。

自动标签锥化

屋顶

所有 roof 操作都应用相同的基本标签“roof”。

RoofAutoTags -->
    comp(f) { isTagged("roof.bottom") : Blue 
            | isTagged("roof.side")   : Yellow
            | isTagged("roof.top")    : Green } 

Init --> 
    roofGable(byHeight, 4)
    RoofAutoTags

请参阅 roofGable 操作。

自动标签 roofGable
Init --> 
    roofHip(byHeight, 4)
    RoofAutoTags

请参阅 roofHip 操作。

自动标签 roofHip
Init --> 
    roofPyramid(byHeight, 4)
    RoofAutoTags

请参阅 roofPryamid 操作。

自动标签 roofPyramid
RoofAutoTags -->
    comp(f) { isTagged("roof.bottom")     : Blue 
            | isTagged("roof.side.outer") : Yellow
            | isTagged("roof.side.inner") : Red
            | isTagged("roof.top")        : Green } 

Init --> 
    roofRidge(byHeight, 4)
    RoofAutoTags

请参阅 roofRidge 操作。

自动标签 roofRidge
Init --> 
    roofShed(byHeight, 4)
    RoofAutoTags

请参阅 roofShed 操作。

自动标签 roofShed

Boolean 3D 操作

BoolAutoTags -->
    comp(f) { isTagged("bool.A") : Blue 
            | isTagged("bool.B") : Green } 

Sphere --> t(0.3,0.3,0.3) primitiveSphere()

Init --> 
    extrude(1)
    union Sphere
    BoolAutoTags

请参阅联合操作。

Init --> 
    extrude(1)
    subtract Sphere
    BoolAutoTags

请参阅减去操作。

Init --> 
    extrude(1)
    intersect Sphere
    Sphere --> t(0.3,0.3,0.3) primitiveSphere()

请参阅相交操作。

操作在边上应用自动标签

setback 操作及其变体 - setbackToAreasetbackPerEdgeshapeLUOsplitAndSetbackPerimeter - 可以使用相同的基础“setback”自动标记边组件。

Shape

ShapeAutoTags -->
    comp(e) { isTagged("setback.front") : Blue 
            | isTagged("setback.side")  : Yellow
            | isTagged("setback.back")  : Green }

Init --> 
    setback(4) { front : ShapeAutoTags }
自动标签形状

剩余部分

RemainderAutoTags -->
    comp(e) { isTagged("setback.side")      : Yellow
            | isTagged("setback.back")      : Green 
            | isTagged("setback.remainder") : Purple }
Init --> 
    setback(4) { front     : NIL
               | remainder : RemainderAutoTags }
自动标签剩余部分

标签传播

通常,几何修改操作将保留现有组件上的标签,并将标签传播到新构造的组件(如果适用)。

几何细分

细分的边和面组件将保留其标签。 新构建的组件没有初始标签。

split 操作将保留 roofGable 操作应用的自动标签。

Init --> 
    roofGable(byHeight, 4)
    split(z) { ~2 : RoofAutoTags }*
标签传播 - 几何细分

面标签传播

在现有面上构造的新面可获取其源面的标签。

roofGable 操作应用的自动标签将自动传播到 extrude 操作构建的新面。

Init --> 
    roofGable(byHeight, 4)
    extrude(1)
    RoofAutoTags
标签传播 - 面

边标签传播

从现有边发出的新面可获取其源边的标签。

setback 操作应用的边自动标签将自动传播到拉伸的侧面。

SetbackAutoTagsOnFaces -->
    comp(f) { isTagged("setback.side")      : Yellow
            | isTagged("setback.back")      : Green 
            | isTagged("setback.remainder") : Purple
            | all                           : White }
Init --> 
    setback(4) { front     : NIL
               | remainder : Extrude }
Extrude --> extrude(4)
            SetbackAutoTagsOnFaces
边标签传播 - setback

示例 envelope 操作。

Init --> 
    setback(4) { front     : NIL
               | remainder : Envelope }
Envelope --> 
    envelope(normal, 4, 2.5, 45, 3, 45, 2, 50, 2, 50)
    SetbackAutoTagsOnFaces
边标签传播 - envelope

示例 offset 操作。

Init --> 
    setback(4) { front     : NIL
               | remainder : Offset }
Offset --> offset(-2)
           SetbackAutoTagsOnFaces
边标签传播 - offset

有关更多示例,另请参阅 setTagsFromEdgeAttrs 操作。

几何清理

cleanupGeometry 操作将保留现有标签,由此防止移除具有标签的边以及具有不同标签的面之间的边。

cleanupGeometry 操作仅合并具有相同标签的面。

Init --> 
    setback(4) { front     : NIL
               | remainder : OffsetCleanup }
               
OffsetCleanup --> offset(-2)
                  cleanupGeometry(all, 0)
                  SetbackAutoTagsOnFaces
几何清理 - 合并具有相同标签的面

用于清除所有标签的操作

按设计

这些操作将替换当前形状的几何资产,从而清除现有组件标签。

不受支持

这些操作(目前)不支持使用组件标签和清除所有标签。