规则将覆盖率与距离道路和边界的距离联系起来

引用于 Macwinlin 在 2025年3月14日, 下午11:42规则将覆盖率与距离道路和边界的距离联系起来
您好,
根据标题,我正在尝试创建一条规则,该规则将大量的覆盖率与距离道路和边界距离的距离联系起来。我会说我是CityEngine的初学者。
现在,我通过阅读了几篇文章并关注了几个YouTube视频,已经处理了这一规则两个星期。我设法创建了一个规则,将公约分为5个部分。
建筑物被挤出的中心部分和其他4个自由零件。我将批次分为所有这些部分,以便可以调整到边界和道路的距离,并控制建筑物表面。
只有一个问题。控制并不完美,实际上要改变距离,我必须对不同地段的面积百分比采取行动。这很不方便,因为它不允许我直接在距离上行动。
作为初学者,我想知道是否有一种方法可以实现这一结果。
提前致谢
例如,您可以首先使用 Compute Edge属性工具获得包裹形状的方向。然后,以下规则使您可以定义最大的建筑物覆盖率和每侧的挫折距离。如果最大覆盖范围要比setbackperedge操作的其余部分较小,则挫折室挫折会通过setbacktoarea操作(深蓝色区域)增加。
version "2024.1" const lotArea = geometry.area @Description("Maximum ratio of footprint to parcel area") @Percent attr area_ratio = 0.5 @Description("Minimum street setback") @Distance @Range(min=0, max=15) attr setback_front = 5 @Description("Excact side setback") @Distance @Range(min=0, max=15) attr setback_side = 10 @Description("Excact rear setback") @Distance @Range(min=0, max=15) attr setback_rear = 15 dist(orientation) = case orientation == "front" : setback_front case orientation == "side" : setback_side case orientation == "rear" : setback_rear else : 0 @StartRule SetbackPerEdge --> setbackPerEdge( dist( edgeAttr.getString("orientations") ) ) { edgeAttr.getString("orientations") == "front" = Grey | edgeAttr.getString("orientations") == "side" = Yellow | edgeAttr.getString("orientations") == "rear" = Green | remainder = SetbackToArea } SetbackToArea --> setbackToArea(lotArea * area_ratio) { edgeAttr.getString("orientations") == "front" = Blue | remainder = extrude(10) Cyan }
您好,谢谢您的答复。
我尝试了你的规则。但这无效。我不知道为什么诚实。无论如何,我以某种方式设法使用该功能将其旋转:setbacktoarea(区域,识别),只有我必须妥协,就像优先级不是对覆盖率而是距离的事实。为了解决此Invonvenientè,我在规则中创建了报告,该报告向我展示了实际的覆盖率,因此我可以手动采取行动以获取我想要的覆盖率。
现在,我不知道是否有更精致的方法来达到相同的结果。如果您知道,我可以尝试。
但是现在我引起了一个其他问题的共鸣,在Prtica中,我需要将限制设置为距边界和道路的距离,基本上是根据Eficio的高度进行更改的距离,如果需要,我需要能够消除一个边界与另一个边界的距离。
为了更好地解释,我需要使距离适应我选择的高度,这是通过设置属性来完成的。到目前为止,我想在右侧取消距离并在左侧变得最大的距离时发现的问题。为了在边界建造建筑物。
实际上,我已经尝试使用@Enum函数和@Range函数,但是两者都无法捕获我的需求。后者为我提供了一个范围,另一方面,前者使我能够分解预定的数字值,我希望@Enum函数中的那些数字值具有互动性并符合我输入的输入数据,即ALT。
我希望我很清楚。
再次感谢您在社区中的欢迎,我希望能够与CityEngine创建自己的程序规则。
规则将覆盖率与距离道路和边界的距离联系起来
您好,
根据标题,我正在尝试创建一条规则,该规则将大量的覆盖率与距离道路和边界距离的距离联系起来。我会说我是CityEngine的初学者。
现在,我通过阅读了几篇文章并关注了几个YouTube视频,已经处理了这一规则两个星期。我设法创建了一个规则,将公约分为5个部分。
建筑物被挤出的中心部分和其他4个自由零件。我将批次分为所有这些部分,以便可以调整到边界和道路的距离,并控制建筑物表面。
只有一个问题。控制并不完美,实际上要改变距离,我必须对不同地段的面积百分比采取行动。这很不方便,因为它不允许我直接在距离上行动。
作为初学者,我想知道是否有一种方法可以实现这一结果。
提前致谢
例如,您可以首先使用 Compute Edge属性工具获得包裹形状的方向。然后,以下规则使您可以定义最大的建筑物覆盖率和每侧的挫折距离。如果最大覆盖范围要比setbackperedge操作的其余部分较小,则挫折室挫折会通过setbacktoarea操作(深蓝色区域)增加。
version "2024.1"
const lotArea = geometry.area
@Description("Maximum ratio of footprint to parcel area") @Percent
attr area_ratio = 0.5
@Description("Minimum street setback") @Distance @Range(min=0, max=15)
attr setback_front = 5
@Description("Excact side setback") @Distance @Range(min=0, max=15)
attr setback_side = 10
@Description("Excact rear setback") @Distance @Range(min=0, max=15)
attr setback_rear = 15
dist(orientation) = case orientation == "front" : setback_front
case orientation == "side" : setback_side
case orientation == "rear" : setback_rear
else : 0
@StartRule
SetbackPerEdge --> setbackPerEdge( dist( edgeAttr.getString("orientations") ) )
{ edgeAttr.getString("orientations") == "front" = Grey
| edgeAttr.getString("orientations") == "side" = Yellow
| edgeAttr.getString("orientations") == "rear" = Green
| remainder = SetbackToArea }
SetbackToArea --> setbackToArea(lotArea * area_ratio)
{ edgeAttr.getString("orientations") == "front" = Blue
| remainder = extrude(10) Cyan }
您好,谢谢您的答复。
我尝试了你的规则。但这无效。我不知道为什么诚实。无论如何,我以某种方式设法使用该功能将其旋转:setbacktoarea(区域,识别),只有我必须妥协,就像优先级不是对覆盖率而是距离的事实。为了解决此Invonvenientè,我在规则中创建了报告,该报告向我展示了实际的覆盖率,因此我可以手动采取行动以获取我想要的覆盖率。
现在,我不知道是否有更精致的方法来达到相同的结果。如果您知道,我可以尝试。
但是现在我引起了一个其他问题的共鸣,在Prtica中,我需要将限制设置为距边界和道路的距离,基本上是根据Eficio的高度进行更改的距离,如果需要,我需要能够消除一个边界与另一个边界的距离。
为了更好地解释,我需要使距离适应我选择的高度,这是通过设置属性来完成的。到目前为止,我想在右侧取消距离并在左侧变得最大的距离时发现的问题。为了在边界建造建筑物。
实际上,我已经尝试使用@Enum函数和@Range函数,但是两者都无法捕获我的需求。后者为我提供了一个范围,另一方面,前者使我能够分解预定的数字值,我希望@Enum函数中的那些数字值具有互动性并符合我输入的输入数据,即ALT。
我希望我很清楚。
再次感谢您在社区中的欢迎,我希望能够与CityEngine创建自己的程序规则。