Is it possible to 'protect' intellectual property of gct

Hi there

The more we embed our (priceless....) thinking into automated tools including GC, the more we probably want to protect the content. Some considerable effort can be put into parametric / automated tools and we'd rather people didn't simply email the gct (and probably any associated support files) to a competitor. We also don't want just anyone modifying an assured gct file. Is there any way to 'protect' a gct file? 

- Can GC read an externally stored gct but process it without revealing the transactions?

- Can GC received command line instructions eg generativecomponents.exe i="input.gct" o="output.dgn"

I have done a little searching but can't find anything specific. Any support would be gratefully received.

Tom

  • Hi Tom,

    This is a good question. GenerativeComponents was designed around sharing work; however, it is possible to encapsulate scripts so that it would be more difficult to disassemble them, for example as Generated Node Types (please refer to the December 2017 GC SIG workshop about "The Generated Node Type (GNT), GNT Manager and Workflow") or by using the C# sample project to write C# code for an add-in to GC and compiling that so it would be encapsulated like any other DLL.

    GCT files are clear text files. GC does not use encryption within it. If it is mission critical, then someone could also use the C# coding approach to write an add-in that encrypts and decrypts GCTs upon writing and reading them. Also through the approach of coding an application, that application could use Microsoft's WCF technology to interface with GC and control it programmatically like a "headless" engine.

    Q: Can GC read an externally stored gct but process it without revealing the transactions?

    A: Not per se without resorting to above-mentioned approach utilizing GC's WCF interface. There is also the potential to construct a GCT that loads, runs, and closes GC (see answer to your second question); however, the GCT file itself still would be a text file that can be opened with Notepad.

    Q: Can GC receive command line instructions, e.g. GenerativeComponents.exe i="input.gct" o="output.dgn"?

    A: The WCF interface aside, GC permits providing an input file as a command line argument, e.g.
    C:\Program Files\Bentley\AECOsim CONNECT Edition\AECOsimBuildingDesigner>AECOsimBuildingDesigner.exe -wsGC=1 "C:\ProgramData\Bentley\AECOsim CONNECT Edition\Configuration\WorkSpaces\AECOsimExamples\worksets\NM1\Designs\AutomaticallyExecutingGCT.gct". This will open AECOsim Building Designer with GenerativeComponents enabled (that's the -wsGC=1 switch) and the specified GCT file. If all transactions in it are marked as "startup" by adding that attribute behind the transaction title

    transaction 1 stateChange 'Add baseCS', startup
    {
        <transaction contents>
    }

    then the GCT will execute all the way through. Output would be produced by including in the script nodes that produce output, like Export nodes to export geometry to DGN files, or ExcelRange nodes to write information to Excel workbooks.

    A last transaction containing the function call CloseGC() will close GC after executing the script.

    The attached script works that way if you place a copy of your project's DesignSeed.dgn in your active WorkSet. 

    HTH,

        Volker

    AutomaticallyExecutingGC.zip

       

    Answer Verified By: Tom Hawkins 

  • Thanks Volker, that gives me a bunch of things to think about.