This project is read-only.

File Directory Navigation (folders in italics)

  • GraphSynth 1.7
    • input (directory for seed graphs)
    • output (results saved here from search process)
    • rules (rules and rule sets saved here)
    • GraphSynthFiles (main code)
      • Application_UI_and_Search - This is the project (GraphSynth.csproj) that is the main .exe of GraphSynth. All other folders compile to dynamic libraries (*.DLL). Consider altering on the searchProcess.cs file, which includes the one function that is invoked from the "Run Search Process" function from the Design pull-down. Versions of this have been written to perform blind search, and best first search (both included here) as well as genetic algorithms and new tree search methods.
      • Resources (includes pictures, these help files, and the Netron Graphics Library)
      • bin, obj, and Properties (directories created by Visual Studio, the executable, GraphSynth.exe, and the settings file, GraphSynthSettings.config are found in bin\ elease\\)
    • Representation - includes grammarRule.cs, designGraph.cs, node.cs, arc.cs, etc. It is recommended that developers only alter inheritedGraphClasses.cs with details on how the node, arc, and designGraph classes are to be altered for the application.)
    • Generation - Includes RecognizeChooseApply.cs, randomChoose.cs, and randomChooseWithUndo.cs. One may wish to make more intelligent "Generation" methods here.
    • Evaluation - a placeholder for evaluation methods; includes EvaluateSwirls.cs. Place methods and classes here to measure the worth of design created through GraphSynth.
    • Guidance - a placeholder for guidance methods; includes the optimistic but useless GetToOptimum.cs. Developers are encouraged to write their own to be invoked from the aforementioned searchProcess.cs.
    • GraphLayout - includes a single class/file called graphLayout.cs which allows developers to create specific graph layout algorithms within GraphSynth (see file for more details). The folder entitled DefaultAlgorithms contains the six predefined algorithms.

Drop-Down Menu Navigation


  • New
    • Graph (Ctrl+N)
    • Grammar Rule (Ctrl+Shift+N)
    • Rule Set (Alt+N)
  • Open (Ctrl+O)
  • Save Active (Ctrl+S)
  • Close
    • Active Window (Ctrl+W)
    • All Open Graphs (Ctrl+Shift+W)
  • Print
    • Print Preview (Ctrl+P)
  • Exit (Alt+X)

Open a new window to create a new graph, rule, or ruleset (set of rules). In drawing a graph or rule, a right click will bring up a context-sensitve menu, and Ctrl+1, 2, 3, 4, or 5 will add different node shapes.

Open and save graphs, rules, or rulesets. "Active" refers to the active window in GraphSynth.

Close the active window, or all open graphs. This can be handy when running a long generation process.

Modify the settings to save time in GraphSynth.

A print command is useful to save the graph. It will only send to the default printer. Please set up in advance.


  • Force Update & Refresh
  • Cut (Ctrl+X)
  • Copy  (Ctrl+C)
  • Paste (Ctrl+V)
  • Delete (Del)
  • Select All (Ctrl+A)

  • adding nodes (not shown)
    • largeCircleNode (Ctrl+1)
    • medCircleNode (Ctrl+2)
    • smallCircleNode (Ctrl+3)
    • ovalNode (Ctrl+4)
    • roundtangleNode (Ctrl+5)
    • rectangleNode (Ctrl+6)
    • squareNode (Ctrl+7)

force update and refresh to tie display to xml data. Hopefully it is not necessary to do this manually, but here it is just in case.

Cut, Copy, Paste, Delete, Select All - edit functions like you''re used to.

Nodes can be added to graphs or rules by these helpful shortcuts. They can also be added by right-clicking and selecting them from the bottom of the pop-up menu.


  • Zoom
    • 10% to 400%
    • (Ctrl+Z - zoom in)
    • (Alt+Z - zoom out)
    • (Ctrl+Shift+Z
        - zoom to 100%)
  • Text (Ctrl+T to reset)
    • Hide (Ctrl+H)
    • Shrink Text (Ctrl+F)
    • Enlarge Text (Ctrl+G)
  • Graph Layout
    • Randomizer (Alt+1)
    • Force-Directed (Alt+2)
    • Fruchterman-Reingold Algorithm (Alt+3)
    • Cartesian Layout (Alt+4)
    • Balloon Tree (Alt+5)
    • Radial Tree (Alt+6)
    • Custom 1 Layout(Alt+7)
    • Custom 2 Layout(Alt+8)
    • Custom 3 Layout(Alt+9)
    • Undo Last Layout (Alt+0)
  • Windows
    • Cascade
    • Tile Horizontally
    • Tile Vertically

Set a zoom for the current graph or rule. Within a rule, click on either the left-hand-side or the right-hand-side to apply the zoom.

Node and arc names can busy up a graph. Quickly hide them or shrink them with these commands. Also when zoomed out, the enlarge text is useful. The three shortcuts are adjacent, so feel free to adjust randomly.

Here are three generic layout algorithms and (up to) three custom layout algorithms that you can write in the graphLayout.cs file. The actual names of the functions will be shown here.

Manage multiple docked windows with these handy windows layout methods.


  • Set Active as Seed (Alt+D)
  • Set Active as Rule Set #0 (Alt+0)
  • Set Active as Rule Set #1 (Alt+1)
  • ...
  • Set Active as Rule Set #9 (Alt+9)
  • Clear All Rule Sets and Seed


  • Run Search Process (Ctrl+Spacebar)
  • RecognizeUser ChooseApply (Ctrl+U)
  • RecognizeRandom ChooseApply (Ctrl+R)
  • #steps (for Random Choose)
Before a generation process can be initiated, we must specify the seed graph and the rulesets. This is best done by fixing the settings so that the seed and rulesets are loaded at the beginning of the program. But if this is not done, then we can use active windows in GraphSynth to set this up.

The seed can only be applied to a graph, and it is possible to set as many as 10 active rule sets. The number of items that appears depends on what put in "# of RuleSets" in settings. These can be changed dynamically. Finally, we can clear all the prescribed rulesets and seeds with this final command.

This simply invokes the custom search process that you is contained in searchProcess.cs.

To test the generation with a pop-up showing the list of option, call this function.

Invoking this will randomly call options until the process ends. Beware, in many cases, there is no end, unless no more rules are recognized or the cycle limit is reached ("Max # of Rules to Apply in the settings dialog). To invoke the random process for a fixed set of rule call, fill in values in the #steps box. Note: you need a limit for each rule set. Separate values with a space or comma. 


  • Help (F1)
  • About GraphSynth

The help menu item simply opens a browser to this series of pages (sorry, that''s all folks!)

Click on the "About GraphSynth" tab to see the splash and get to links to our site.

Last edited Feb 8, 2014 at 6:53 PM by mattica, version 1