This article covers how to use the SystemWeaver API in Python in Windows. The user needs basic knowledge of Python and a Python interpreter installed. This article is written and has been tested for Python 3.5.
Prerequisites
- The pythonnet package from https://github.com/pythonnet/pythonnet
- Familiarity with the system's meta model and data.
- You have read Guidelines for API Usage
- The SystemWeaver API files (contact your organization's SystemWeaver IT support to obtain the following ddl files or the Nuget package):
- RVFUtility.dll or RVFUtility64.dll (depending on platform target)
- SystemWeaverClientAPI.dll
- SystemWeaverClientAPI.XML
Installing the Pythonnet Package
Install the pythonnet package from https://github.com/pythonnet/pythonnet and run the following from a command prompt:
pip3 install pythonnet
Make sure that SystemWeaverClientAPI.dll and RVFUtility64.dll are located in the same directory as your python file.
Log in and Import API
In the first lines of your python file, use the following code to log in and import the API:
import clr clr.AddReference("SystemWeaverClientAPI") from SystemWeaverAPI import * from SystemWeaver.Common import *
Example
The following small example illustrates how you can log in to the test database and read data. You can follow the examples from Introduction to the SystemWeaver API in C# with only slight differences in the syntax.
try: SWConnection.Instance.LoginName = "student" SWConnection.Instance.Password = "student" SWConnection.Instance.ServerMachineName = "localhost" SWConnection.Instance.ServerPort = 1768 SWConnection.Instance.Login() if SWConnection.Instance.Connected: handle = SWHandleUtility.ToHandle("x0400000000000296") item = SWConnection.Instance.Broker.GetItem(handle) for part in item.GetParts("EXAC"): print("Component: %s \n" % part.Name) print(IswItem(IswPart(part).DefObj).HandleStr) except SWInvalidUsernameOrPasswordException: print("Invalid user or password\n") except Exception: print("Could not connect to server\n")
Network Authentication
To use Windows login id instead of LoginName and Password, you can use: SystemWeaverAPI.SWConnection.UseNetworkAuthentication=true if network authentication is available.