Source code for ansys_optical_automation.scdm_core.base
import re
import clr
clr.AddReference("System.Collections")
clr.AddReference("System.Drawing")
from System.Collections.Generic import List # noqa: E402
from System.Drawing import Color # noqa: E402
[docs]class VersionError(KeyError):
"""
Raises API version error.
"""
[docs]class BaseSCDM(object):
def __init__(self, SpaceClaim, supported_versions=None):
"""
Base class that contains all commonly used objects. This class serves more as an abstract class.
It optionally validates that the user-specified API is supported.
Args:
SpaceClaim: SpaceClaim object
supported_versions (list/tuple): list of supported API versions
"""
api = getattr(SpaceClaim, "Api")
for obj in dir(api):
try:
api_version = re.match(r"V(\d+)$", obj).group(0)
if supported_versions:
if api_version not in supported_versions:
msg = "SpaceClaim API {} is not supported. ".format(api_version)
msg += "Use one of the following {}".format(", ".join(supported_versions))
raise VersionError(msg)
scdm_api = getattr(api, api_version)
break
except AttributeError:
continue
else:
raise AttributeError("No API version is found under the SpaceClaim object.")
self.Color = Color
self.List = List
self.scdm_api = scdm_api
self.AnchorCondition = scdm_api.AnchorCondition
self.BodySelection = scdm_api.Scripting.Selection.BodySelection
self.CloseDocument = scdm_api.Scripting.Helpers.DocumentHelper.CloseDocument
self.ColorHelper = scdm_api.Scripting.Helpers.ColorHelper
self.Command = scdm_api.Command
self.ComponentHelper = scdm_api.Scripting.Helpers.ComponentHelper
self.ComponentExtensions = scdm_api.Scripting.Extensions.ComponentExtensions
self.Copy = scdm_api.Scripting.Commands.Copy
self.CreateNewDocument = scdm_api.Scripting.Helpers.DocumentHelper.CreateNewDocument
self.Delete = scdm_api.Scripting.Commands.Delete
self.DesignBodyExtensions = scdm_api.Scripting.Extensions.DesignBodyExtensions
self.DocumentSave = scdm_api.Scripting.Commands.DocumentSave
self.DocumentInsert = scdm_api.Scripting.Commands.DocumentInsert
self.FixDuplicateFaces = scdm_api.Scripting.Commands.FixDuplicateFaces
self.GetActiveDocument = scdm_api.Scripting.Helpers.DocumentHelper.GetActiveDocument
self.GetOriginal = scdm_api.Scripting.Extensions.DocObjectExtensions.GetOriginal
self.GetRootPart = scdm_api.Scripting.Helpers.DocumentHelper.GetRootPart
self.IComponent = scdm_api.IComponent
self.ICoordinateAxis = scdm_api.ICoordinateAxis
self.ICoordinateSystem = scdm_api.ICoordinateSystem
self.IDesignBody = scdm_api.IDesignBody
self.IDesignMesh = scdm_api.IDesignMesh
self.IDesignCurve = scdm_api.IDesignCurve
self.IPart = scdm_api.IPart
self.Layers = scdm_api.Scripting.Commands.Layers
self.NamedSelection = scdm_api.Scripting.Commands.NamedSelection
self.Paste = scdm_api.Scripting.Commands.Paste
self.PartExtensions = scdm_api.Scripting.Extensions.PartExtensions
self.Selection = scdm_api.Scripting.Selection.Selection
self.SetName = scdm_api.Scripting.Helpers.ComponentHelper.SetName
self.StitchFaces = scdm_api.Scripting.Commands.StitchFaces
self.ViewHelper = scdm_api.Scripting.Helpers.ViewHelper
self.Window = scdm_api.Window
[docs] def convert_object_version(self, obj):
"""
Function to convert Speos returns from latest to used API version
Parameters
----------
obj : SpeosSelectedObject
Returns
-------
Object in used API version
"""
doc = self.Window.ActiveWindow.Document
res = self.scdm_api.Moniker[self.scdm_api.IDocObject].FromString(obj.Moniker.ToString()).Resolve(doc)
return res