When Ecotect is launched, it automatically creates a Dynamic Data Exchange server which allows the program to be accessed by remote applications. By accessing the DDE server, you can send commands to Ecotect as well as request information. Ecotect must always be running in the background for this to work. While DDE is older technology (in dotNet, it was replaced by "remoting"), it works quite well in this context.
A fine example of using DDE and Ecotect are uto's custom GH to Ecotect components
A special thanks to Thomas from uto for cluing me in on Ecotect's use of DDE!
WHAT you will need…
1. Ecotect Analysis software
2. A VB.NET or C# application (in Grasshopper, you can use the scripting components)
3. A DDE class library (VB.NET needs the binary dll referenced): http://ndde.codeplex.com/
To create a "client" connection to Ecotect's "server" you can use the following code.
- Ecotect needs to be running in the background for this code to work.
- Be sure the NDde.dll is referenced in your application so you can access it within VB.NET
EXECUTE A COMMAND
Imports System Imports NDde.Client Sub EcotectCommand() 'create an Ecotect command string. Dim ecotectCommand As String = "weather.load.all, <file location>" Try ' Create a client that connects to 'Ecotect'. Using client As ndde.Client.DdeClient = New ndde.Client.DdeClient("Ecotect", "execute") ' Connect to the server. client.Connect() ' Execute remote command in Ecotect client.Execute(ecotectCommand, 6000) End Using Catch e As Exception Print(e.message) End Try End Sub
Imports System Imports NDde.Client Sub EcotectRequest() 'create an Ecotect request string. Dim ecotectRequest As String = "get.node.pos 22 8" Try ' Create a client that connects to 'Ecotect'. Using client As ndde.Client.DdeClient = New ndde.Client.DdeClient("Ecotect", "request") ' Connect to the server. client.Connect() ' Request information from Ecotect client.request(ecotectRequest, 6000) End Using Catch e As Exception Print(e.message) End Try End Sub