Hide Table of Contents
SOLIDWORKS Electrical API 2024.0.0
Electrical API
Python Samples

Purpose

This document presents some samples of using API in Python.

Note
ew_application: application object previously created.

Create a new project

Create a project from specified template

def create_project_from_template(self):
"""
This method creates a new project from the Template.
:return: True if no error detected
"""
if self.ew_environment == None:
return False
#create new project from a template
error_code, ew_projectmanagerx = self.ew_environment.getEwProjectManager();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_projectmanagerx.newEwProject();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectX.setName("IEC-Test1");
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectX.insertFromTemplate("IEC");
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Open a project

Open a project from name

def open_project_by_name(self):
"""
This method open a project by this name.
:return: True if no error detected
"""
if self.ew_environment == None:
return False
error_code, ew_projectmanagerx = self.ew_environment.getEwProjectManager();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_projectmanagerx.findEwProjectByName('FooProject');
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectX.open(comtypes.gen.EwOpenProjectMode.kOpenForWrite);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Open a project from ID

def open_project_by_ID(self, lID):
"""
This method open a project by this ID.
:return: True if no error detected
"""
if self.ew_environment == None:
return False
error_code, ew_projectmanagerx = self.ew_environment.getEwProjectManager();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_projectmanagerx.findEwProjectByID(lID);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectX.open(comtypes.gen.EwOpenProjectMode.kOpenForWrite);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Open a project from id in the Application

def open_project_by_ID_in_application(self, lID):
"""
This method open a project by ID in the main Application.
:return: True if no error detected
"""
if self.ew_application == None:
return False
error_code, ew_projectmanagerx = self.ew_application.openEwProjectID(lID);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Open the current project from the Application

def open_current_project(self):
"""
This method open the current project.
:return: True if no error detected
"""
if self.ew_application == None:
return False
error_code, ew_projectX = self.ew_application.getEwProjectCurrent();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Open a project from file path

def open_project_by_filepath(self):
"""
This method open a project by the file path.
:return: True if no error detected
"""
if self.ew_environment == None:
return False
error_code, ew_projectmanagerx = self.ew_environment.getEwProjectManager();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_projectmanagerx.findProjectFromFilePath('FilePath');
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectX.open(comtypes.gen.EwOpenProjectMode.kOpenForWrite);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Open a project from name and lock it for the other user

def open_project_by_name_and_lock(self):
"""
This method open a project by this name and lock it for the other user.
:return: True if no error detected
"""
if self.ew_environment == None:
return False
error_code, ew_projectmanagerx = self.ew_environment.getEwProjectManager();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_projectmanagerx.findEwProjectByName('FooProject');
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectX.open(comtypes.gen.EwOpenProjectMode.kOpenForWriteDenyWrite);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Modify project properties

Note
ew_projectX: project object previously created.

Change some properties

def open_properties_project(self):
"""
This method modify properties of the project.
:return: True if no error detected
"""
if self.ew_projectX == None:
return False
error_code = self.ew_projectX.setName(sProjectName)
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = self.ew_projectX.setCustomerName("Ville de paris")
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = self.ew_projectX.setCustomerAddress1("Paris")
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = self.ew_projectX.setContractNumber("666")
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = self.ew_projectX.setUserData(0, "MyUserData0")
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = self.ew_projectX.setUserData(1, "MyUserData1")
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = self.ew_projectX.setTranslatedData(0, "FR", "Bonjour")
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = self.ew_projectX.setTranslatedData(0, "EN", "Hi")
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = self.ew_projectX.setTranslatedData(0, "DE", "Hallo")
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = self.ew_projectX.update()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Change the project language

def open_properties_language_project(self):
"""
This method modify the language properties of the project.
:return: True if no error detected
"""
if self.ew_projectX == None:
return False
error_code, ew_projectconfigurationx = self.ew_projectX.getEwProjectConfiguration()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
ew_projectconfigurationx.setEwProjectConfigValue(comtypes.gen.EwAPI.kCurrentCodeLg, "fr")
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
ew_projectconfigurationx.setEwProjectConfigValue(comtypes.gen.EwAPI.kCodeLg2, "en")
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Use project file

Note
ew_projectX: project object previously created.

Open a project file

To do that you must use the command EWOPEN command.

EWOPENFILE "D:\\ProgramData\\...\\Projects\\1216\\Drawings\\11319.ewg"

This command takes one parameter, the file path to open. To obtain this path use the getFilePath API from EwProjectFile object.

/* ew_project_file: the file to open. Project must be opened and must be the current one.*/
str_file_path = ew_project_file.getFilePath();
str_command = "EWOPEN " + str_file_path;
ew_application.runcommand(str_command);

Insert a symbol in a project file

def insert_symbol(self):
"""
This method insert symbol on a file.
:return: True if no error detected
"""
if self.ew_projectX == None:
return False
error_code, ew_project_component_manager = self.ew_projectX.getEwProjectComponentManager();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_project_component = ew_project_component_manager.newEwProjectComponent();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_project_component.setTag('ComponentMark');
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_project_component.insert();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_project_symbol = ew_project_file.newEwProjectSymbol();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_project_symbol.setEwSymbolName('TR-DI007');
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_project_symbol.setRotationAngle(90);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_project_symbol.setXPosition(150);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_project_symbol.setYPosition(100);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_project_symbol.setObjectID(ew_project_component.getID());
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_project_symbol.insert();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Some Process and Export on Project

Export report

Export report in Excel

def do_export_report_in(self):
"""
This method exports all reports.
:return: True if no error detected
"""
if self.ew_projectX == None:
return False
error_code, ew_project_export_reportX = self.ew_projectX.newEwProjectExportReport();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setTargetFolder('a TMP folder');
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setExportAllReports(FALSE);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setEwProjectDataExportType(comtypes.gen.EwAPI.EwProjectDataExportType.kProjectDataExportReport);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setEwFileExtension(comtypes.gen.EwAPI.EwFileExtension.kFileExtensionXLS);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setOneSheetByBreak(TRUE);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.doExcelExport();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Export specified report in Excel

def export_specified_report_in_excel(self):
"""
This method exports specified reports.
:return: True if no error detected
"""
if self.ew_projectX == None:
return False
error_code,ew_project_entity_3D_manager = self.ew_projectX.getEwProjectEntity3DManager();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setTargetFolder('a TMP folder');
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setExportAllReports(TRUE);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setEwProjectDataExportType(comtypes.gen.EwAPI.EwProjectDataExportType.kProjectDataExportReport);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setEwFileExtension(comtypes.gen.EwAPI.EwFileExtension.kFileExtensionXLS);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setAddCreatedFileToProject(TRUE);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.setOneSheetByBreak(TRUE);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_project_report_manager = ew_projectX.getEwProjectReportManager();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_project_report = ew_project_report_manager.find('Folio_Metric.xml');
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
array_ID = [];
array_ID[0] = ew_project_report.getID();
error_code, ew_project_report = ew_project_report_manager.find('CableGroupedByReference_Metric.xml');
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
array_ID[1] = ew_project_report.getID();
error_code, ew_projectX = ew_project_export_reportX.setEwProjectReportIDArray(array_ID);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code, ew_projectX = ew_project_export_reportX.doExcelExport();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Run Excel Automation

Note
ew_projectX: project object previously created.
def open__project_excel_automation(self):
"""
This method do an excel automation on the project.
:return: True if no error detected
"""
if self.ew_projectX == None:
return False
error_code, ew_projectexcelautomation = self.ew_projectX.newEwProjectExcelAutomation();
strlogfilepath = "E:\\test.log"
strxlsfilepath = "E:\\OriginDestinationExcelScript.xlsx"
error_code = ew_projectexcelautomation.setExcelFilePath(strxlsfilepath);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectexcelautomation.setGenerateLog(True);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectexcelautomation.setLogFilePath(strlogfilepath);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectexcelautomation.doExcelAutomation();
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Renumber

Note
ew_projectX: project object previously created.

Renumber the wires

def open_renumber_wires(self):
"""
This method renumber wires in the project.
:return: True if no error detected
"""
if self.ew_projectX == None:
return False
error_code, ew_projectnumberwires = self.ew_projectX.newEwProjectNumberWires()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectnumberwires.setActionOnManualNumber(True)
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectnumberwires.setResetPosition(False)
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectnumberwires.setSelectionType(comtypes.gen.EwAPI.kSelectionAll)
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectnumberwires.process(comtypes.gen.EwAPI.kReNumberWiresAction)
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Add Origin-Destination Arrow Automatically

def do_origin_destination_arrow_automatically(self):
"""
This method do origin destination arrow automatically in the project.
:return: True if no error detected
"""
if self.ew_projectX == None:
return False
error_code, ew_project_automatic_arrows = self.ew_projectX.newEwProjectAutomaticArrows()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_project_automatic_arrows.setActionOnManual(False)
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
ewErrorCode = ew_project_automatic_arrows.setSelectionType(comtypes.gen.EwAPI.kSelectionAll);
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_project_automatic_arrows.process(comtypes.gen.EwAPI.kAutoArrowActionAutoConnect)
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Renumber the components

def open_renumber_components(self):
"""
This method renumber components in the project.
:return: True if no error detected
"""
if self.ew_projectX == None:
return False
error_code, ew_projectnumbermarks = self.ew_projectX.newEwProjectNumberMarks()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectnumbermarks.setActionOnManualNumber(True)
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectnumbermarks.process(comtypes.gen.EwAPI.kReNumberMarksAction)
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True

Generate terminal strip

Note
ew_projectX: project object previously created.
def open_generate_terminal_strip(self):
"""
This method generate terminal strip in the project.
:return: True if no error detected
"""
if self.ew_projectX == None:
return False
error_code, ew_projectgeneratetsdrawingx = self.ew_projectX.newEwProjectGenerateTSDrawing()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
error_code = ew_projectgeneratetsdrawingx.generate()
if error_code != comtypes.gen.EwAPI.EW_NO_ERROR:
return False
return True


Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   SOLIDWORKS Electrical API: Python Samples
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:

x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2024 SP05

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.