BIM建筑环境规则和分析(BERA)语言介绍(七)第六章 申请和评估

7 篇文章 0 订阅

       申请和评估

        本章报告BERA 语言的应用和评估结果。BERA语言是为建筑环境 规则和分析而设计和定义的,正如BERA的字面意思。然而,它的实施重点是评估建筑物循环和空间规划的应用。所述 BERA语言工具1.0版已经执行,并且将在描述 使用各种实施例详细(也请参阅附录d:BERA语言用户手 册)。 通过使用选定的规则和分析示例,将评估BERA语言就其目前的目的和范围而言。

      本章还将尝试基于关于现实世界规则的实用示例程序,展示BERA语言如何在实际建筑设计评审中轻松有效。与预先确定的 软件驱动方法相比,作为用户驱动方法提出的BERA语言工具 显示出更高的灵活性和对特定领域问题的保真度。这里的“问题” 一词不仅包括一般建筑设计问题,还包括特定领域的问题,如建筑流通和空间 规划中的规则检查问题,第1.1.3节描述了本论文的范围和领域。其他 换句话说,“保真度”意味着BERA语言设计应该能够处理 建立环境规则和分析(BERA)的一般问题,并且在这个初始设计和实现中“保真度”的重点是关于建设流通和空间计划。就其可扩展性而言,第5.6.2节构结演示了BERA语言如何处理不同类型的问题 域。

       BERA语言工具经过精心实施和测试。在 终极测试将来自于语言使用者,以及开放式的测试和支持 的安排被刨。本章试图展示其处理与空间规划和建筑流通应用有关的特定领域问题的能力。因此,本章重点介绍 BERA语言的关键方面,以应用和评估与此类 问题相关的规则。如语言设计章节所述,本研究并未尝试 分析或处理全球范围内的整套隐含规则,设计指南或代码。 但是,它们仍然是重要的参考,因为BERA语言应 足够表达,以反映它们在建筑环境规则和分析任务中的作用。在 笔者和他的团队已经参与了一些设计规则检查软件 开发项目[伊士曼等,2009C; Lee,JK,2010b; Lee,J,2010; Sanguinetti等 ,2010]。

        反思实际项目的经验知识,本章的 结构如下,以有效地描述BERA语言的应用和评估:
1)从现实世界规则和现有的软件驱动方法中回顾问题 关于建筑物循环和空间规划,
2)描述BERA语言处理规则 条件的重要能力:BERA语言和物料清单如何处理建筑物,物体 ,操作和价值,以及
3)描述建筑物的能力BERA语言表达 了解决建筑物复杂状态的表现力,规则作为规则条件的集合。

       本章描述了BERA语言如何 根据其处理建筑元素及其属性的功能来分析建筑模型。在 下面的章节(6.3至6.5)描述了评估实际应用中使用几个例子BERA方案和建设循环和空间规划的结果。

       现实世界的规则和分析

        处理现实世界规则的软件驱动方法

图6.1。基于表格的参数示例为美国法院的流通规则。

        在商业规则检查软件中,规则语句 在某种类型的数据结构中被翻译和处理:主要是参数的表格结构[Eastman et et al,2009; Lee,J等,2010]。图6.1显示了处理此类基于表的 参数的接口。这个例子代表了美国法院的流通规则[USCDG,1997; 2007年]在SMC [Solibri,2010]。图6.2显示了其中一个参数编辑界面。一个行包含一个单一的规则,每一列包含其条件参数。对于 例如,第一行代表一个循环规律:“从新闻/媒体室一个循环 的法庭应该是公开的。” 名为“Start”的列包含空格名称“按下/媒体室”,“目的地”栏目包含多个名为 “破产法庭”,“地区法庭”等的审判室,“过渡条件”栏目 包含多个流通条件,如“安全级别:公共”。使用这种结构, 软件可以针对给定的建筑模型评估数百个“已翻译和参数化”的规则。

        尽管这些基于表的参数在某种情况下相当 稳健地处理规则,但以此格式表示的规则具有局限性。例如, 循环路径的过渡条件由一组属性预定义:安全级别, 使用,距离,直接访问和垂直访问。图6。 控制这些属性。该属性的另一个重要作用是它可以用于 收集对象,如图6.3中的示例所示。它的对象属性和操作符价值 关系在系统上等同于图6.2中的例子。基于表的参数方法的最大限制是其 特定于域和用户界面的功能,与其他应用程序相同。

        就可扩展性而言,这种软件驱动方法的局限性; 例如,在这个基于表的 参数方法中添加其他属性或操作的方法非常有限。但是,语言驱动的方法可以克服这种限制 因为它基于广义模型,在这种情况下,它是 从给定建筑模型导出和计算的BERA对象模型。如图4.2和4.3所示, 相同任务的用户可以使用 相当多的与域无关的对象属性(包括一些特定于域的属性)。当BOM横向或纵向延伸时,规则最容易扩展。(请参阅5.6节) 此外,此初始实现中的BOM结构具有一些用户可分配的属性。(参见5.3节) BERA语言工具在BOM可扩展性方面的进一步发展需要更多用户可管理的属性。

图6.2。基于表的参数示例,其中一个条件如图 6.1 所示。

图6.3。基于表的参数示例,用于 使用参数收集空间对象组件。

          通过BERA语言处理规则

           正如介绍和语言设计章节所述,BERA语言的开发基本上旨在克服软件驱动方法的局限性。通过使用BERA语言,可以获得更多属性,并且可以像BOM一样动态应用:例如,空间深度,匝数,面积,体积,高度,甚至其他相关类型的建筑元素,例如用户可以使用窗口或沿着路径的墙壁上的窗口区域等,但是 图6.1中所示的参数驱动方法到目前为止还不能支持它们21。这些是21在图6.1的表中,为循环规则定义了总共183行。在 用于相同规则检查的BERA程 序中,只有24种不同的规则定义用于处理这些规则, 因为空间名称可以在执行语句中定义为给定的用户参数而 不是规则定义。执行语句可以直接包含 起始, 必需和目标空间的空间名称,但BOM定义语句可以 针对不同的建筑模型更精确,更灵活地处理它们。 

        使用BOM处理程序从给定的建筑模型导出和计算(参见 第5.3节)。此外,这些属性可以扩展,如 前一节所述:BERA对象模型的垂直可扩展性。 开发属性越多,可以在不需要额外 耗时的实现的情况下评估更复杂的规则。作者认为,这是 使BERA语言高度保真地解决现实世界规则问题的理想方法之一,而 不是分析和定制世界上所有规则。

         其中一个基本问题是所有现实世界的代码,规则或设计 指南是用自然语言为人类编写的,而不是用于BERA语言或任何 其他类型的计算机显式形式。将会有一些 细微差别并且需要解释的表达方式。此外,设计指南,规则或代码 由不同的组织和利益相关者以非常不同的方式进行管理。

       由作者及其团队审查的公开可用的设计指南,规则和代码示例如下:[AIA,1997; 美国访问委员会,2002年; 纽约市,2004年; NFPA, 2006; USCDG,1997; 2007; 国际刑事法院,2010年; WBDG,2010]。其中包括美国法院设计指南[USCDG,1997; 2007年]经过仔细审查并翻译成基于表的参数如上一节所示。包括规则翻译和形式化在内的问题超出了本研究的范围。关于分析循环规则和生成基于表格的参数的详细问题在[Lee,J,2010]中有所描述。相反,反映作者和他的团队在研究和开发项目上的努力[Eastman et al,2009],本章重点描述了所提出的BERA语言如何具有表达各种规则和条件所需的语义能力。考虑到主要基于定性问题的多个相关视角,现实世界的规则很复杂并且需要进行讨论。其中一个 提出的解决这个问题的方法是在新提出的 建筑物状态抽象中使用BERA对象模型(BOM)。           

          BERA语言基本上处理为建筑环境规则 和分析目的构建对象,其属性,运算符和值。通过使用BERA语言,操作数由对 BOM,运算符和值的点符号访问组成,在技术上负责表示 规则或其中一个条件。换句话说,这使规则语句能够 分解为人和计算机的结构化和可操作的表达式。

            在以下部分中,示例程序将尝试演示 BERA语言设计章节中的问题。它们可归纳如下:

            1)BERA语言支持动态BOM的各种定义方法。 BERA语言支持基于点符号的用户定义BOM 的条件定义,而基于名称字符串的匹配是当前 软件驱动方法的唯一方法。

            2)BOM表的点符号访问可用于BOM定义和规则 定义。在每个定义中,可以用 表达语句来描述多个条件,例如逻辑连词:“和”和“或”。

             3)BERA语言支持各种操作语句,用于处理 设计规则的复杂性以及空间对象和 属性的复杂关系。它们是逻辑运算,逻辑值,递归,否定等。 此论文还提出并实施了BERA语言工具还支持 高级用户访问较低级别数据以及直接访问BIM 平台API 的目标编程语言(在此实现中为Java)。

             BERA语言绝不是完整的。但是,BERA语言工具已经证明,它使用户能够以 比通用编程语言更容易的方式分析建筑模型,并且比预定义的应用程序界面(如上一 节中介绍的基于表格的参数)更强大。由于BERA语言旨在成为一个简单而强大的特定领域语言,以下部分中的BERA语言程序示例将 证明其对实际问题的保真度。

            处理建筑物的应用对于应用和评估,已经使用BERA语言工具v.1.0 测试了各种建筑模型,包括 由专业建筑师为实际建筑项目生成的一些建筑模型。但是,本章描述 了使用单一模型的测试结果,因为一些建筑信息的非公开 问题和测试的一致性。测试建筑模型如图6.4所示。它是一个 测试用途的概念设计模型,有104个空间,3个楼层,115个门,17个 列,185墙,总面积为45,336 SF。该模型仅 使用关联的对象属性进行了精心建模,并且与 实际项目中常用的模型没有差异。本章介绍基于此 模型的示例。每个程序示例在表中描述,该表有三行:第一行显示 BERA程序示例,第二行显示从BIM 平台(SMC)捕获的可视化结果,最后一行显示从BERA 控制台返回的文本结果(一些是省略的地方太长了)。在前一章中,图5.14和 5.14显示了该工具的界面:SMC中的BERA语言编辑器,控制台和模型视图 界面。

 

图6.4。本章中运行BERA语言程序的测试模型22。

           静态构建元素

           在处理复杂的BERA程序示例之前,以下是静态构建对象(如空间,楼层及其容器 - 建筑物)的一些基础知识。由于 BERA语言工具不会尝试更改建筑模型本身,因此当给定建筑模型加载 到系统中时,可以静态地建立其关联属性,直到用户关闭它为止。本节描述了一些 处理和显示此类静态构建对象的BERA程序示例,与图4.2中的静态BOM 定义相同。

          表6.1显示了如何使用简单的`get'命令获取建筑物,楼层和空间物体。对于get(Building),在BOM中定义的文本信息集显示在BERA控制台中。执行语句GET(楼)生成文本 信息和地板的边界多边形的图形可视化(一楼是22测试建筑模型这一章屏幕显示图像是从BERA捕捉 语言工具V.1.0,基于BIM平台Solibri上 ModelChecker®v6。该模型 由AutodeskRevit®2010生成,并导出到IFC 2X3。为了更好的可见性,两层楼被 有意地建模为小尺寸,它们被放置在 垂直循环和其垂直的地方可视化并不重要。

         语句get(Space)以文本 格式显示整个空格的属性,并可视化填充颜色的空间边界多边形。BERA 控制台打印出整套信息,但本章中的表只显示 了它们的子集,因为有时它们太长(“......”表示 从表中省略了一些重复数据)。此外,还提供了这些示例中显示的结果,以 查看本章中使用的测试模型的详细信息。

          表6.1。使用:get(args)检索静态构建对象。

得到(建筑物); 得到(楼); 得到(空间);

[BERA]解析bExeStat =============

1.
exeCommand = get
args =构建

argsType1 =构建

argsType2 =

2.

exeCommand = get args = Floor argsType1 = Floor argsType2 =

3.
exeCommand = get args = Space argsType1 = Space argsType2 =

[BERA]语言执行#1 ================ command = get ,args =建筑物

[BOM]建筑物=============

1.
id = 1
fileName = BeraModel_3Floor
numberOfFloor = 3
numberOfSpace = 104
numberOfDoor = 115
numberOfSlab = 5
numberOfColumn = 17
numberOfWall = 185
area = 45336.4
totalNetArea = 41664.88
height = 31.0
elevationHeight = 47.0
volume = 875479.32
firstFloor = [2] Level 1
designPhase = Late Concept Design bimDesignTool = Autodesk Revit Architecture 2011 ifcVersion = IFC2X3
buildingGrossArea = 45336.4 structuredParkingArea = 0.0
mepArea = 852.66
skinArea = 42985.36
externalWallArea = 2331.48
largestFloorArea = 40653.88
...

[BERA]语言执行#2 ======== ======== command = get,args = Floor

[BOM] Floor =============

1.
id = 1
GUID = 3_K4qH1dT7kQaYapBFHa8k

name = Level 1
area = 40653.88 totalNetArea = 37492.56 高度= 20.0 elevationHeight = 0.0 volume = 813077.6118

number = 1
Space = [bera.bom.Space@d86395,... bera.bom.Space@96a71f] Slab = [bera.bom.Slab@1481cb6]
...

[BERA]语言执行#3 ==== ============ command = get,args = Space

[BOM]空间=============

1.
id = 1
GUID = 3gIzoCOwD6aRpAaskFPtU6
name =存储
编号= 90
area = 111.1
height = 10.0
volume =
1111.0 Building = bera.bom.Building@1547ec9 Floor = bera.bom.Floor@b8b6e9
basicRsf = 130.53
department = Residence
security = Secure
bomaCategory = Office

2.
id = 2
GUID = 2 $ MVzGbqDDDx2L1crlzBrm name =衣橱
number = 83
area = 36.33
height = 10.0
volume = 363.3
Building = bera.bom.Building@1547ec9 Floor = bera.bom.Floor@b8b6e9 basicRsf = 46.94
department = Education Center security = Public
bomaCategory = Office

...

92.
id = 92
GUID = 3jj0lDqC1F68GyiajiLG2A 名称=更衣室房间
数= 88
面积= 117.15
高度= 10.0
体积= 1171.5
建筑物= bera.bom.Building@1547ec9 楼层= bera.bom.Floor@b8b6e9 basicRsf = 132.08
department =教育中心
安全=安全
 

bomaCategory = Office

          静态元元素示例:图形

           在当前的BERA语言工具实现中,还有另一个重要的静态 元元素图形。本节描述了 在特定领域问题中具有重要作用的元元素:构建循环表示和计算遍历 条件,例如距离,转数,空间拓扑等。(这是由Georgia Tech团队开发的,包括作者。)就BOM 的定义而言,目前它是一个外部对象,但是在BERA 语言及其工具的未来发展中,这种元素具有潜力成为BOM 结构的一部分。

           对于流通规则和分析,应该准备图形组件以 动态计算和可视化循环路径实例。“Path”类是 一个动态BOM,如图4.3所示,但用于表示 路径的图形组件可以由给定的建筑模型静态生成,因为它们可以 由静态建筑元素(如空间,空间边界,门)预先定义,楼梯,墙壁, 柱子等,以及空间拓扑。简而言之,在 BERA语言工具中实现的图形结构是用于 基于长度加权的图形结构测量步行距离和可视化建筑物内的路径的计算方法。 给定建筑模型。它主要由给定建筑物的空间拓扑和 几何形状决定,并返回一致且准确的标量。它 考虑了人们的运动模式,反映出人们倾向于沿着 最短,最容易和最明显的路径行走。它由 佐治亚理工学院的作者和团队基于开放式图书馆,SMC平台和理论文献 实施[Peponis等,1998; Gross,1998; Dym,1998; Werner等,2001; Duckham等,2003; Zhi等,2003; Kannala,2005; Goodrich 2005; Dijkstra,2010; Solibri,2010]。有关 图形组件及其计算算法的更多详细信息,请参阅[Lee,JK等,
2010a; Lee J,2010]。BERA语言工具中使用的图表是建筑循环特有的功能,作为 本论文范围内的BERA语言应用之一。它促进了这种特定于空间循环的目的 任务,并且可以在不同类型的图形结构中使用,以支持其他 特定领域的问题,作为复杂建筑元素的抽象。

表6.2显示了两个与图形组件相关的命令,它们仅 在BERA控制台中可视化图形而没有文本打印输出,因为它们是 此阶段的一种元数据。填充实际路径实例时有意义,如 本章后面的循环路径所示。在这种情况下,BERA控制台打印出所有与 循环相关的信息。

表6.2。使用:get(args)检索静态图元素。

得到(图) 得到(GraphComponent);


         动态对象组定义:SpaceGroup SpaceGroup下的空间对象实例可以动态且 无限制地实例化,如4.3和图4.1节所述。这就是为什么SpaceGroup是 动态BOM(见图5.9)来表示用户感兴趣的任何空间对象的原因。用户 可以通过多种方式实例化动态BOM对象。 表6.3中描述了用于生成SpaceGroup实例的正式长格式样式,但是也可以使用 带有参数及其组合形式的“getSpace”关键字在BERA语言定义章节中显示短格式。用于定义 在SpaceGroup的实例中,用户应指定其BOM类型,分配用户变量名称 并描述其条件。BOM的类型在语义上总是SpaceGroup,但 简单的Space也会导致相同的结果,因为它们都是空间对象。其他类型 是此实现范围内的FloorPath。

           BERA语言工具支持多种其他方式来定义动态 BOM,如附录D:BERA语言用户手册中所述。例如,在 基于名称的映射中,BERA语言工具支持一种称为 基于对象名称的映射方法的内部方法,用于建立构建对象语义。在此 实现中,其重点是通过给定的空间名称建立空间对象语义。 也就是说,即使用户只是简单地键入“办公室”,BERA语言工具不仅可以检索“办公室” ,还可以检索其他办公空间,如“办公室10”,“总公司”,“开放办公室”,“共享 办公室”等。在语义上意味着“办公室”。该方法是基于在一系列的有用的开放的方法,如子串的算法,由字符串匹配算法 Levenshtein距离[的Levenshtein,2010]等,这是一个BERA特定于语言的特征 从对象名称检索最大对象的语义。根据 作者及其团队完成的几个实际项目,已经证明它在实际项目中非常实用。

          实际项目中的语义问题。有关空间 对象语义问题的详细信息,请参阅[Lee,JK,2010b] 。

表6.3。使用 典型的动态BOM定义方法实例化一组名为“midOffice”的空间对象。它可以通过`get'命令 以`midOffice'作为参数进行简单检索。

空间midOffice {

Space.area> 600;

Space.area <900;

Space.height> 9;

Space.name =“office”;

Space.name!=“shared”; }

get(midOffice);

[BERA]解析bBOMDef ============= 1.
124

name = midOffice BOMType =空格
条件= Space.area> 400;

Space.area <900;

Space.height> 9; Space.name =“office”;

Space.name!=“shared”; 定义BOM Prop:
lop =
operand_left = Space.area operator => operand_right = 400

- BOM1 = Space
- property = area
lop
= operand_left = Space.area operator = < operand_right = 900
- BOM1 = Space
- property = area
lop =
operand_left = Space.height operator => operand_right =9
- BOM1 = Space
- property = height
lop =
operand_left = Space.name operator = = operand_right =“office”
- BOM1 = Space
- property = name
lop
= operand_left = Space.name operator =!=
operand_right =“shared”
- BOM1 = Space
- property = name

[BERA]解析bExeStat ============= 1.
exeCommand = get
args = midOffice

argsType1 = BID argsType2 =

[BOM]用户定义的SpaceGroup =============

1.
id = 1
name = midOffice type =空间
区域= 3416.0
height = 10.33 volume = 35080.66 numberOfSpace = 6 numberOfFloor = 0 125

空间= [14]办公室[27]人力资源办公室[78] CEO办公室[28] 合作办公室[52]访客办公室[71]访客办公室

[BERA]语言执行#1 =========== ===== command = get,args = midOffice

6.3.4。楼层定义

楼层是静态BOM定义中的另一个重要空间对象(参见图4.2)。 与空间的定义类似,给定的建筑物楼层可由用户定义,如

表6.4中所述。BERA语言工具仅 在用户调用时可视化其楼层边界多边形,但BERA控制台区域显示 楼层的所有相关信息:区域,高度,体积和相关对象。

表6.4。要实例化两个名为“bigFloor”和“upperFloor”的用户定义的楼层, 并使用get命令显示它们。它们使用边界 多边形在系统中可视化,并在BERA控制台中显示,并在当前 BERA语言工具中显示相关信息。

楼层bigFloor = getFloor(Floor.area> 3000); 楼上楼层{
Floor.number> 1;
Floor.area> 1000;

Floor.name!=“base”; }

get(bigFloor); 得到(地板上部);

126

[BERA]解析bBOMDef ============= 1.
name = bigFloor
BOMType = Floor

condition = getFloor(Floor.area> 3000) 定义BOM Prop:
lop
= operand_left = Floor.area

operator =>
operand_right = 3000
- BOM1 = Floor
- property = area
2.
name = upperFloor BOMType = Floor
condition = Floor.number> 1;

Floor.area> 1000; Floor.name!=“base”;

定义BOM Prop:
lop =
operand_left = Floor.number operator => operand_right =1

- BOM1 = Floor
- property = number
lop =
operand_left = Floor.area operator => operand_right = 1000
- BOM1 = Floor
- property = area
lop
= operand_left = Floor.name 127

operator =!= operand_right =“base” - BOM1 = Floor
- property = name

[BERA]解析bExeStat ============= 1.
exeCommand = get
args = bigFloor

argsType1 = BID
2.
exeCommand = get args = upperFloor argsType1 = BID

[BOM]用户定义的SpaceGroup =============

1.
id = 1
name = bigFloor type = Floor
area = 40653.88 height = 20.0 volume = 813077.6

2.
id = 2
name = upperFloor type = Floor
area = 2503.72 height = 11.0 volume = 27540.92

[BERA]语言执行#1 ================ command = get,args = bigFloor

[BERA]语言执行#2 ============= ===
command = get,args = upperFloor 6.3.5。

          路径定义 BERA语言工具使用SpaceGroup定义Path实例及其 相关的图形结构,该结构源自空间拓扑 和几何,如 4.3和图5.9中所定义。就其可视化而言,循环路径可以是以多种方式表示:一系列空间,拓扑图结构,度量图 结构等.BERA语言工具使用度量图结构来计算 距离并表示建筑物循环。它由作者和他的 团队开发,作为SMC的插件[Lee,JK等,2010a]。表6.5显示了实例化Path 的示例。与`getSpace'或`getFloor'类似,名为`getPath'的方法 在两个动态生成的空间组之间生成路径实例,名为`start' 和`end'。“get”命令还显示实例化的路径对象,如表6.5 所示。这是Path的实例化的一个例子,6.5节将描述如何 Path的定义适用于评估建筑物流通规则。

           表6.5。首先实例化两个不同的SpaceGroup“start”和“end”,并将它们 放入另一个名为“myPath”的动态BOM(路径)定义中。BERA语言 工具计算两个空间组之间的循环路径。如该表所示, `start'有3个空格,`end'包含4个空格实例,因此 该定义共填充了12个循环路径实例。系统 使用图形结构可视化所有路径,并突出显示起始和结束空间。

Space start = getSpace(“实验室”)+ getSpace(“lobby”); 太空结束{

Space.area> 600;

Space.Floor.number> 0;

Space.Floor.height> 10;

Space.name =“office”; }

路径mypath中=的getPath(开始,结束); 得到(mypath中)

129

[BERA]解析bBOMDef ============= 1.
name = start
BOMType =空间

条件= getSpace(“实验室”)+ getSpace(“lobby”) 定义BOM Prop:
lop =
operand_left = Space .name

operator = =
operand_right =“laboratory”
- BOM1 = Space
- property = name
lop =
operand_left = Space.name operator = = operand_right =“lobby”
- BOM1 = Space
- property = name
2.
name = myPath
BOMType = Path
condition = getPath(start,end) 定义BOM Prop:
lop =
operand_left = start
operator = Path
operand_right = end
3.
name = end
BOMType =空格
条件= Space.area> 600;
130

Space.Floor.number> 0;

Space.Floor.height> 10;

Space.name =“office”; 定义BOM Prop:
lop =
operand_left = Space.area operator => operand_right = 600

- BOM1 = Space
- property = area
lop
= operand_left = Space.Floor.number operator => operand_right
=0
- BOM1 = Space
- BOM2 = Floor
- property = number
lop =
operand_left = Space.Floor.height operator => operand_right
= 10
- BOM1 = Space
- BOM2 = Floor
- property = height
lop
= operand_left = Space.name operator = =
operand_right =“office”
- BOM1 =空格
- 属性=名称

[BERA]解析bExeStat ============= 1.
exeCommand = get
args = myPath

argsType1 = BID argsType2 =

[BOM]用户自定义SpaceGroup ============= 1.

id = 1
name = start
type =空间
面积= 2069.12
height = 10.67
volume = 22545.8
numberOfSpace = 3
Space = [37] Public Lobby [4] Laboratory [96 ]等级2大厅

3.
id = 3 名称=结束 类型=空间 区域= 3871.37 高度= 10.5 体积= 42338.58 131

numberOfSpace = 4
空间= [78] CEO办公室[28]合作办公室[53]开放式办公室[71] 访客办公室

[BOM]用户定义的PathDef =============

2.
id = 2
name = myPath
start = start
end = end
numberOfStartSpace = 3
numberOfEndSpace = 4
numberOfPaths = 12
startSpace = [37] Public Lobby [4] Laboratory [96] Level 2 Lobby
endSpace = [78] CEO Office [28]合作办公室[53]开放式办公室
[71]访客办公室
路径= [1] 100.48(英尺)[2] 66.39(英尺)[3] 54.56(英尺)[4] 119.68(英尺)[5] 222.17(英尺)[6] 165.61(英尺) )[7] 176.25(英尺)[8] 241.37(英尺)[9] 159.89(英尺) [10] 131.33(英尺)[11] 113.96(英尺)[12] 179.08(英尺)

[BOM]用户定义路径=============

1.
start = start
end = end
SpaceStart = [37]公共大厅
SpaceEnd = [78] CEO办公室
距离= 100.48
深度= 4
numberOfTurn = 7
PathDef = bera.bom.PathDef@de6cfc
id = 1
name = myPath
type = Path
area = 3696.47
height = 11.0
volume = 39780.26
numberOfSpace = 6
numberOfFloor = 0
Space = [51] Front Desk> [57] Business Hall> [46 ]走廊> [76] 秘书>

2.
开始=开始
结束=结束
SpaceStart = [37]公共大厅
SpaceEnd = [28]合作办公室
距离= 66.39
depth = 3
numberOfTurn = 4
PathDef = bera.bom.PathDef@de6cfc id = 2
name = myPath
type = Path

area = 2411.43 height = 10.0 132

volume = 24114.3
numberOfSpace = 5
numberOfFloor = 0
Space = [49] Rest Room> [45] Shared Office Support> [46] Corridor>

...

12.
start = start
end = end
SpaceStart = [96] Level 2 Lobby
SpaceEnd = [71]访客办公室
距离= 179.08
深度= 8
numberOfTurn = 11
PathDef = bera.bom.PathDef@de6cfc
id = 12
name = myPath
type =路径
区域= 5665.11
height = 13.25
volume = 62876.86
numberOfSpace = 10
numberOfFloor = 0
Space = [ 97]电梯> [38]电梯> [38]电梯> [37]公众 大堂> [51]前台> [57]营业厅> [59]限制走廊
> [46]走廊>

       评估空间计划的申请

         SpaceGroup规则

         前一节描述了如何 由用户实例化和处理静态和动态构建对象。本节介绍如何使用它们: 评估空间程序规则的实际应用程序。表6.6描述了一个名为`officeRule' 的空间程序规则,它定义了一些规则条件。作为可重用规则,其 参数可以传递名为“input”的SpaceGroup对象。还有另一个名为 `officeRule2'的规则,它还有三个规则条件。它继承自`officeRule',因此它有6个规则条件。规则使用名为`research'的动态实例化的SpaceGroup对象23 ,规则执行结果显示在表6.6中。当然,来自`officeRule'和
`officeRule2' 的规则执行的结果随着BERA控制台的显示而不同。在`officeRule' 中传递的三个空间对象中,只有一个空间对象满足来自`officeRule2'的总共6个规则条件。此示例还在其规则 执行中演示了IF~ELSE~语句。出于测试目的,表6.6显示了所有结果。(只有`officeRule2'将 被执行并显示结果,因为`officeRule'在此示例中失败)

           表6.6。使用名为`research'的输入空间组评估名为`officeRule'的规则 。整套“研究”显示在BERA控制台中,如下所示, 哪些通过或不通过也在控制台区域打印出来。 在三维可视化中突出显示三个通过的空间对象 但是,在 从`officeRule'继承的`officeRule2' 的规则检查中只传递了一个空间对象。

空间研究= getSpace(Space.department =“research”); Rule officeRule(空格输入){
input.name =“office”;
input.area> 200;

input.height> 9; }

规则officeRule2(空格输入)延伸officeRule { input.numberOfWindow> = 1;
输入。

        此示例显示了名为“department”的特定空间分类,它可以 通过IfcZone,IfcRelClassification或IFC 方案中的自定义IfcProperty实体从模型派生。测试模型的空间的部门名称在名为“Department” 的Revit特定属性集中定义。如何定义和检索此类信息,尤其是在 IFC内,是与MVD相关的问题[MVD,2010]。此外,还有许多 关于空间分类问题的公开讨论或标准化工作,如OmniClass [OCCS,2010],GSA PBS [GSA,2010b] 等[Lee JK等,2010]。

input.Floor.one.Space.name =“conference”; }

得到(研究);

if(officeRule(research))officeRule(research) else officeRule2(research);

[BERA]解析bBOMDef ============= 1.
name = research
BOMType =空间

条件= getSpace(Space.department =“research”) 定义BOM Prop:
lop
= operand_left = Space.department

operator = =
operand_right =“research” - BOM1 = Space
- property = department

[BERA]解析bRuleDef ============= 1.
name = officeRule
args =空格输入

ruleType = SpaceGroup
condition = input.name =“办公室”;

input.area> 200;

input.height> 9; 定义规则的BOM提议: 135

lop =
operand_left = input.name
operator = = operand_right =“office”
- container = input
- property = name
lop
= operand_left = input.area operator => operand_right
= 200
- container = input
- property = area
lop =
operand_left = input。 height operator =>
operand_right = 9
- container = input
- property = height
2.
name = officeRule2
args = Space input
ruleType = SpaceGroup inheritedFrom = officeRule condition = input.name =“office”;

input.area> 200;

input.height> 9; input.numberOfWindow> = 1;

input.Floor.height> 12;

input.Floor.one.Space.name =“conference”; 定义规则的BOM 提议:
lop =
operand_left = input.name

operator = = operand_right =“office”
- container = input
- property = name

lop
= operand_left = input.area
operator => operand_right
= 200
- container = input
- property = area
lop =
operand_left = input.height
operator => operand_right
=9
- container = input
- property = height
lop
= operand_left = input.numberOfWindow operator => =
operand_right = 1
- container = input
- property = numberOfWindow
lop
= operand_left = input.Floor.height

operator => 136

operand_right = 12 - container = input - BOM1 = Floor
- property = height lop =

operand_left = input.Floor.one.Space.name operator = = operand_right =“conference”
- container = input

- BOM1 = Floor
- quant2 = one
- BOM2 = Space
- property = name

[BERA]解析bExeStat ============= 1.
exeCommand = get
args = research

argsType1 = BID argsType2 =
2.
exeCommand = officeRule args = research

argsType1 = BID
argsType2 =
3.
exeCommand = officeRule2 args = research

argsType1 = BID argsType2 =

[BOM]用户定义的SpaceGroup =============

1.
id = 1
name =研究
类型=空间
区域= 9908.51
高度= 10.22
体积= 103446.8
windowArea = 396.0
numberOfSpace = 23
numberOfWindow = 22
空间= [93] TELE [35]男厕所[36]妇女厕所[32]公共 团队[33]新闻室[30]演示室[31]公关人员[13]休息区 [14]办事处[ 10]研究小组3 [11]限制走廊[12] 发展办公室[8]研究小组2 [9]研究办公室3 [5] 研究办公室1 [6]研究小组1 [7]研究办公室2 [2] 软件团队[4]实验室[1]主任研究员[91]会议室 [92]研究室[89]服务器室

[BERA]语言执行#1 ================ 命令= get,args = research

[BERA]语言执行#2 ================ command = officeRule,args = research

passFail = fail

passObject =
--- [31]公关人员 --- [14]办公室
--- [12]发展办公室

failObject =
--- [93] TELE
--- [35] MEN洗手间

--- [36] ]妇女洗手间 --- [32]公共团队
--- [33]新闻发布室 --- [30]演示室

--- [13]休息区
--- [10]研究小组3 --- [11]限制走廊 --- [8]研究小组2 --- [9]研究室3
--- [5]研究室1
--- [6]研究小组1 --- [7]研究室2
--- [2]软件团队 --- [4]实验室
--- [1]首席研究员 --- [91]会议室
--- [92]研究室
--- [89]服务器室

[BERA]语言执行#3 ================ command = officeRule2,args = research

passFail = fail

passObject = --- [31] PR官员

failObject =
--- [93] TELE
--- [35] 男厕所
--- [36]妇女厕所 --- [32]公共团队 --- [33]新闻发布室 --- [30]演示室

--- [13]休息区
--- [14]办公室
--- [10]研究小组3 --- [11]限制走廊 --- [12]发展办公室 - - [8]研究小组2 --- [9]研究室3
--- [5]研究室1
--- [6]研究小组1 --- [7]研究室2
--- [2]软件团队
--- [4]实验室
--- [1]首席研究员 138

--- [91]会议室 --- [92]研究室 --- [89]服务器室

        楼层规则

        如前SpaceGroup规则部分所示,用户可以根据空间和空间组 对象及其属性与BOM定义的数量一样多次创建和检查几乎无限数量的空间规则。地板在技术上是另一个 具有相同高度的空间集合; 因此,BERA语言工具将其作为另一种动态BOM处理,用户已将其实例化。 本节显示了使用楼层对象的另一种规则,如表6.7所述。表6.7。要实例化名为`floor1'和`floor2'的两个楼层对象,并将它们放入 一个名为“floorRule”的用户定义规则,用于管理某些楼层条件。此 示例使用两个输入floor参数评估两个检查实例。 如表中所述,一个通过而另一个失败。

楼层1 = getFloor(“1级”);

楼层2 {

Floor.number <0;

}

规则floorRule(地板F){

f.area> 1000;
f.height> 10;
f.name =“level”;

f.Space.height> 8;

}

floorRule(floor1); floorRule(floor2); 得到(floor1); 得到(floor2);

 

[BERA]解析bBOMDef ============= 1.
name = floor1
BOMType = Floor

condition = getFloor(“Level 1”) 定义BOM Prop:
lop= operand_left = Space.name operator = =operand_right =“级别1” - BOM1 =空格- 属性=名称
2.

名称=楼层2 BOMType =楼层

条件= Floor.number <0;

定义BOM Prop:
lop =operand_left = Floor.number operator = < operand_right =0

- BOM1 = Floor
- property = number

[BERA]解析bRuleDef ============= 1.
name = floorRule
args =楼层f

ruleType = Floor condition = f.area> 1000; 140

f.height> 10; f.name =“level”;

f.Space.height> 8; 定义规则的BOM 提议:
lop =operand_left = f.area 

operator => operand_right= 1000
- container = f
- property = area
lop= operand_left = f.height operator => operand_right= 10
- container = f
- property = height
lop =operand_left = f.name
operator = = operand_right =“level”
- container = f
- property = name
lop= operand_left = f.Space.height operator => operand_right=8
- container = f
- BOM1 =空格
- 属性=高度

[BERA]解析bExeStat ============= 1.
exeCommand = floorRule
args = floor1

argsType1 = BID argsType2 =
2.
exeCommand = floorRule args =

floor2 argsType1 = BID argsType2 =
3.
exeCommand = get args = floor1 argsType1 = BID argsType2 =

4.
exeCommand = get args =
floor2 argsType1 = BID argsType2 =

[BOM]用户自定义SpaceGroup =============

1.
id = 1
name = floor1 141

type =楼面
面积= 40653.88
高度= 20.0
体积= 813077.6
numberOfSpace = 0 numberOfFloor = 0
楼层= [bera.bom.Floor@1e45d17]

2.
id = 2
name = floor2
type =楼面
面积= 2178.8
高度= 16.0
体积= 34860.8
numberOfSpace = 0 numberOfFloor = 0
Floor = [bera.bom.Floor@19b9c3b]

[BERA]语言执行#1 ================ command = floorRule,args = floor1

passFail = pass
whatClass = class bera.bom.Floor

passObject =

--- [2] Level 1(area = 40653.88 height = 20.0 elevationHeight = 0.0)

failObject =

[BERA]语言执行#2 ================ command = floorRule,args =

floor2 passFail = fail
whatClass = class bera.bom.Floor

passObject =

failObject =

--- [1 ]地下室(面积= 2178.8高度= 16.0 elevationHeight = -16.0)

[BERA]语言执行#3 ================ command = get,args = floor1

[BERA]语言执行# 4 ================ command = get,args = floor2

 

       申请评估建筑物流通

        循环规则

        循环规则可以由用户基于两个不同的空间或 空间组来实例化。表6.8中描述的示例显示了预定 义动态BOM和SpaceGroup 的两个给定参数。它们总是零或多,因此循环 路径实例将在实际执行阶段填充。在这种情况下,有两个起始 空间实例和七个结束空间; 因此,实例 化和评估了总共14个循环路径实例。结果表明只传递了四条路径,即只有四条路径满足用户定义的给定规则条件。            表6.8。要实例化名为“myOfficeCircRule”的循环规则,并 使用两个名为“visitorOffices”和“meetingSpaces”的预定义BOM 进行评估。执行 语句只是它的规则名称,带有两个参数,如下所示。所有14个路径实例 都在SMC中可视化,BERA控制台详细显示其规则检查结果。

Space visitorOffices = getSpace(“访客”,“办公室”); 空间会议空间= getSpace(“会议”)+ getSpace(“会议”)+ getSpace(“讲座”);

规则myOfficeCircRule(空间开始,空间结束){ Path p = getPath(start,end); p.Space.security =“public”;
p.distance <150;

p.depth <6; myOfficeCircRule(visitorOffices,meetingSpaces);

143

[BERA]解析bBOMDef ============= 1.
name = visitorOffices
BOMType =空间

条件= getSpace(“visitor”,“office”) 定义BOM Prop:
lop= operand_left = Space.name

运算符= =
operand_right =“visitor” - BOM1 = Space
- property = name
lop =operand_left = Space.name operator = = operand_right=“office”
- BOM1 = Space
- property = name
2.
name = meetingSpaces
BOMType = Space
condition = getSpace( “会议”)+ getSpace(“会议”)+ getSpace(“讲座”)
定义BOM 提案:
lop =operand_left = Space.name
operator = = operand_right=“meeting”
- BOM1 = Space
- property = name
lop =operand_left = Space.name 运算符= =operand_right = “会议”
- BOM1 =空间

-属性=名称
垂耳=operand_left = Space.name 运算符= =operand_right = “讲座”
- BOM1 =空间
-属性=名称

[BERA]解析bRuleDef = ============ 1.
name = myOfficeCircRule
args = Space start,Space end

ruleType = Path
condition = Path p = getPath(start,end);

p.Space.security =“public”; p.distance <150;

p.depth <6;
定义规则的BOM 提议:
lop= operand_left = p.Space.security operator = =
operand_right =“public”
- container = p
- BOM1 = Space
- property = security
lop =operand_left = p.distance operator = < operand_right= 150
- container = p
- property = distance
lop= operand_left = p.depth operator = < operand_right=6
- container = p
- property = depth 1-1嵌套BOM:

name = p BOMType = Path

condition = getPath(start,end) lop =

operand_left = start

operator = Path operand_right = end

[BERA]解析bExeStat ===== ======== 1.
exeCommand = myOfficeCircRule
args = visitorOffices,meetingSpaces argsType1 = BID

argsType2 = BID [BERA]未找到循环起始空间。 145

[BERA]未找到流通结束空间。 [BOM]用户定义的SpaceGroup =============

1.
id = 1
name = visitorOffices
type =空间
区域= 1085.91
高度= 11.0
体积= 11779.76
numberOfSpace = 2
空间= [52]访客办公室[71]访客办公室

2.
id = 2
name = meetingSpaces
type =空间
区域= 2854.48
身高= 11.0
体积= 31785.39
numberOfSpace = 7
空间= [34]访客会议[18]讲师办公室[44]会议 室[24]讲堂[25]会议[19]小型讲堂[91] 会议室

[BERA]语言执行#1 ================
command = myOfficeCircRule,args = visitorOffices,meetingSpaces

[BERA]规则中的路径定义:myOfficeCircRule passFail = fail
passObject =

--- [5] 141.71(英尺):游客会议>营业厅>前台> 公共大厅>学术大厅>
--- [6] 131.05(英尺):游客会议>营业厅>前台> 公共大厅>学术大厅>

- - [8] 106.76(英尺):走廊>限制走廊>营业厅> --- [12] 130.53(英尺):走廊>学术大厅>

failObject =

--- [1] 0.0(ft):
--- [2] 123.46(英尺):访客会议>营业厅>前台> 公共大厅>大厅>
--- [3] 118.6(英尺):访客会议>营业厅>前台> 公共大厅>休息室>共享办公室支持>走廊>
--- [4] 166.06(英尺):访客会议>营业厅>前台办公桌> 公共大厅>学术大厅>多媒体开放图书馆>
--- [7] 87.78(英尺):访客会议>限制走廊>
--- [9] 193.77(英尺):走廊>学术大厅>小讲堂>
- - [10] 104.56(英尺):走廊>
--- [11] 167.18(英尺):走廊>学术大厅>多媒体开放 图书馆>

--- [13] 172.99(英尺):走廊>学术大厅>
--- [14] 198.05(英尺):走廊>限制走廊>营业厅> 访客会议>限制走廊>

[BOM]用户自定义PathDef == ===========

3.
id = 3
name = p
start = start
end = end
numberOfStartSpace = 2
numberOfEndSpace = 7
numberOfPaths = 14
startSpace = [52]访客办公室[71]访客办公室
endSpace = [34 ]访客会议[18]讲师办公室[44]
会议室[24]讲堂[25]会议[19]小讲堂
[91]会议室
路径= [1] 0.0(英尺)[2] 123.46(英尺)[ 3] 118.6(英尺)[4] 166.06(英尺)[5] 141.71(ft)[6] 131.05(ft)[7] 87.78(ft)[8] 106.76(ft)[9] 193.77(ft) [10] 104.56(ft)[11] 167.18(ft)[12] 130.53 (ft)[13] 172.99(ft)[14] 198.05(ft)

[BOM]用户定义的路径=============

1.
start = start
end = end
SpaceStart = [52]访客办公室 SpaceEnd = [34]访客会议
距离= 0.0
深度= 0
numberOfTurn = 0
PathDef = bera.bom.PathDef@fed540 id = 1
name = p
type = Path
area = 0.0
height = 0.0
volume = 0.0
numberOfSpace = 2
numberOfFloor = 0
空格=

2.
开始=开始
结束=结束
SpaceStart = [52]访客办公室 SpaceEnd = [18]讲师办公室
距离= 123.46
深度= 5
numberOfTurn = 7
PathDef = bera.bom.PathDef@fed540 id = 2
name = p
type = Path
147

area = 3847.55
height = 11.6
volume = 44515.0
numberOfSpace = 7
numberOfFloor = 0
Space = [34]访客会议> [57]营业厅> [51]前台 > [37]公共大厅> [17] Hall>

...

14 。
开始=开始
端=端
SpaceStart = [71]访问者办公室

file:///G:/books/BIM/bera/beras.html

86/115

2019/1/14 beras.html

SpaceEnd = [91]会议室
的距离= 198.05
深度= 5
numberOfTurn = 9
PathDef = bera.bom.PathDef@fed540 ID = 14

名= p
型=路径
面积= 6337.12
height = 10.8
volume = 67118.18
numberOfSpace = 7
numberOfFloor = 0
空间= [46]走廊> [59]限制走廊> [57]营业厅> [34]访客会议> [11]限制走廊>

           BERA和基于目标语言的执行

           表6.9中的示例描述了使用 BERA语言程序及其目标语言的高级应用程序和评估,在此实现中,它是Java。 表6.9显示了检查BERA程序的循环规则和Java 程序代码的高级用法。附录D中的BERA语言用户手册介绍了 此高级模式的详细功能。此示例中的Java代码旨在找出 “访问者会议”中最远程的空间,路径实例最多 来自同一空间的转数,以及最多148个的路径实例中间空间(空间深度)。结果发出了这个先进的结果:1)“[22] 休息室”是距离它最远的空间,2)从它到达“[27]人力资源办公室” 需要10圈,以及3)七个空间深度到“ [27]人力资源办公室“ 是第三个结果。

          表6.9。为了实例化从“访客会议”到 同一楼层中所有空间的循环路径,在该示例中,填充了92个路径实例。它不仅是规则 检查结果,而且还在BERA控制台中显示了高级Java程序结果。

空间allGroundSpaces = getSpace(Space.Floor.number = 1);

规则距离规则(空间开始,

path.distance <100;

path.depth <5; }

distanceRule(“访客会议”,allGroundSpaces); java的;

Double maxDistance = 0.0; int maxTurn = 0;
int maxDepth = 0; 空间end1 = null;

空间end2 = null; 空间end3 = null;

for(Path p:Path){

if(p.distance> = maxDistance){

maxDistance=p.distance;

end1= p.SpaceEnd;

}

if(p.numberOfTurn> = maxTurn){

maxTurn=p.numberOfTurn;

end2= p.SpaceEnd;

}

if(p.depth> = maxDepth){

maxDepth=p.depth;

end3= p.SpaceEnd;

}
}

字符串maxDistanceSpace = “[” + end1.number + “]” + end1.name; String maxTurnSpace =“[”+ end2.number +“]”+ end2.name;

String maxDepthSpace =“[”+ end3.number +“]”+ end3.name;

print(“距离访客会议的最大距离”到“+ maxDistanceSpace +”=“+ maxDistance);
print(“来自\”访客会议的“
最多轮数”到“+ maxTurnSpace +”=“+ maxTurn”;

print(“MAX depth from”访客会议\“到”+ maxDepthSpace +“ =”+ maxDepth);

[BERA]解析bBOMDef ============= 1.
name = allGroundSpaces
BOMType =空间

条件= getSpace(Space.Floor.number = 1) 定义BOM Prop:
lop= operand_left = Space.Floor。

- property = number

[BERA]解析bRuleDef ============= 1.
name = distanceRule
args = Space start,Space target ruleType = Path

condition = Path path = getPath(start,target); 150

path.distance <100;

path.depth <5; 定义规则的BOM 提议:
lop =operand_left = path.distance operator = < operand_right = 100
- container = path
- property = distance
lop
= operand_left = path.depth operator = < operand_right =5
- container = path
- property = depth 1-1嵌套BOM:

name = path BOMType = Path

condition = getPath(start,target) lop =

operand_left = start
operator = Path operand_right = target

[BERA]解析bExeStat =============
1.
exeCommand = distanceRule
args =“visitor conference”,allGroundSpaces argsType1 = bStringQuot

argsType2 = BID args 1

name = noname_1

BOMType = space

condition = getSpace(“visitor conference”)

定义BOM Prop:

lop= operand_left = Space.name

operator = = operand_right=“访客会议“
- BOM1 =空格
- 属性=名称 [BERA]未找到循环起始空间。 [BERA]未找到流通结束空间。

[BOM]用户定义的SpaceGroup =============

1.
id = 1
name = allGroundSpaces
type =空间
面积= 37492.56
height = 10.78
volume = 404904.39
numberOfSpace = 92
numberOfFloor = 0
空间= [90]存储[83]衣橱[93] TELE [38]电梯[39]服务 电梯[35]男厕所[36]妇女厕所[32]公共团队[33]新闻发布室[34]访客会议[29]阳台[30]演示室[31]公关 人员[18]讲师办公室[48]环境保护部[16]休息室[49]休息室 [17]大厅[50]男厕所[ 45]共享办公室支持[13]休息区 [46]走廊[14]办公室[47]机械[15]住所1 [10]研究小组3 [43]楼梯[11]限制走廊[44]会议 室[81]共享办公室[12]发展办公室[82]战略规划
[77] TLT [40] TLT [27]人力资源办公室[78]首席执行官办公室[41] TLT [28]合作办公室[79]数据存档和存储[42]妇女厕所 [24]讲堂[75]办公室[25]会议[76]秘书[26]学生实验室[21]住所3 [72]办公室[37]公共大厅[22]休息 会议室[80]存储[59]限制走廊[73]休息区[60]商业 支持区[23]多媒体开放图书馆[74]休息区[56]服务 [19]小型讲堂[57]营业厅[20]住所2 [58] 支持室[53]开放办公室[54]休息室[55] QA小组[51]前台 [52]访客办公室[69]办公室[70]研究TFT [71]访客 办公室[67]办公室[68]办公室[64]安全存储[65]总部 [66]共享办公室[61]文件存档[62]存储[63]图书馆[8]研究小组2 [9]研究办公室3 [5]研究办公室1 [6]研究小组1 [7]研究室2 [2]软件小组[4]实验室 [1]主任研究员[91]会议室[92]研究小组[89] 服务器室[86]学生休息室[85]学术大厅[84]私人 电梯[87]存储[88]更衣室

3.
id = 3
名称= noname_1 类型=空间
区域= 684.67
高度= 12.0
体积= 8216.04 numberOfSpace = 1 numberOfFloor = 0 空格= [34]访客会议

[BERA]语言执行#1 ================
command = distanceRule,args =“visitor conference”,allGroundSpaces

[BERA]路径定义规则:distanceRule passFail = fail
passObject =

--- [4] 40.23(ft):营业厅>前台>公共大厅> --- [5] 30.92(ft):营业厅>前台>公共大厅> --- [6] 32.45(英尺):限制走廊>
--- [7] 26.48(英尺):限制走廊>

--- [8] 0.0(英尺):
--- [9] 0.0(英尺):
--- [10] 0.0(ft):
--- [12] 53.21(ft):限制走廊>
--- [13] 23.5(ft):公共团队>
--- [15] 68.25(ft):营业厅>支援室>机械>
--- [17] 35.41(ft):营业厅>前台>公共大厅>
--- [18] 69.6(ft):营业厅>前台>公共大厅>
- - [19] 40.54(英尺):营业厅>前台>公共大厅>休息

房间>
--- [20] 59.38(ft):营业厅>前台>公共大厅>休息室
>
--- [22] 38.78(ft):营业厅>
--- [23] 43.04(ft):限制走廊>
--- [24] 34.81(英尺):营业厅>支持室>
--- [26] 78.44(英尺):限制走廊>
--- [27] 37.38(英尺):营业厅>前台>公共大厅>
--- [28] 0.0(英尺):
--- [30] 55.89(英尺):营业厅>限制走廊>
--- [31] 43.26(英尺):限制走廊>
--- [ 32] 58.65(英尺):营业厅>限制走廊>
--- [33] 98.28(英尺):营业厅>走廊>秘书> CEO办公室 >
--- [34] 77.95(英尺):营业厅>前台>公共大厅> 学术大厅>
--- [36] 89.14(英尺):营业厅>走廊>秘书>
--- [37] 83.35(英尺):营业厅>前台>公共大厅> 学术大厅>
--- [39] 95.64(英尺):营业厅>走廊>
--- [40] 51.84(英尺):营业厅>前台>公共大厅>休息室 >
--- [44] 77.13(英尺):营业厅>走廊>
- - [48] 20.92(英尺):营业厅>前台>
--- [50] 76.98(英尺):营业厅>限制走廊>共用
办公室>
--- [51] 34.73(英尺):营业厅>
--- [53] 55.87(英尺):营业厅>
--- [56] 33.48(英尺):营业厅>
--- [58] 0.0(英尺):
--- [60] 17.64(英尺):营业厅>
--- [61] 39.28(英尺):营业厅>
--- [62] 94.27(英尺):营业厅>限制走廊>质量保证团队> --- [63] 65.75(英尺):营业厅>限制走廊>
--- [64] 8.92(英尺):营业厅>
--- [65] 0.0(英尺):
--- [67] 89.99(英尺):营业厅>限制走廊>走廊>
--- [69 ] 97.77(英尺):营业厅>限制走廊>
--- [71] 87.99(英尺):营业厅>限制走廊>图书馆>
--- [72] 92.7(英尺):营业厅>限制走廊>共用办公室
>
--- [73] 76.28(英尺):营业厅>限制走廊>
--- [74] 77.04(英尺):营业厅>商业支援区>
--- [75] 74.84(英尺): 营业厅>限制走廊>
--- [76] 77.71(英尺):营业厅>限制走廊>
--- [77] 94.57(英尺):限制走廊>
--- [78] 99.94(英尺):限制走廊>研究小组3>
- - [85] 57.83(英尺):限制走廊>
--- [89] 66.17(英尺):营业厅>前台>公共大厅>

failObject =

--- [1] 128.46(英尺):营业厅>正面办公桌>公共大厅>大厅> --- [2] 137.85(英尺):营业厅>前台>公共大厅> 学术大厅>会议>
--- [3] 173.34(英尺):限制走廊>服务器室>

- - [11] 121.05(英尺):营业厅>走廊>数据档案和 153

存储>
--- [14] 100.96(ft):营业厅>前台>公共大厅>大厅
>
--- [16] 152.55(ft):营业厅>前台>公共大厅>大厅 >住宅1>
- - [21] 159.96(英尺):限制走廊>服务器室>
--- [25] 135.63(英尺):营业厅>前台>公共大厅>大厅 >
--- [29] 96.1(英尺):商业大厅>前台>公共大厅>休息室 >共享办公室支持>走廊>
--- [35] 119.64(英尺):营业厅>前台>公共大厅>休息室

>共享办公室支持>走廊>学术大厅>
- - [38] 101.8(英尺):营业厅>前台>公共大厅>休息室 >共享办公室支持>走廊>
--- [41] 143.56(ft):营业厅>前台>公共大厅> 学术礼堂>多媒体开放图书馆>
--- [42] 103.49(ft):营业厅>走廊>秘书>
--- [43 ] 119.21(ft):营业厅>前台>公共大厅> 学术礼堂>
--- [45] 144.69(ft):营业厅>前台>公共大厅> 学术礼堂>会议>
--- [46] 157.7 (ft):营业厅>前台>公共大厅>大厅> --- [47] 121.3(ft):营业厅>限制走廊>走廊>
--- [49] 191.94(ft):营业厅>前台>公共大厅>大厅 >住宅3>
--- [52] 138.71(英尺):营业厅>限制走廊>走廊> 办公室>
--- [54] 112.25(ft):营业厅>前台>公共大厅> 学术大厅>
--- [55] 120.9(ft):营业厅>走廊>秘书>办公室>
--- [57] 108.55 (ft):营业厅>前台>公共大厅> 学术大厅>
--- [59] 152.61(ft):营业厅>前台>公共大厅>大厅
>
--- [66] 109.45(ft):商务大厅>限制走廊>
--- [68] 106.76(英尺):营业厅>限制走廊>走廊>
--- [70] 110.6(英尺):营业厅>限制走廊>
--- [79] 137.77(英尺) ):限制走廊>研究小组1>
--- [80] 116.27(英尺):限制走廊>
--- [81] 116.07(英尺): 限制走廊>研究小组2>
--- [82] 126.18(英尺):限制走廊>
--- [83] 142.61(英尺):营业厅>前台>公共大厅>大厅 >限制走廊>
--- [84] 122.68(英尺):限制走廊>
--- [86] 143.79(英尺):限制走廊>
--- [87] 144.76(英尺):限制走廊>
--- [88] 109.64(英尺):营业厅>前台>公共大堂> 学术大厅>
--- [90] 109.72(英尺):营业厅>前台>公共大厅>大厅 >
--- [91] 126.1(英尺):营业厅>前台>公共大厅> 学术大厅>小演讲室>
--- [92] 128.27(英尺):营业厅>前台>公共大厅> 学术厅> 学生休息室>

[BOM]用户定义的PathDef ============= 154

2.
id = 2
name = path
start = start
end = target
numberOfStartSpace = 1
numberOfEndSpace = 92
numberOfPaths = 92
startSpace = [34]访客会议
endSpace = [90]存储[83]衣橱[...] [88]更衣室
路径= [1] 128.46(ft)[2] 137.85(ft)... [92] 128.27(ft)

[BOM]用户自定义路径=============

1.
start = start
end = target
SpaceStart = [34]访客会议 SpaceEnd = [90]存储 距离= 128.46
深度= 4
numberOfTurn = 6
id = 1
name =路径
类型=路径

区域= 3162.88
高度= 11.5
volume = 36298.96
numberOfSpace = 6
Space = [57] Business Hall> [51]前台> [37]公共大厅> [17] Hall>

2.
start = start
end = target
SpaceStart = [34]访客会议
SpaceEnd = [83 ]壁橱
距离= 137.85
深度= 5
numberOfTurn = 8
id = 2
名称=路径
类型=路径
区域= 3456.37
高度= 12.2
体积= 43214.86
numberOfSpace = 7
空间= [57]营业厅> [51]前台> [37]公共大厅> [85] 学术大厅> [25]会议>

...

92.
start = start
end = target
SpaceStart = [34]访客会议 空间结束= [88]更衣室
155

距离= 128.27 深度= 5 numberOfTurn = 9 id = 92

名称=路径
类型=路径
区域= 3327.43
高度= 12.2
体积= 41925.46
numberOfSpace = 7
空间= [57]营业厅> [51]前台> [37]公共大厅> [85] 学术大厅> [86]学生休息室>

[BERA]目标执行者文件成功创建:BExecutor.java [BERA]运行时编译成功:BExecutor.class

MAX距“访客会议”至[22]休息室= 191.94 从“访客会议”到[27]人力资源
办公室的最大轮数= 从“访客会议”到[27]人力资源办公室= 7的最大深度

         其他构建对象的应用程序

          作为非空间对象及其应用程序的附加示例,本节 介绍用于评估墙对象的应用程序。墙 对象的语法定义已在语言定义章节中定义。在工作范围内, 尚未详细开发Wall对象的属性,但是,通过使用其 来自建筑模型的派生属性,例如GUID,类型,面积,体积,高度, 长度,厚度,开口数量和关系对象,可以 演示测试用例,如表6.10所示。它评估给定的墙体对象的厚度是否 它是否相同或厚于1英尺,输入物体是墙壁的集合, 在其类型描述中包含“外部”。结果,总共26个外墙对象被 实例化并评估该规则,并且规则检查结果是“通过”。

        表6.10。使用 包含Wall对象实例的名为`exWalls'的输入对象组来评估名为`externalWallRule'的简单测试规则。 “我的” 的相关信息显示在BERA控制台中,如下所示,哪些传递或未传递 到控制台区域。三个通过的Wall对象以3D形式显示。

Wall exWalls {

Wall.type =“exterior”;

}

规则externalWallRule(墙上WA){

wa.thickness> = 1.0;

}

externalWallRule(exWalls);

[BERA]解析bBOMDef ============= 1.
name = exWalls
BOMType = Wall

condition = Wall.type =“exterior”; 定义BOM Prop:
lop =
operand_left = Wall.type

operator = = operand_right =“exterior”
- BOM1 = Wall
157

- property = type

[BERA]解析bRuleDef ============= 1.
name = externalWallRule
args = Wall wa

ruleType = Structure
condition = wa.thickness> = 1.0; 定义规则的BOM 提议:
lop =
operand_left = wa.thickness operator => =
operand_right = 1.0
- container = wa
- property = thickness

[BERA]解析bExeStat ============= 1.
exeCommand = externalWallRule
args = my

argsType1 = BID argsType2 =

[BOM]用户定义的结构=============

1.
id = 1
name = exWalls
type = Wall numberOfObject = 26

Property = {}
Slab = []
Column = []
Wall = [bera.bom.Wall@b6e46,...,bera.bom.Wall@7a00b] Door = []

Stair = [] Ramp = [] Window = [ ]

[BERA]赛跑者发起。

[BERA]语言执行#1 ================ command = externalWallRule,args = exWalls

passFail = pass passObject =

--- [66] Basic Wall:Exterior - Brick和CMU on MTL。梭哈:199977 --- [68]基本墙:外观 - MTL上的砖和CMU。梭哈:199853

--- [69]基本墙:外观 - --- [70]基本墙:外观 - --- [71]基本墙:外观 - --- [73]基本墙:外观 - --- [75]基本墙:外观 - --- [76]基本墙:外观 - --- [78]基本墙:外观 - 158

MTL上的砖和CMU。梭哈:200010 MTL上的砖和CMU。梭哈:200026 MTL上的砖和CMU。梭哈:200030 MTL上的砖块和CMU。梭哈:199727 MTL上的砖和CMU。梭哈:199900 MTL上的砖和CMU。梭哈:199901 MTL上的砖和CMU。梭哈:199801

--- [112]基本墙:外观 - MTL上的砖块和CMU。梭哈:164023 --- [113]基本墙:外观 - MTL上的砖和CMU。梭哈:164068 --- [116]基本墙:外观 - MTL上的砖和CMU。梭哈:164137 --- [118]基本墙:外观 - MTL上的砖和CMU。梭哈:164156 --- [120]基本墙:外观 - MTL上的砖和CMU。梭哈:164110 --- [122]基本墙:外观 - MTL上的砖和CMU。梭哈:164265 --- [128]基本墙:外观 - MTL上的砖和CMU。梭哈:160939 --- [137]基本墙:外观 - MTL上的砖和CMU。梭哈:160739 --- [139]基本墙:外观 - MTL上的砖和CMU。梭哈:159808 --- [140]基本墙:外观 - MTL上的砖和CMU。梭哈:159838 --- [162]基本墙:外观 - MTL上的砖和CMU。梭哈:157175 --- [174]基本墙:外观 - MTL上的砖和CMU。梭哈:162590 --- [175]基本墙:外观 - MTL上的砖和CMU。梭哈:162649 --- [176]基本墙:外观 - MTL上的砖和CMU。梭哈:157260 --- [189]基本墙:外观 - MTL上的砖和CMU。梭哈:159624 --- [207]基本墙:外观 - MTL上的砖和CMU。梭哈:157836 --- [211]基本墙:外观 - MTL上的砖和CMU。Stud:158084

failObject =

        BERA语言的评估

在本章中,一些实际的BERA程序应用程序 可以解决各种问题,可以处理实现的范围,以及 扩展建筑物的概述:墙。BERA语言工具不是一个神奇的 魔杖,但本章演示了它使用户能够 比依赖通用编程语言更容易地分析建筑模型(参见5.6.1 节作为示例比较)并且比预先更强大定义的应用程序接口,例如规则 检查软件中常规使用的基于表的输入参数(请参阅6.2.1节比较它们)。由于BERA语言 旨在成为一种简单有效的特定领域语言, 本章中的示例程序显示了对实际建筑设计规则和分析问题的忠诚度,即使 它们是更广泛的似乎合理的BERA应用的一些片段。如159中所述引言章节,研究问题及其答案可归纳 如下(参见1.1.4节研究问题): 1)BERA用户的易用性:基于对最近开发和 流行的语言的调查,BERA采取基于点符号访问复杂建筑物对象及其关系的优点。 2)BERA对象模型(BOM):BOM是 目标对象的BERA以用户为中心的抽象。 3)BOM及其基于点符号的访问使用户能够轻松地利用 目标对象的显式定义。(参见3.2.4节) 4)处理现实世界的规则:更高级别的设计规则可以分解为 在其特定领域的功能中的一系列BERA符号。(参见3.2.2 节和本章中的示例) 5)实现问题:第5章演示了作者如何实现 BERA语言及其工具。另外,它的可扩展性问题在 5.6版本中描述了前端和后端的可扩展性。

          最终测试将来自BERA语言用户。 BERA语言及其工具的评估是未来的工作之一。为获得用户反馈 和进一步更新,计划开放式测试和支持安排。即使 对语言的评估超出了本论文的范围本身,作者也是如此 有计划通过网络支持实时文档和反馈系统,如用户 手册,示例,演示视频等,以便更好地展示未来的BERA语言及其工具。 (请参阅附录D,BERA用户手册和BERA网站,了解各种应用以及 本论文无法解决的BERA语言的最新演示。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值