What's New
New and Changed in GenerativeComponents CONNECT Edition Update 8
New and Changed in GenerativeComponents CONNECT Edition Update 7
New and Changed in GenerativeComponents CONNECT Edition Update 6
New and Changed in GenerativeComponents CONNECT Edition Update 5
New and Changed in GenerativeComponents CONNECT Edition Update 4
New and Changed in GenerativeComponents CONNECT Edition Update 3
New and Changed in GenerativeComponents CONNECT Edition Update 2
New and Changed in GenerativeComponents CONNECT Edition Update 1
New and Changed in GenerativeComponents CONNECT Edition?
Getting Started
Welcome to GenerativeComponents
What is GenerativeComponents?
Launching GenerativeComponents
Getting Oriented
GC Workflow
GenerativeComponents Ribbon tools
Active Plane toolbox
Promote Elements (GenerativeComponents for MicroStation only)
The Node Types Dialog
The Transactions dialog
View Window
The Default Model
The baseCS
Creating a baseCS
Creating a New Model
Graphic Handles
Symbol Size
Methods of GenerativeComponents
Naming and Numbers
Operators
Coordinate System
Node and Technique Documentation
Many More Ways to Learn GenerativeComponents
Nodes
Techniques and Properties
Points
Expression Inputs
Exercise: Using Properties and Expression to place a point
Dot Operator
Lists and Indexing
Exercise: Using { } to generate a list
Indexing
Functions
Node Types
Frequently Asked Questions
Tips and Tricks
Putting it Together
Now Create a New Model
Free Form Surfaces
Tunnel with a Crossbar Roof
Create a new file
Create the Base Coordinate System (baseCS)
Exercise: Placing the Path Control Points and Curve
Exercise: Creating the Planes
Exercise: Creating one sample T cross section
Exercise: Replicate the Section along the curve
Creating a Surface from the Line.EndPoints
Exercise: Making the Roof Height Responsive to the Path Elevation
Exercise: Creating a User Defined Roof Panel
Exercise: Creating the geometry of a Crossbar
Exercise: Creating a Generated Node Type from the Crossbar
Exercise: Placing the generated node
Optional exercises: Further editing and adjustments
Learning More
Module Overview
Professional Training from The Bentley Institute
The GenerativeComponents learning path
Geometry Basics
Dimensional Space
Interfaces
Zero Dimension
First Dimension
Second Dimension
Third Dimension
Composite Space
Composite Coordinate Systems
Composite Planes
Dimensions in Parametric Space
T-parameter
UV-parameter
Geometric Support
Space Optimization
Free Form Geometry
BSpline Curve
BSpline Surface
Continuity
Continuity between Two Curves
Continuity within a Surface
Continuity between Separate Surfaces
Transactions
Transactions tools
Show Transactions
Record Model Changes
Record Locations
To Record Node Locations
Remove Locations
Indicate Affected Nodes
Delete Suppressed Transactions
Transactions dialog
Model-based Transaction
Script-based Transactions
Include File Transactions
Creating a Transaction
To Create a Transaction Step
To Create a Transaction step using the Record Recent Model Changes button
To Create a Transactions Step Using Copy/Paste
To Create a Transaction step using New Model-Change Transaction
Replaying Transactions
Editing a Transaction
To Edit a Transaction
Suppress/Delete Transactions
To Suppress a Transaction
To Unsuppress a Transaction
To Delete a Transaction
Rebuilding and Splitting Transactions
To Rebuild Transactions
To Split a Transaction
Startup Transactions
Transaction Icon Colors
Accumulating Edits
Consolidating Transactions
Export Transactions
Using the Graph
Introduction to the Graph
Navigating the Graph
Graph Toolbar
The Mouse
Undo and Redo
Adding New Nodes to the Model
Try It Now
Incomplete, Complete, and Failed Nodes
Entering and Managing Port Inputs
Drawing a Wire
To Draw a Wire
To Enter Port Values
Automatically wiring ports
Arranging Nodes in the Graph
Selection Sets
Method 1 - using the mouse click
Method 2 - using the graph navigation tools
Port Editors
Using Port Editors When Drawing Wires
Aspects of Both Port Editors
Advanced Port Wiring
Graph Window
Arranging the Graph Window
To Open the Graph Window
To Close the Graph Window
To Move the Graph Window by Pointer
To Minimize the Graph Window
To Restore the Graph Window
Using the Graph Toolbar Controls
Element Selection
To Select a Single Node
To Select Two Nodes Connected by a Wire
To Select Multiple Nodes
Zoom In tool
To Zoom In on the Graph
Zoom Out tool
To Zoom Out of the Graph
Fit View
To Fit the Nodes in the Graph Window
Fit View to Selection
To Fit Nodes to the Graph Window
Window Area tool
To Indicate a Rectangular Area to Display in the Graph
Reset View tool
To Reset the View of the Graph
Nodes
Working with Node Types
Available Node Types
Node Techniques
Show Node Types
To Create Nodes with the Node Types dialog
Place Geometry
Place Point
Place Plane
Place Coordinate System
Create baseCS
Construction Plane
Place Line
Place Polyline
Place Polygon
Place B Spline Curve
Place Arc
Place Circle
Promote To Node
To Promote an Element to Node
Node Types dialog
Node Properties dialog
Node Attributes
Apply Symbology
Auto visibility
Visible
To Hide a Node
To Display a Hidden Node
Hidden visibility
Is Construction
To Set a Node to Construction Mode
To Display a Construction Node
Construction Visible
To Hide a Construction Node
Handle Visible
Replication Style
Status Indicators
Manipulating Nodes
Changing Node-Techniques
To Change a Node’s Technique
Editing Nodes
Editing a Node’s Input
Editing a Node Input with the Node Properties dialog
Moving Nodes
To Move a Node
Ports
Port Types
Input Ports
Output Ports
Nodal Ports
Port Editor
Opening the Port Editor
Input Port Editor
Technique
General
Output Port Editor
Common
Technique Inputs
General
Pinning Ports
To Pin a Port to a Node
To Unpin a Port from a Node
Wires
To Connect a Wire with a Port
To Disconnect a Wire from a Port
To Delete a Wire
Creating and Editing Models
Node Creation
Node Creation Tools
To Quickly Create a Point
Node Types
Techniques
Node Input Properties
Data Types
Interfaces
Single Input Parameters
Lists
Functions dialog
Replication
Indexing
Conditional Statements
Functions
Predefined Functions in GenerativeComponents
To use a Function to Produce a List Containing a Range of Elements
Function definition by a User
To create a Script Function
To Edit a FunctionCall
Input Arguments
Function by Function Documentation
Node Editing
Node Selection
Element Selector tool
To Select One or More Elements with the Individual Method
To Select Additional Elements with the Individual Method
To Select All Elements in the Active Model
To Select Elements Based on Their Attributes
To Deselect All Elements
Graph Selection
Node Dictionary Selection
To Locate a Node Using the Node Dictionary
Modify Node tools
Edit Node
Switch Supports
Switch Support example
Split Point
To Split a Point into Two Points
Merge Points
To Merge Two Points
Delete Submodel
Numerical Edit and Parametric Manipulation
Switching Techniques
Split and Merge Points
Visibility Properties
Color and Appearance
MicroStation Levels
Level Display Dialog
Level Manager Dialog
Level Properties Dialog
Generating Node Types
Packages tools
Generate Node Type
Packager
Global Values
Add-ins
Precompiled Assembly Files and Source Code Files
Importing a User-Defined Node
Removing a User-Defined Node
Recreating a User-Defined Node
Namespaces
C# Generator Tool
Using Generate Node Types
Defining a New Node
Selecting Inputs: the Bubble Concept
Naming a Node
Enabling Replication
Preserving Free Parameters
Outputs
Options
Using User-Defined Nodes
Default Technique
Nested Nodes
Modeling Tools
Model Tools and Controls
Show Graph
To Open or Close the Graph Window
Node Dictionary
To Display a List of Nodes
To Apply Filter to the Selected Nodes
To Locate a Node Using the Node Dictionary
Update Model
To Update a Model
Node Manipulation
Move node
Using the Move Node tool
Copy node
Mirror Copy node
Using the Mirror Node tool
Deferred Dynamics
Toggle Deferred Dynamics
Deferred Update
Deferred Dynamics Update
Copy Tools
Associative Copy by Transform or Translate
Copy Translation
To Copy by Translation
Copy Transformation
Geometry Controllers
Slider
Expression
Color
Show Controls
To Open the Control Panel
To Add/Remove a Node to the Control Panel
Control Panel dialog
Clip Volume Node
Law Curves
Law Curve
Law Curve Dependent Values
Law Curve Use
Building Custom Controllers
Identifying Control Parameters
Modeling the Control Interface
Optimization Workflow
Place Optimizer node
Connect Design Parameters
Connect Objectives (decision values, fitness functions, performance metrics)
Optimization Settings
Run Optimizer
Inspect Results
Maximization
Instantiate Alternative Solutions
Save and Load Optimization Results
Fabrication Planning
Polygon Layout
Host Coordinate System
Spacing
OpenBuildings Designer Nodes
Building Node
Floor Node
Wall Node
Door Node
Window Node
BuildingContent Node
CompoundCell Node
FreeForm Node
Grid Node
Slab Node
StructuralMember Node
Space Node
Plan Node
Section Node
Sketch Grid Node
Grid Settings Node
Duct Node
Autofitting Preferences Node
Working With External Files and Data
Importing Geometry
Importing Geometry through MicroStation
To Import a File Through MicroStation
File Types
Attaching External Files
Promoting MicroStation Elements to Nodes
Promoting Individual Elements
To Recreate an Element as a Node
Simple Geometry
To Import and Recreate a Curve Element as a Node
Complex Geometry
Promoting Elements by Range
To Promote Elements by range
Promoting by Range Produces a List
Promoting Elements by Cell
Exporting a Model
Export a Node from GenerativeComponents
Export Nodes to Another Design File
Export Nodes to Another Model
Exporting a Model through MicroStation
To Open the Export Dialog
Exporting a Single DWG Model
To Export a DWG Model
Exporting Nurbs Surfaces
To Export Nurbs Surfaces
Imported GC Model Node
Setting GC Model Output Property
Using the Imported GC Model Node
Exchanging Data with Microsoft Office and Databases
Loading Assembly Files
To Load Assemblies
Exchanging Data with Excel
ExcelRange.ReadValue
ExcelRange.WriteValue
Exchanging Data with Databases and Text Files
Comma Separated ACSII Text Files
Data Importer / Exporter
Database Facilities in GenerativeComponents
Database Node Types
The DataImporter Node
How to Use the DataImporter Node to Populate Other Nodes
The DataExporter Node
CScript Classes
The DataConnection Class
The DataTable Class
The DataRow Class
The DataColumn Class
Database Code Examples
Rendering and Animations
Rendering MicroStation with Luxology
Lighting Controls
Material Maps
Rendering an Image in MicroStation
Image Capture Node
Animating a Scene with a Script Transaction
Animating an Expression
Setting Up a Camera
Using the Camera
Animating a Camera
Exporting Frames
GCScript Programming
Calculation tools
Value
Operation
Function Call
Show Functions
Expression Builder
Script Editor
Data Tools
Watches
Console
GCScript Language
Using the Script Console to Learn and Experiment with GCScript
How to Show the Script Console
How to Operate the Script Console
Single Lines Only
Script Console Examples
Components of the GCScript Language
Comments
End-of-line comment
Block comment
Spaces
Names
Keywords
Fundamental Types
bool
char
color
Datetime
double
function
int
long
number
object
string
timespan
var
Measurement Types
Record and Table Types
List Values
Rank and Count
List Types
Indexing Into a List Value
Expressions
Operators
Object Operators
Numeric Operators
Boolean Operators
String Operators
Datetime / Timespan Operators
Bitwise Operators (Advanced Topic)
Precedence of Operators
Parentheses
Lambda Expressions
Query Expressions
Query Expression Examples
Variables
Storing a Value into a Variable
Retrieving Values from Variables
Variable Operators
Automatic Replication
Nested Replication
Examining a Value's List-ness
Specifying a Minimum Required Rank
Replicated values and expressions
Statements
Simple Statements versus Compound Statements
The Variable Declaration Statement
The Variable Assignment Statement
Expression Statements
Function Calls
Variable Operations
The If Statement
The While Statement
The Do Statement
The For Statement
The Foreach Statement
The Break and Continue Statements
The Empty Statement
The Switch Statement
The Function Definition Statement
The Return Statement
The Breakpoint Statement (Advanced Topic)
Scripting Examples
Different types of geometric scripts in GenerativeComponents
First (using full point nodes) BSpline curve
Second (using child node points) BSpline curve
Third (using DSeries lightweight points) BSpline curve (defined by internal function)
Fourth BSpline curve only as point
Top-level and temporary nodes in scripting
Top Level Node
Temporary Node
Global Functions
Library Functions
Math/Geometry Functions
Abs
Acos
Asin
Atan
Atan2
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Fraction
Limit
Log
Log10
Max
Min
Odd
Pow
Radians
Random
Round
SetRandomSeed
Sign
Sin
Sinh
Sqrt
Tan
Tanh
Truncate
List Functions
Add
AddFrom
AllIndicesOf
Any
Apply
Balance
Difference
ExclusiveOr
FilledList
FilledList2d
FilledList3d
Find
First
Flatten
IndexOf
InnerCounts
Insert
Interleave
Intersection
Last
Maximum
MembersAt
Median
Middle
RemoveAt
RemoveDuplicates
ReplaceMembers
Rest
ReverseSequence
RotateSequence
Select
Nodes() and SelectNodes()
Series
SeriesByCount
SeriesUniformly
Skip
SkipEnd
Sort
SortIndices
Sublist
Sum
Take
TakeEnd
Transpose
Union
Scripting Functions
CallFunction
CallMethod
Evaluate
Execute
FindObjectByName
GetPropertyValue
RunScriptFile
SetPropertyValue
String Functions
Format
Type Conversion Functions
ToDouble
ToInt
ToString
ToValueOfType
User Interaction Functions
Ask
AskString
ShowMessageBox
General File I/O Functions
DeleteFile
Diagnostic Functions
ClosePrintFile
FlushPrintFile
IsDebugging
OpenPrintFile
Print
PrintFormat
Objects
Constructors
Properties and Methods
Imported Types
Geometry
Features
Script Functions
How to Write and Use GCScript Functions
Calling functions
Writing our own functions: local functions
Function Name and Type
Arguments
Return Value
ref and out Values
Optional values
Writing our own global functions
Anonymous Functions
How to Create/Manage Nodes in Script Code (focusing on script transactions)
Constructors and initializing nodes
Properties and Techniques
Ways of Creating Nodes in GenerativeComponents Script Code
Creating Top-Level Nodes with Script-Transactions
Creating Replicated Child Nodes within Script Transactions
Creating Nodes from Constituent Nodes Script Transactions
Creating Nodes from Bentley.Geometry Library
Updating Nodes in Script Transactions
How to use the ByFunction technique
Passing Arguments into ByFunction technique
Function
FunctionArguments
Using an anonymous function within the ByFunction technique
Using a Global Script Function
Setting Additional properties when using ByFunction technique
Creating arrays of nodes when using ByFunction technique
Creating double arrays or nested features when using ByFunction technique
Using Temporary Nodes within ByFunction techniques
Lightweight DGeometry in GC
Introduction
Bentley.Geometry.2.0.dll
Correspondence between GC nodes and underlying DGeometry
Syntax
DPoint3d vs Point3d
Bentley.Geometry.Mesh
DGeometry Properties
sform3d
DRay3d
DPlane3d
DRange3d
DPoint3d
Terminology
Void
Static
Get, Set
Out properties
Ref properties
Overloading
Initializing a node
Types
DAngle
DPoint3d
DVector3d
DSegment3d
DRay3d
DTransform3d
DMatrix3d
DRange3d
DPlane3d
DEllipse3d
Examples
PointByOriginDistanceAngleZTranslation
pointByOriginDistanceAngle
Intersection in XY of two DSegment3d's
Distance between two points
Debugging GCScript
Breakpoint
Standard breakpoint
Conditional breakpoint
Stack
Drawing Temporary Nodes During Debugging
Script Console
Copyright