Introduction
This online reference guide documents the Electrical Application Programming Interface (API).
API Help can be downloaded to have it available locally. You have to reach index.html from downloaded package to launch it.
Every supported interface available in the API is documented; undocumented API interfaces and functions are not supported and should not be used. Obsolete APIs are not supported. SOLIDWORKS recommends that you use the most current version of the API. Obsolete APIs are not supported. We recommend that you use the most current version of the API.
Usage
Use of the API assumes that you are familiar with Java, Python, VBA, VB.NET, Visual C#, Visual C++ 6.0 or Visual C++/CLI.
- Note
- All of the sample code supplied is intended to demonstrate ways of using the API. No representations or warranties are made regarding these samples. Intellectual property rights of the samples remain with Dassault Systemes.
Get Application
Application must be started to get a valid instance, then you just need to call:
Sample in C++
EwAPI::IEwInteropFactoryXPtr iEwInteropFactoryXPtr;
iEwInteropFactoryXPtr.GetActiveObject(__uuidof(EwAPI::EwInteropFactoryX));
EwAPI::IEwApplicationXPtr iEwApplicationXPtr = nullptr;
if (iEwInteropFactoryXPtr != nullptr)
iEwApplicationXPtr = iEwInteropFactoryXPtr->getEwApplication("License Code(*)", &errorCode);
EwErrorCode
All errors codes for this API.
Definition: EnumDefinition.idl:24
@ EW_UNDEFINED_ERROR
Undefined error.
Definition: EnumDefinition.idl:27
Sample in C#
EwInteropFactoryX ewInteropFactory = (EwInteropFactoryX)Marshal.GetActiveObject"EwAPI.EwInteropFactoryX");
EwApplicationX ewApplicationX = null;
if(ewInteropFactory != null)
ewApplicationX = ewInteropFactory.getEwApplication("License Code(*)", out ewErrorCode);
Sample in Python
prog_id = 'EwAPI.EwInteropFactoryX'
import comtypes.gen.EwAPI as EwAPI
from comtypes.gen.EwAPI import *
try:
ew_interop_factory = comtypes.client.GetActiveObject(prog_id)
except:
print("Electrical is not started")
error_code, i_apix = ew_interop_factory.getEwAPI()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
print("fail ew_interop_factory.getEwAPI: ", error_code)
error_code, ew_application = ew_interop_factory.getEwApplication('License Code(*)')
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
print("fail ew_interop_factory.getEwApplication: ", error_code)
error_code, ew_environment = ew_application.getEwEnvironment()
ew_environment=comtypes.client.dynamic._Dispatch(ew_environment._comobj).QueryInterface(IEwEnvironmentX)
Sample in VB
Dim ewInteropFactory As EwAPI.ewInteropFactoryX
Dim ewApplication As EwAPI.ewApplicationX
Dim ewErrorCode As EwAPI.ewErrorCode
On Error GoTo Error_MayCauseAnError
ewInteropFactory = GetObject(, "EwAPI.EwInteropFactoryX.1")
'Get the application from the factory
ewApplicationX = ewInteropFactory.getEwApplication("License Code(*)", ewErrorCode)
Start Application in Background mode
Access the API without starting the application, then you just need to call:
Sample in C++
EwAPI::IEwInteropFactoryXPtr iEwInteropFactoryXPtr;
iEwInteropFactoryXPtr.CreateInstance(__uuidof(EwAPI::EwInteropFactoryX));
EwAPI::EwAPIX ewApi = iEwInteropFactoryXPtr->getEwAPI(&errorCode);
if (ewApi != nullptr)
errorCode = ewApi.initializeInBackground(0);
EwAPI::IEwApplicationXPtr iEwApplicationXPtr = nullptr;
if (ewApi != nullptr)
iEwApplicationXPtr = ewApi.getEwApplication("License Code(*)", &errorCode);
Sample in C#
EwInteropFactoryX ewInteropFactory = new EwInteropFactoryX();
EwAPIX ewApi = ewInteropFactory.getEwAPI(out ewErrorCode);
if (ewApi != null)
ewErrorCode = ewApi.initializeInBackground(0);
EwApplicationX ewApplicationX = null;
if (ewApi != null)
ewApplicationX = ewAPI.getEwApplication("License Code(*)", out ewErrorCode);
Sample in Python
prog_id = 'EwAPI.EwInteropFactoryX'
import comtypes.gen.EwAPI as EwAPI
from comtypes.gen.EwAPI import *
ew_interop_factory = comtypes.client.CreateObject(prog_id)
error_code, i_apix = ew_interop_factory.getEwAPI()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
print("fail ew_interop_factory.getEwAPI: ", error_code)
error_code = ew_API.initializeInBackground(0);
error_code, ew_application = ew_interop_factory.getEwApplication('License Code(*)')
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
print("fail ew_interop_factory.getEwApplication: ", error_code)
error_code, ew_environment = ew_application.getEwEnvironment();
Sample in VB
Dim ewInteropFactory As New EwAPI.ewInteropFactoryX
Dim ewAPI As EwAPI.ewAPIX
Dim ewApplication As EwAPI.ewApplicationX
Dim ewErrorCode As EwAPI.ewErrorCode
On Error GoTo Error_MayCauseAnError
'Get the EwAPI from the factory
ewAPI = ewInteropFactory.getEwAPI(ewErrorCode)
'Initialise the EwApi in Background mode
ewErrorCode = ewAPI.initializeInBackground(0)
'Get the application from the EwAPI
ewApplication = ewAPI.getEwApplication("License Code(*)", ewErrorCode)
And after that?
After you should:
All start samples
All Samples in C++
int main ()
{
getApplication();
return 0;
}
void getApplication()
{
EwAPI::IEwInteropFactoryXPtr iEwInteropFactoryXPtr;
iEwInteropFactoryXPtr.GetActiveObject(__uuidof(EwAPI::EwInteropFactoryX));
EwAPI::IEwApplicationXPtr iEwApplicationXPtr = nullptr;
if (iEwInteropFactoryXPtr != nullptr)
iEwApplicationXPtr = iEwInteropFactoryXPtr->getEwApplication("License Code(*)", &errorCode);
}
void startApplicationInBackground()
{
EwAPI::IEwInteropFactoryXPtr iEwInteropFactoryXPtr;
iEwInteropFactoryXPtr.CreateInstance(__uuidof(EwAPI::EwInteropFactoryX));
EwAPI::EwAPIX ewApi = iEwInteropFactoryXPtr->getEwAPI(&errorCode);
if (ewApi != nullptr)
errorCode = ewApi.initializeInBackground(0);
EwAPI::IEwApplicationXPtr iEwApplicationXPtr = nullptr;
if (ewApi != nullptr)
iEwApplicationXPtr = ewApi.getEwApplication("License Code(*)", &errorCode);
}
All Samples in C#
using EwAPI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
static void getApplication()
{
EwInteropFactoryX ewInteropFactory = (EwInteropFactoryX)Marshal.GetActiveObject"EwAPI.EwInteropFactoryX");
EwApplicationX ewApplicationX = null;
if(ewInteropFactory != null)
ewApplicationX = ewInteropFactory.getEwApplication("License Code(*)", out ewErrorCode);
}
static void startApplicationInBackground()
{
EwInteropFactoryX ewInteropFactory = new EwInteropFactoryX();
EwAPIX ewApi = ewInteropFactory.getEwAPI(out ewErrorCode);
if (ewApi != null)
ewErrorCode = ewApi.initializeInBackground(0);
EwApplicationX ewApplicationX = null;
if (ewApi != null)
ewApplicationX = ewAPI.getEwApplication("License Code(*)", out ewErrorCode);
}
}
}
All Samples in Python
import comtypes.client
import comtypes
import inspect
lic_code = 'EWX1170910153590'
//! [Py_Get_Application]
prog_id = 'EwAPI.EwInteropFactoryX'
import comtypes.gen.EwAPI as EwAPI
from comtypes.gen.EwAPI import *
try:
ew_interop_factory = comtypes.client.GetActiveObject(prog_id)
except:
print("Electrical is not started")
error_code, i_apix = ew_interop_factory.getEwAPI()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
print("fail ew_interop_factory.getEwAPI: ", error_code)
error_code, ew_application = ew_interop_factory.getEwApplication('License Code(*)')
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
print("fail ew_interop_factory.getEwApplication: ", error_code)
error_code, ew_environment = ew_application.getEwEnvironment()
ew_environment=comtypes.client.dynamic._Dispatch(ew_environment._comobj).QueryInterface(IEwEnvironmentX)
//! [Py_Get_Application]
//! [Py_Get_Application_BackgroundMode]
prog_id = 'EwAPI.EwInteropFactoryX'
import comtypes.gen.EwAPI as EwAPI
from comtypes.gen.EwAPI import *
ew_interop_factory = comtypes.client.CreateObject(prog_id)
error_code, i_apix = ew_interop_factory.getEwAPI()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
print("fail ew_interop_factory.getEwAPI: ", error_code)
error_code = ew_API.initializeInBackground(0);
error_code, ew_application = ew_interop_factory.getEwApplication('License Code(*)')
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
print("fail ew_interop_factory.getEwApplication: ", error_code)
error_code, ew_environment = ew_application.getEwEnvironment();
//! [Py_Get_Application_BackgroundMode]
ew_part_manager = ew_environment.getEwManufacturerPartManager()[1]
ewManufacturerPart = ew_part_manager.newEwManufacturerPart()
print(help(ewManufacturerPart))
print(ewError)
All Samples in VB
Imports System
Imports System.IO
Imports System.Text
Public Class testvb
Private Sub getApplication()
//! [Vb_Get_Application]
Dim ewInteropFactory As EwAPI.ewInteropFactoryX
Dim ewApplication As EwAPI.ewApplicationX
Dim ewErrorCode As EwAPI.ewErrorCode
On Error GoTo Error_MayCauseAnError
ewInteropFactory = GetObject(, "EwAPI.EwInteropFactoryX.1")
'Get the application from the factory
ewApplicationX = ewInteropFactory.getEwApplication("License Code(*)", ewErrorCode)
//! [Vb_Get_Application]
End Sub
Private Sub startApplicationInBackground()
//! [Vb_Get_Application_BackgroundMode]
Dim ewInteropFactory As New EwAPI.ewInteropFactoryX
Dim ewAPI As EwAPI.ewAPIX
Dim ewApplication As EwAPI.ewApplicationX
Dim ewErrorCode As EwAPI.ewErrorCode
On Error GoTo Error_MayCauseAnError
'Get the EwAPI from the factory
ewAPI = ewInteropFactory.getEwAPI(ewErrorCode)
'Initialise the EwApi in Background mode
ewErrorCode = ewAPI.initializeInBackground(0)
'Get the application from the EwAPI
ewApplication = ewAPI.getEwApplication("License Code(*)", ewErrorCode)
//! [Vb_Get_Application_BackgroundMode]
End Sub
Public Sub createNewProject(control As IRibbonControl)
//! [Vb_Create_New_Project]
Dim ewInteropFactory As New ewAPI.EwInteropFactoryX
Dim ewApplication As ewAPI.ewApplicationX
Dim ewEnvironment As ewAPI.EwEnvironmentX
Dim ewErrorCode As ewAPI.ewErrorCode
On Error GoTo Error_MayCauseAnError
Set ewInteropFactory = GetObject(, "ewAPI.EwInteropFactoryX")
'Get the application from the factory
Set ewApplication = ewInteropFactory.getEwApplication("License Code(*)", ewErrorCode)
'Get the folder containing templates
Set ewEnvironment = ewApplication.getEwEnvironment(ewErrorCode)
Dim strTemplateFolderPath As String
strTemplateFolderPath = ewEnvironment.getFolderPath(ewAPI.EwEnvironmentFolderPathValue.kFolderPathProjectTemplate, ewErrorCode)
Dim strTemplateName As String
strTemplateName = "IEC"
Dim strFilePath As String
strFilePath = strTemplateFolderPath
strFilePath = strFilePath + strTemplateName
strFilePath = strFilePath + ".proj.tewzip"
Dim fso, msg
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(strFilePath) = False) Then
Exit Sub
End If
' here we are calling the command to create a new project
' this command have two parameters: the template name and the language code
' if you don't pass those parameters you will be prompted to select them
Dim strCommand As String
strCommand = "ewNewProjectNoProperties "
strCommand = strCommand + strTemplateName
strCommand = strCommand + " EN"
ewErrorCode = ewApplication.runCommand(strCommand) '("ewNewProjectNoProperties IEC EN")
Set ewApplication = Nothing
Set ewEnvironment = Nothing
Set ewInteropFactory = Nothing
Exit_MayCauseAnError:
Exit Sub
Error_MayCauseAnError:
MsgBox "undefine error create new project", vbCritical, "Error"
' Resume execution with exit routine to exit function.
Resume Exit_MayCauseAnError
//! [Vb_Create_New_Project]
End Sub
Public Sub launchXlsAutomation(control As IRibbonControl)
//! [Vb_launchXlsAutomation]
Dim ewInteropFactory As New ewAPI.EwInteropFactoryX
Dim ewApplication As ewAPI.ewApplicationX
Dim ewEnvironment As ewAPI.EwEnvironmentX
Dim ewErrorCode As ewAPI.ewErrorCode
Dim ewProject As ewAPI.ewProjectX
On Error GoTo Error_MayCauseAnError
Set ewInteropFactory = GetObject(, "ewAPI.EwInteropFactoryX")
'Get the application from the factory
Set ewApplication = ewInteropFactory.getEwApplication("License Code(*)", ewErrorCode)
Set ewProject = ewApplication.getEwProjectCurrent(ewErrorCode)
If ewProject Is Nothing Then
'If ewErrorCode = EwAPI.ewErrorCode.EW_NO_ACTIVEPROJECT Then
MsgBox "You must create a new project before", vbCritical, "No Project"
Exit Sub
End If
If MsgBox("Do you want generate XLS file ?", vbYesNo + vbQuestion + vbDefaultButton2, "XLS Automation") = vbNo Then
Exit Sub
End If
Dim strCommand As String
strCommand = "ewXlsAutomation "
strCommand = strCommand + Workbooks(ThisWorkbook.Name).FullName
ewErrorCode = ewApplication.runCommand(strCommand)
Set ewApplication = Nothing
Set ewProject = Nothing
Set ewInteropFactory = Nothing
Exit_MayCauseAnError:
Exit Sub
Error_MayCauseAnError:
MsgBox "undefine error in XLS Automation", vbCritical, "Error"
' Resume execution with exit routine to exit function.
Resume Exit_MayCauseAnError
//! [Vb_launchXlsAutomation]
End Sub
End Class
- Note
- License Code(*): Contact your reseller to get your license code