No Sidewalk and minArcRadius=0

3257
1
Jump to solution
04-18-2016 05:56 AM
PmssS
by
New Contributor II

Hello,

I was wondering if there is a way of changing the defaults for the streets and intersections. This way I could draw my streets with design that i elected.

If it is not possible is there a way to manipulate the intersections in a rule file?

I tried also with a rule but I got stuck with the intersections. I don't know how to "call" the "minArcRadius"

The final goal, it is a street with no sidewalk and sharp corners.

I have done a rule file. Here is the extract related with the street: :

@StartRule

sidewalkWidthLeft       = (geometry.dv(0,unitSpace))

sidewalkWidthRight    = (geometry.dv(0,unitSpace))

minArcRadius             = 0

I assumed that by giving the direct name of the attributes present in the inspector it would work. But in fact in the inspector when I select a segment there is no start rule.

Sidewalk -->

     split(v,unitSpace,0) {1 : Curbs | 0: Pavement}

Curbs-->

     extrude (0)

Pavement

     extrude (0)

Here I copy an existing rule "street modern simple". but again it didn't work. I had a look (in fact I am still doing it) to a rule file named "Complete street simple" but appear to be just for streets with sidewalks; although it looks very complete it does not have any example without sidewalk.

    

thanks in advance

Pedro

0 Kudos
1 Solution

Accepted Solutions
CherylLau
Esri Regular Contributor

The street and intersection parameters cannot be changed through CGA rules.  You cannot change the underlying shapes, but you can create models that don't have sidewalks, for example, by making the following rule:  Sidewalk --> NIL.  But, this is probably not what you want to do since it would be harder to deal with the minArcRadius in the rules.

You can change some default settings used when drawing streets by going to Graph -> Street Creation Settings.  You can set values for sidewalk widths, but unfortunately, the intersection parameters are missing, so you cannot set a value for minArcRadius.  (We hope to improve this in the future.)

To set the minArcRadius, you'll have to draw all of your streets first, select them all, and then manually set the value of minArcRadius to 0 in the Inspector.

Or, you can use a Python script to set the values of sidewalkWidthLeft, sidewalkWidthRight, and minArcRadius for all of the streets in your scene.  Here is some code that does this:

# get graph segments and nodes

segments = ce.getObjectsFrom(ce.scene, ce.isGraphSegment)

nodes = ce.getObjectsFrom(ce.scene, ce.isGraphNode)

   

# set sidewalk widths to 0

ce.setAttribute(segments, '/ce/street/sidewalkWidthLeft', 0)

ce.setAttributeSource(segments, '/ce/street/sidewalkWidthLeft', 'USER')

ce.setAttribute(segments, '/ce/street/sidewalkWidthRight', 0)

ce.setAttributeSource(segments, '/ce/street/sidewalkWidthRight', 'USER')

# set minArcRadius to 0

ce.setAttribute(nodes, '/ce/crossing/minArcRadius', 0)

ce.setAttributeSource(nodes, '/ce/crossing/minArcRadius', 'USER')

View solution in original post

1 Reply
CherylLau
Esri Regular Contributor

The street and intersection parameters cannot be changed through CGA rules.  You cannot change the underlying shapes, but you can create models that don't have sidewalks, for example, by making the following rule:  Sidewalk --> NIL.  But, this is probably not what you want to do since it would be harder to deal with the minArcRadius in the rules.

You can change some default settings used when drawing streets by going to Graph -> Street Creation Settings.  You can set values for sidewalk widths, but unfortunately, the intersection parameters are missing, so you cannot set a value for minArcRadius.  (We hope to improve this in the future.)

To set the minArcRadius, you'll have to draw all of your streets first, select them all, and then manually set the value of minArcRadius to 0 in the Inspector.

Or, you can use a Python script to set the values of sidewalkWidthLeft, sidewalkWidthRight, and minArcRadius for all of the streets in your scene.  Here is some code that does this:

# get graph segments and nodes

segments = ce.getObjectsFrom(ce.scene, ce.isGraphSegment)

nodes = ce.getObjectsFrom(ce.scene, ce.isGraphNode)

   

# set sidewalk widths to 0

ce.setAttribute(segments, '/ce/street/sidewalkWidthLeft', 0)

ce.setAttributeSource(segments, '/ce/street/sidewalkWidthLeft', 'USER')

ce.setAttribute(segments, '/ce/street/sidewalkWidthRight', 0)

ce.setAttributeSource(segments, '/ce/street/sidewalkWidthRight', 'USER')

# set minArcRadius to 0

ce.setAttribute(nodes, '/ce/crossing/minArcRadius', 0)

ce.setAttributeSource(nodes, '/ce/crossing/minArcRadius', 'USER')