|
POST
|
Hello @Kenneth-Lindhardt Thank you for bringing up this topic. With the changes to street networks introduced in CityEngine 2025, most legacy rules continue to function as before. However, there is an important change in how street segments connect to nodes: transition shapes are now part of the node itself. Since the lane information is not available on those shapes, creation of pipe extensions for multiple lanes is not supported. To help illustrate this, I created a simple pipe network rule that demonstrates how to handle pipe connections to nodes under the new system. version "2025.1"
attr shapeType = ""
@Distance
attr Height_Joint = 4
@File
attr pipeAsset = "assets/cylinder.hor.obj"
attr multiLanes = false
@StartRule
PipeNetwork -->
case shapeType == "Sidewalk": NIL
case shapeType == "Street": Pipe
else: Connector
Pipe --> insertAlongUV(0, pipeAsset, geometry.dv(0,unitSpace)) Material
Connector --> extrude(Height_Joint) Material
ConnectorExt -->
split(v,uvSpace,0)
{ -geometry.vMin: NIL # the lanes start at v-coord 0 i.e. everything below can be splitted away
| 1: ConnectorType(multiLanes) # the lanes end at v-coord nLanesTotal
| ~1 : NIL } # all remaining geometry beyond can be split away
ConnectorType(square) -->
case square: Connector
else: Pipe
Material --> color("#ffae42") setNormals(auto) The user needs to set the Start Rule "ConnectorExt" on the new node extension shapes. Additionally, the attribute "multiLanes" defines if a pipe or a square extension is created.
... View more
02-11-2026
02:50 AM
|
1
|
0
|
239
|
|
IDEA
|
Thanks for the clarification. You are pointing out, that the necessary creation of the connecting node to the street network, does influence the initial shapes for the model generation. In the example below, the result is an altered lantern placement.
... View more
02-11-2026
12:42 AM
|
0
|
0
|
588
|
|
POST
|
Hi @romainjanil Thank you for reporting this issue. It would be good to have reproduction data and the steps that lead to the issue. Are you creating the Shapes with holes using the Shape Geometry Tools? Have you tried if a Shape Cleanup after the boolean operations helps? https://doc.arcgis.com/en/cityengine/2020.1/help/help-shape-geometry-tool.htm
... View more
02-04-2026
01:00 AM
|
0
|
1
|
318
|
|
IDEA
|
Hello @MatoBaloga Thanks so much for sharing your thoughts! I just wanted to mention that with the new CityEngine Street Designer, you can now achieve a 'zero lane width' by simply removing the lane: Remove lanes—ArcGIS CityEngine Resources | Documentation Hopefully, this helps address the issue you mentioned.
... View more
01-21-2026
04:49 AM
|
0
|
1
|
619
|
|
IDEA
|
Hi @jabrett Thanks so much for your feedback and suggestion – I really appreciate it! Bookmarks are tied directly to camera views rather than being scene objects, which is why they can't be grouped in Layers. That said, a way to structure bookmarks is to add multiple cameras to your scene – this lets you effectively group your bookmarks by camera. Hope that helps! Cameras—ArcGIS CityEngine Resources | Documentation Please let me know if this feature works for your use case!
... View more
12-10-2025
02:31 AM
|
0
|
0
|
295
|
|
POST
|
Hello @Tiwene_Roberts Thanks for sharing your code snippet—it's awesome that you're diving in and learning by doing with CityEngine. I understand the challenge of exporting that inner parcel boundary as a GIS layer. I'll walk you through a straightforward solution below. When exporting a Model to FileGDB, it is not possible to only select certain faces of a Model. Therefore, all face geometries in the CGA code, that you do not want to export, have to be NILed. NIL operation—ArcGIS CityEngine Resources | Documentation // -----------------
// Outer parcel definition (optional visualization only)
// -----------------
OuterParcel --> NIL
// set(parcelType, "outer")
// color("#99ccff") Then Export to the model to FileGDB and make sure to only export Models: Export FileGDB (Esri File Geodatabase)—ArcGIS CityEngine Resources | Documentation
... View more
10-20-2025
06:11 AM
|
3
|
1
|
722
|
|
POST
|
Please Note: The "EFFECTIVE REGULATIONS" on a parcel are the defined by Zoning + Overlays + Parcel overrides. Zoning regulation management—ArcGIS Urban | Documentation ArcGIS Urban integration—ArcGIS CityEngine Resources | Documentation
... View more
10-16-2025
03:16 AM
|
1
|
0
|
911
|
|
POST
|
Hi @RidleySoudack I'm excited to see you are leveraging CityEngine functionality to check for and handle conditional zoning regulations. This example rule for Parcel shapes shows how to work with the ZoneTypeID attribute obtained from in the scene's Zone Boundaries layer: version "2025.0"
@Order(1)
@Enum(valuesAttr=zoneTypeIDs,restricted=false)
@DisplayName("Zone Type ID")
attr ZoneTypeID = ""
@Hidden
attr zoneTypeIDs = getKeys(zoneTypeTable)
@Order(2)
@DisplayName("Zone Type Label")
attr Zone_Type_Label = getValue( zoneTypeTable, ZoneTypeID, "Label")
@Order(3)
@Color
@DisplayName("Zone Type Color")
attr Zone_Type_Color = getValue( zoneTypeTable, ZoneTypeID, "Color")
@Order(4)
@DisplayName("Zone Type HeightMax")
attr Zone_Type_HeightMax = float(getValue( zoneTypeTable, ZoneTypeID, "HeightMax"))
@Order(0)
@File
@DisplayName("Zone Type Table")
attr Zone_Type_Table = "data/Urban_for_CE_Database_View.csv"
const zoneTypeTable = readStringTable(Zone_Type_Table)
getKeys(table) = transpose(table[1:nRows(table) - 1, 0])
getValue(table, key, columnName) with(
keysColumn := getKeys(table)
rowIndex := findFirst(keysColumn, key) + 1
columnIndex := findFirst(table[0, 0:nColumns(table)], columnName)
) =
case (rowIndex == 0) || (columnIndex == -1): "Error"
else: table[rowIndex, columnIndex]
@StartRule
Parcel -->
print(ZoneTypeID)
print(Zone_Type_Label)
color(Zone_Type_Color)
extrude(Zone_Type_HeightMax) Unlike the space type info, the zoning info doesn't get added to the project as a CSV when importing a plan form ArcGIS Urban. Here is what you can do to work with the zoning information: Find the ArcGIS Urban Database View of your plan in the portal contents. It contains a table named ZoneTypes Export this ZoneTypes table to a CSV file and then download it Inside CityEngine, add the ZoneTypes CSV file to your project's data folder Now you can connect the rule attribute Zone_Type_Table to the downloaded ZoneTypes CSV file. To get the parcel's Zone Type information, simply connect the rule attribute ZoneTypeID to the matching attribute in the scene's Zone Boundaries layer: The final result should look like this:
... View more
10-15-2025
08:03 AM
|
1
|
0
|
920
|
|
POST
|
Hello @ChrisKo3 Thanks for reaching out with your question! That's a tricky one, indeed. When dealing with such challenges, you could gradually increase the Segment Width by partitioning the segment. In case of asymmetric lane distributions, as in this example, also adjust the Segment Offset. To smoothen out the transition in the Joint Nodes, set the Curb Radius to the max value of 10.
... View more
07-09-2025
03:56 AM
|
0
|
0
|
481
|
|
IDEA
|
Thank you @romainjanil for bringing up this topic. You want to have more control over the triangulation algorithm that is used for generating models. So far there are no plans to offer this. But, the upcoming release of CityEngine 2025.0 comes with many improvements for the boolean 3D operations, including better cleanup of the resulting shapes. This also affects the triangulation. The triangulation of Initial Shapes for rendering in the CE viewport is not the same as the triangulation used for creating models. If there are differences, it's recommended to hide the Initial Shapes. Can you please give more insights, why you need to apply a specific triangulation algorithm for generating Models?
... View more
06-11-2025
07:27 AM
|
0
|
0
|
600
|
|
POST
|
Hello @JackCurran1 Have you tried to adjusted the base colour in 3ds Max areal image texture like this: color_new = pow(color_old, 1 / 2.2) It will impact the multiplier on the material in CityEngine. If this doesn't give the expected result, it would be good to analyze the aerial imagery texture.
... View more
04-04-2025
02:40 AM
|
0
|
0
|
721
|
|
POST
|
Thanks for your feedback. Great that you managed to resolve the your question. To make my example rule work, the parcel shape requires the attribute edgeattr/orientations set by the Compute Edge Attributes tool.
... View more
03-12-2025
06:20 AM
|
0
|
0
|
1169
|
|
POST
|
As an example, you can first obtain the orientations of a parcel shape with the Compute Edge Attributes tool. Then, the following rule lets you define a maximum building coverage ratio and setback distances per side. In case the maximum coverage is smaller then the remainder of the setbackPerEdge operation, the front setback is increased by the setbackToArea operation (dark blue area). 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 }
... View more
03-06-2025
12:49 AM
|
0
|
2
|
1220
|
|
POST
|
Hi @Neri12 , Welcome to the ArcGIS CityEngine Community. 😊 To give you an advice, it would be very helpful, to have a screenshot and some snippets of your CGA code. General information: the setbackToArea operation allows you to define the built up area vs. the free part ratio of a lot. the setbackPerEdge operation allows you to define a setback distance per edge.
... View more
03-05-2025
07:47 AM
|
0
|
0
|
1226
|
|
POST
|
Hi @KennethLindhardt1 Have you tried using CGA to report the spherical latitude/longitude coordinates (WGS84) of the scope's origin with the getGeoCoord function? Tutorial 12: Scripted report export—ArcGIS CityEngine Resources | Documentation then shows you how to write out a file with positioning info for each exported Model.
... View more
02-27-2025
06:01 AM
|
0
|
0
|
1495
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 02-11-2026 02:50 AM | |
| 1 | 10-15-2025 08:03 AM | |
| 1 | 10-16-2025 03:16 AM | |
| 3 | 10-20-2025 06:11 AM | |
| 1 | 04-19-2023 12:30 AM |
| Online Status |
Offline
|
| Date Last Visited |
02-26-2026
12:07 AM
|