--- a
+++ b/trunk/cforge/cforge/Package/CFORGE/Scripts/checkout-prj.py
@@ -0,0 +1,60 @@
+import sys, os
+import ui
+import pysvn
+import json
+from System.Net import WebClient
+
+base_url = "https://forge.codesys.com/rest"
+base_svn = "https://forge.codesys.com/svn/"
+
+# This is a cforge command (script file)
+# this will be run as ironpython script.
+# the filename of this script is automatically the corresponding cforge command 
+# with some magic functions you can easily integrate it nicely into cforge tool
+
+# cforge_usage: 
+# here you can return an array of all possible arguments and options that can 
+# be passed to this command script
+def cforge_usage():
+    help = [ 
+	    ["<path to CODESYS project>", "---"]
+    ]
+
+    return help
+
+def get_json(url):
+	web_client = WebClient()
+	r = web_client.DownloadData(url)
+	j = json.loads(bytes(r).decode('utf-8'))
+	return j
+
+	
+if len(sys.argv) <= 1:
+    print("Oh, there are no arguments. Perhaps you forgot something?")
+    sys.exit()
+
+args = sys.argv[1].split(" ")
+folder = ""
+if len(args) == 1:
+	folder = args[0].strip("/").split("/")[-1]
+
+# username, password and path are specified at the command line
+if len(sys.argv) >= 3:
+	config['user'] = sys.argv[2]
+	config['pass'] = sys.argv[3]
+	config['folder'] = sys.argv[4]
+else:
+	config = ui.Dialog("Checkout Project", Folder=True, Credentials=True, DefaultFolder=folder)
+
+# iterate over all tools of the project, and checkout all SVN repositories,
+# excluding the CODESYS folders
+if config != None:
+	tools = get_json(base_url + '/' + sys.argv[1])
+	for tool in tools['tools']:
+		if tool['name'] == 'svn':
+			details = get_json(base_url + tool['url'])
+			repo = tool['url'][1:-1].replace('/', ',')
+			url = base_svn + repo
+			print(url)
+			pysvn.svn_checkout_non_codesys(config['user'], config['pass'], url, os.path.join(config['folder'], repo))
+			print('\n')