GC - Base Coordinates for Civil Projects

Hi,

I am hoping someone will be able to advise on what is the correct workflow to use when using GC for a civil project.

The scenario I have is that I want to use GC to model aspects of a freeway project using strings from a road corridor created in Open Roads Designer (ORD). The real world coordinates for the ORD model are around Easting (x) 330000, Northing (y) 5817000.

When I start the GC script, I create a baseCS at the DGN Model Origin (i.e. 0,0).

This creates the problem that the GC script is trying to work too far from the DGN model origin, resulting in some aspects of the script not working as they should (the script works as expected when it is run closer to the DGN Model Origin).

What is the correct way to work around this issue? Should I not work in real world coordinates when using GC?

I have tried moving the global origin of the GC file closer to the ORD road corridor however that does not seem to provide any benefit.

Regards,

Ryan

Parents
  • Hi Ryan,

    I have found that the best way to deal with this is to setup your "BaseCS" at 0,0,0 as per normal, and then create an additional "OffsetCS" for translating all your external references and geometry (e.g. -330000,-581700, 0). This way you get the best of both worlds, you can work at 0,0,0 and then when finished just use the "CopyTransformGeometricContents" method to translate all your geometry from "OffsetCS" back to "BaseCS" prior to exporting the results, so that the geometry is at real world location. I have raised this issue of working outside SWA with Bentley before but perhaps put in another SR for an enhancement as well; hopefully they will listen if enough people request it and then update their software so that it is more compatible with the workflows used in the Civil Infrastructure space.

    As a side note, I assume you're also in Melbourne based on the coords you mentioned?! Nice to meet someone else using GC in Melbourne now Slight smile

    Answer Verified By: Ryan McCormack 

  • Hi, Edward,

    Could you send a gct file or a demo of how to  create an additional "OffsetCS" for translating all your external references and geometry (e.g. -330000,-581700, 0)?

  • Sure thing. Ignoring the fact that I'm not actually doing anything in this graph, this should help illustrate the workflow:

    And here is the transaction list:

    transaction 1 stateChange 'Add attachmentOffset, baseCS, buildGeometry, exportGeometry, offsetCS, offsetGeometryRWCS'
    {
        gcModel
        {
            node User.Objects.baseCS Bentley.GC.NodeTypes.CoordinateSystem
            {
                Technique                 = 'AtDGNModelOrigin';
                DGNModelName              = 'Design Model';
                SymbolSize                = 1;
                GraphLocation             = <auto> {40.0, 40.0};
            }
            node User.Objects.offsetCS Bentley.GC.NodeTypes.CoordinateSystem
            {
                Technique                 = 'ByCartesianCoordinates';
                XTranslation              = -330000;
                YTranslation              = -581700;
                ZTranslation              = 0;
                Visibility                = NodeVisibility.Hidden;
                GraphLocation             = <auto> {40.0, 197.59};
            }
            node User.Objects.attachmentOffset Bentley.GC.NodeTypes.ReferenceAttachment
            {
                Technique                 = 'AttachFromFile';
                CoordinateSystemToHostAttachment = offsetCS;
                DesignFileToAttach        = 'Empty.dgn';
                GraphLocation             = <auto> {314.0, 40.0};
            }
            node User.Objects.buildGeometry Bentley.GC.NodeTypes.Solid
            {
                Technique                 = 'Cone';
                StartPoint                = attachmentOffset;
                GraphLocation             = <auto> {588.0, 40.0, 0.0, 144.443};
            }
            node User.Objects.offsetGeometryRWCS Bentley.GC.NodeTypes.Solid
            {
                Technique                 = 'CopyTransformGeometricContents';
                NodeToCopy                = buildGeometry;
                CopyFrom                  = offsetCS;
                CopyTo                    = baseCS;
                GraphLocation             = <auto> {588.0, 237.87};
            }
            node User.Objects.exportGeometry Bentley.GC.NodeTypes.Export
            {
                Technique                 = 'ExportNodesAsElementsToAnotherDesignFile';
                NodesToExport             = offsetGeometryRWCS;
                AutoProduceOnUpdate       = false;
                GraphLocation             = <auto> {862.0, 40.0};
            }
        }
    }

Reply
  • Sure thing. Ignoring the fact that I'm not actually doing anything in this graph, this should help illustrate the workflow:

    And here is the transaction list:

    transaction 1 stateChange 'Add attachmentOffset, baseCS, buildGeometry, exportGeometry, offsetCS, offsetGeometryRWCS'
    {
        gcModel
        {
            node User.Objects.baseCS Bentley.GC.NodeTypes.CoordinateSystem
            {
                Technique                 = 'AtDGNModelOrigin';
                DGNModelName              = 'Design Model';
                SymbolSize                = 1;
                GraphLocation             = <auto> {40.0, 40.0};
            }
            node User.Objects.offsetCS Bentley.GC.NodeTypes.CoordinateSystem
            {
                Technique                 = 'ByCartesianCoordinates';
                XTranslation              = -330000;
                YTranslation              = -581700;
                ZTranslation              = 0;
                Visibility                = NodeVisibility.Hidden;
                GraphLocation             = <auto> {40.0, 197.59};
            }
            node User.Objects.attachmentOffset Bentley.GC.NodeTypes.ReferenceAttachment
            {
                Technique                 = 'AttachFromFile';
                CoordinateSystemToHostAttachment = offsetCS;
                DesignFileToAttach        = 'Empty.dgn';
                GraphLocation             = <auto> {314.0, 40.0};
            }
            node User.Objects.buildGeometry Bentley.GC.NodeTypes.Solid
            {
                Technique                 = 'Cone';
                StartPoint                = attachmentOffset;
                GraphLocation             = <auto> {588.0, 40.0, 0.0, 144.443};
            }
            node User.Objects.offsetGeometryRWCS Bentley.GC.NodeTypes.Solid
            {
                Technique                 = 'CopyTransformGeometricContents';
                NodeToCopy                = buildGeometry;
                CopyFrom                  = offsetCS;
                CopyTo                    = baseCS;
                GraphLocation             = <auto> {588.0, 237.87};
            }
            node User.Objects.exportGeometry Bentley.GC.NodeTypes.Export
            {
                Technique                 = 'ExportNodesAsElementsToAnotherDesignFile';
                NodesToExport             = offsetGeometryRWCS;
                AutoProduceOnUpdate       = false;
                GraphLocation             = <auto> {862.0, 40.0};
            }
        }
    }

Children