Prompt Text:
Here is some information on GenerativeComponents (I will refer to this as GC):
Functions always start with the word: function
A function is contained within {}
Comments are provided after a //
An example of a function is:
function (int[ ] Numberlist)
//arguments – int[ ] is used to indicate the input will be a list of integers
{
int sum = 0;
//declare the variable
foreach (int item in Numberlist)
//foreach variable βitemβ in sourcelist βNumberlistβ
{
sum = sum + item;
//statement that adds each new item in the list to the previous item
}
return sum; //return – output
}
In GC we don’t need to name the function.
GC we don’t use def we use the word function.
GC does not have the value Length for lists lengths instead it uses Count.
when declaring a variable GC accepts the type then the description. for example:
int oddNumbers =
declare the variable as a list of integers example:
int oddNumbers = {};
not List<int> oddNumbers = new List<int>();
When adding items to a the result list GC uses this:
result.Add(list1[i]);
There are a few words that are reserved by GC and hence can not be used as variables.
Reserved words like: Point, Number, distance.
Example of creating a Point pt:
Point pt = new Point(“scriptPoint”);
pt.ByCartesianCoordinates(baseCS, 1.2, 3.4, 0.0);
Some definitions for functions below:
Flatten
Returns a new ‘flat’ (rank-one) list comprising everymember at every nest level within the given list.
List.Flatten()
Interleave
Returns a new list comprising all members in all given lists, interleaved with each other.
object[] Interleave(object[] listA, object B, …)
Intersection
Returns a new list comprising every value that’s a member of both listA and listB.
object[] Intersection(object[] listA, object[] listB)
Last
Without the count, returns the last member in the givenlist.
List.Last()
With the count, returns a new list comprising the last’count’ members of the given list. (For example, if count = 4, returns the last4 members.)
The child line that has the largest length.
RemoveDuplicates
Returns a new list comprising all unique members of thegiven list.
List.RemoveDuplicates()
ReverseSequence
Returns a new list comprising all members of the given list,but in the opposite sequence.
List.ReverseSequence()
Series
The start, final and increment values must be numbers (int, double or long).
number[] Series(number start, number final, number increment)
Returns a new list filled with a series of numbers. The series begins at the start value and ends at or before the final value. Each item in the series is equal to the previous item plus the increment.
ToDouble
Returns a double-type represention of the given value.
double ToDouble(object any)
ToInt
Returns an int-type representation of the given value.
int ToInt(object any)
ToString
Returns a string-type representation of the given value.
string ToString(object any)
Transpose
Returns a new list comprising all members of the givenrectangular (non jagged) list.
List.Transpose()
How to use it
a) By default, the Transpose function automaticallypre-balances the list to depth 2, before applying the transposition.
{a, {b, c}}.Transpose() produces the list {{a, b}, {a,
c}}
b) Transpose takes an optional integer argument thatspecifies the maximum depth of the transposition.
If the value is greater than 2, the transposition is appliedrecursively to the specified depth (and the list is pre-balanced to thatdepth).
{{{a, b}, {c, d}}, {{e, f}, {g, h}}}.Transpose() produces
the list {{{a, b}, {e, f}}, {{c, d}, {g, h}}}
However, if a depth is specified, the same list istransposed recursively to a deeper level.
{{{a, b}, {c, d}}, {{e, f}, {g, h}}}.Transpose(3) produces
the list {{{a, e}, {b, f}}, {{c, g}, {d, h}}}
Union
Returns a new list comprising every value that’s a member of listA, listB, or both.
object[] Union(object[] listA, object[] listB)
function
A function value represents an independent block of GCScript statements. This is covered in more depth in a later section.
Example
function(x, y) { return x + y; }
Writing our own functions: local functions
The easiest way to create a function in GenerativeComponents is by using the statement builder and selecting function. This gives the basic construction.
function (arguments)
{
}
Functions, like variables must be defined above the place where they are called in the code otherwise the compiler will throw an error.
GCScript Language
GCScript is a C-style programming language (like C, C++, Java, and C#) thatβs optimized to work with GenerativeComponents.
GCScript is a modern, robust programming language providing type safely, conditional statements, repeating statements, block statements, functions and sub-functions, objects and methods, arguments passed by value or by reference, a rich set of expression operators, and many more aspects.
Furthermore, GCScript provides its own unique aspects, including automatic replication β the ability to use a list, or a nested set of lists, wherever a single value is expected.
GCScript connects all of the features in a GenerativeComponents model. GCScript appears at several different levels:
β’ Node Properties – Whenever you fill in the value of a property, that value is a GCScript expression, which can be as simple or as complex as you like.
β’ FunctionCall nodes and ‘ByFunction’ techniques – All of the functions you create are written entirely in GCScript.
β’ Script Transactions – In a transaction file, a script transaction lets you enter any number of arbitrary GCScript statements, which are executed in sequence when that transaction is performed.
β’ Script Files – A script file is a text file designed to contain a complete GCScript program. You can run the program, manually, whenever you wish, or you may run it automatically within any other GCScript code.
Distance between twopoints
This transaction will calculate the distance between two created pointsand print it to the console.
transaction 1 script ‘New script transaction’
{
DPoint3d ptD3d = new DPoint3d(2.0, 1.0, 0.0);
DPoint3d farPtD3d = new DPoint3d(4.0, 3.0, 0.0);
double distance = farPtD3d.Distance(ptD3d);
Print(”+distance);
}
To display the console window you must select (Console).