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