diff --git a/doc/source/_static/omniverse_app_exts.png b/doc/source/_static/omniverse_app_exts.png index e01dfc79d03..a1eb6929900 100644 Binary files a/doc/source/_static/omniverse_app_exts.png and b/doc/source/_static/omniverse_app_exts.png differ diff --git a/doc/source/_static/omniverse_extension.png b/doc/source/_static/omniverse_extension.png index 3bf3c7d841a..0484da3231d 100644 Binary files a/doc/source/_static/omniverse_extension.png and b/doc/source/_static/omniverse_extension.png differ diff --git a/doc/source/user_guide/omniverse_info.rst b/doc/source/user_guide/omniverse_info.rst index 1fecbacaff5..e3ab62a1dad 100644 --- a/doc/source/user_guide/omniverse_info.rst +++ b/doc/source/user_guide/omniverse_info.rst @@ -11,8 +11,8 @@ or later. The API is available through a PyEnSight session instance, from EnSight Python directly as (ensight.utils.omniverse for 2025 R1 and later) and -from within Omniverse applications via the ansys.geometry.service and -ansys.geometry.serviceui kit extensions. +from within Omniverse applications via the ansys.tools.omniverse.core and +ansys.tools.omniverse.dsgui kit extensions. The Python API is defined here: :class:`Omniverse`. @@ -107,7 +107,7 @@ an EnSight session or the GUI panel can be used to connect to a copy of EnSight that was launched with the ``-grpc_server {port}`` option specified. -The ``ansys.geometry.serviceui`` kit includes a GUI similar to the +The ``ansys.tools.omniverse.dsgui`` kit includes a GUI similar to the EnSight 2025 R1 user-defined tool. It allows one to select a target URI in Omniverse and the details of a gRPC connection to a running EnSight. For example, if one launches EnSight with @@ -117,7 +117,7 @@ scene to Omniverse. .. note:: - If the ``ansys.geometry.service`` and ``ansys.geometry.serviceui`` + If the ``ansys.tools.omniverse.core`` and ``ansys.tools.omniverse.dsgui`` do not show up in the Community extensions list in Omniverse, then it can be added to the ``Extension Search Paths`` list as: ``git://github.com/ansys/pyensight.git?branch=main&dir=exts``. @@ -137,7 +137,7 @@ From the Command Line ^^^^^^^^^^^^^^^^^^^^^ Omniverse kits can be run as command line tools and -the ``ansys.geometry.service`` is designed to support this mode +the ``ansys.tools.omniverse.core`` is designed to support this mode of operation as well. For this to work, one needs a copy of the pyensight wheel and the name of a ``kit`` executable. The pyensight wheel can be built by checking out the repo and building it. One can @@ -155,29 +155,29 @@ from the command line like this: .. code-block:: bat cd "C:\Users\user1\AppData\Local\ov\pkg\create-2023.2.5" - .\kit.bat --ext-folder "D:\repos\pyensight\src\ansys\pyensight\core\exts" --enable ansys.geometry.service --/exts/ansys.geometry.service/help=1 + .\kit.bat --ext-folder "D:\repos\pyensight\src\ansys\pyensight\core\exts" --enable ansys.tools.omniverse.core --/exts/ansys.tools.omniverse.core/help=1 Will generate the following output in the logs: .. code-block:: - ANSYS Omniverse Geometry Service: ansys.geometry.service-0.8.5 - --/exts/ansys.geometry.service/help=1 + ANSYS Tools Omniverse Core:: ansys.tools.omniverse.core-0.1.0 + --/exts/ansys.tools.omniverse.core/help=1 Display this help. - --/exts/ansys.geometry.service/run=1 + --/exts/ansys.tools.omniverse.core/run=1 Run the server. - --/exts/ansys.geometry.service/omniUrl=URL + --/exts/ansys.tools.omniverse.core/omniUrl=URL Omniverse pathname. (default: omniverse://localhost/Users/test) - --/exts/ansys.geometry.service/dsgUrl=URL + --/exts/ansys.tools.omniverse.core/dsgUrl=URL Dynamic Scene Graph connection URL. (default: grpc://127.0.0.1:5234) - --/exts/ansys.geometry.service/securityCode=TOKEN + --/exts/ansys.tools.omniverse.core/securityCode=TOKEN Dynamic Scene Graph security token. (default: ) - --/exts/ansys.geometry.service/temporal=0|1 + --/exts/ansys.tools.omniverse.core/temporal=0|1 If non-zero, include all timeseteps in the scene. (default: False) - --/exts/ansys.geometry.service/vrmode=0|1 + --/exts/ansys.tools.omniverse.core/vrmode=0|1 If non-zero, do not include a camera in the scene. (default: False) - --/exts/ansys.geometry.service/normalizeGeometry=0|1 + --/exts/ansys.tools.omniverse.core/normalizeGeometry=0|1 If non-zero, remap the geometry to the domain [-1,-1,-1]-[1,1,1]. (default: False) @@ -186,7 +186,7 @@ from the command line. This version of the service will be run using the versio installed in the specified ``--ext-folder``. When run as above, the service will use the latest released of the ansys.pyensight.core wheel. It is important the the ``--ext-folder`` option point to the ``exts`` directory inside of the ``ansys\pyensight\core`` directories as this will -cause the kit to use the ``ansys.pyensight.core`` module from the directories above the kit +cause the kit to use the ``ansys.tools.omniverse.core`` module from the directories above the kit instead of the any version installed in the kit Python itself. diff --git a/exts/ansys.geometry.service/docs/CHANGELOG.md b/exts/ansys.geometry.service/docs/CHANGELOG.md deleted file mode 100644 index 12bd53edb44..00000000000 --- a/exts/ansys.geometry.service/docs/CHANGELOG.md +++ /dev/null @@ -1,14 +0,0 @@ -# Changelog - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - - -## [0.8.9] - 2024-07-25 -- Improved status feedback - -## [0.8.7] - 2024-07-12 -- Support for time varying data and temporal scaling - -## [0.8.4] - 2024-06-28 -- Initial kit version of ANSYS Geometry Service Server - diff --git a/exts/ansys.geometry.serviceui/docs/CHANGELOG.md b/exts/ansys.geometry.serviceui/docs/CHANGELOG.md deleted file mode 100644 index 12bd53edb44..00000000000 --- a/exts/ansys.geometry.serviceui/docs/CHANGELOG.md +++ /dev/null @@ -1,14 +0,0 @@ -# Changelog - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - - -## [0.8.9] - 2024-07-25 -- Improved status feedback - -## [0.8.7] - 2024-07-12 -- Support for time varying data and temporal scaling - -## [0.8.4] - 2024-06-28 -- Initial kit version of ANSYS Geometry Service Server - diff --git a/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/PYENSIGHT_VERSION b/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/PYENSIGHT_VERSION new file mode 100644 index 00000000000..14415e0f984 --- /dev/null +++ b/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/PYENSIGHT_VERSION @@ -0,0 +1 @@ +0.9.0-dev0 \ No newline at end of file diff --git a/exts/ansys.geometry.service/ansys/geometry/service/__init__.py b/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/__init__.py similarity index 100% rename from exts/ansys.geometry.service/ansys/geometry/service/__init__.py rename to exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/__init__.py diff --git a/exts/ansys.geometry.service/ansys/geometry/service/extension.py b/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/extension.py similarity index 79% rename from exts/ansys.geometry.service/ansys/geometry/service/extension.py rename to exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/extension.py index c413da925ac..537d3cf36d1 100644 --- a/exts/ansys.geometry.service/ansys/geometry/service/extension.py +++ b/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/extension.py @@ -20,34 +20,55 @@ build of ansys-pyensight-core. If the appropriate environmental variables are set, a pip install from another repository can be forced. """ -extra_args = [] -if "ANSYS_PYPI_INDEX_URL" in os.environ: - extra_args.append(os.environ["ANSYS_PYPI_INDEX_URL"]) +pyensight_version_file = os.path.join(os.path.dirname(__file__), "PYENSIGHT_VERSION") +pyensight_version = None +with open(pyensight_version_file, "r") as version_file: + pyensight_version = str(version_file.read()).strip() -if os.environ.get("ANSYS_PYPI_REINSTALL", "") == "1": - extra_args.extend(["--upgrade", "--no-deps", "--no-cache-dir", "--force-reinstall", "--pre"]) +version = f"{pyensight_version}" if pyensight_version else None - logging.warning("ansys.geometry.server - Forced reinstall ansys-pyensight-core") - omni.kit.pipapi.install("ansys-pyensight-core", extra_args=extra_args) +extra_args = [] +if "dev0" in version and "ANSYS_PYPI_INDEX_URL" in os.environ: + # Get PyEnSight from the private PyPi repo - dev environment + extra_args.append(str(os.environ["ANSYS_PYPI_INDEX_URL"])) + extra_args.append("--pre") +if os.environ.get("ANSYS_PYPI_REINSTALL", "") == "1": + package_name = "ansys-pyensight-core" + + # Add possibility of installing local wheels + if os.environ.get("ANSYS_PYENSIGHT_LOCAL_WHEEL"): + package_name = os.environ.get("ANSYS_PYENSIGHT_LOCAL_WHEEL") + + extra_args.extend( + [ + "--upgrade", + "--no-cache-dir", + "--force-reinstall", + ] + ) + + logging.warning("ansys.tools.omniverse.server - Forced reinstall ansys-pyensight-core") + # Add ignore cache attribute when reinstalling so that you can switch between dev and released versions if needed + omni.kit.pipapi.install(package_name, extra_args=extra_args, version=version, ignore_cache=True) try: # Checking to see if we need to install the module import ansys.pyensight.core import ansys.pyensight.core.utils.dsg_server as tmp_dsg_server # noqa: F401 import ansys.pyensight.core.utils.omniverse_dsg_server as tmp_ov_dsg_server # noqa: F401 except ModuleNotFoundError: - logging.warning("ansys.geometry.server - Installing ansys-pyensight-core") - omni.kit.pipapi.install("ansys-pyensight-core", extra_args=extra_args) + logging.warning("ansys.tools.omniverse.server - Installing ansys-pyensight-core") + omni.kit.pipapi.install("ansys-pyensight-core", extra_args=extra_args, version=version) """ If we have a local copy of the module, the above installed the correct dependencies, but we want to use the local copy. Do this by prefixing the path and (re)load the modules. The pyensight wheel includes the following for this file: -ansys\pyensight\core\exts\ansys.geometry.service\ansys\geometry\service\extension.py +ansys\pyensight\core\exts\ansys.tools.omniverse.core\ansys\tools\omniverse\core\extension.py """ kit_dir = __file__ -for _ in range(5): +for _ in range(6): kit_dir = os.path.dirname(kit_dir) """ At this point, the name should be: {something}\ansys\pyensight\core\exts @@ -70,11 +91,19 @@ # force a reload if we changed the path or had a partial failure that lead # to a pipapi install. -_ = reload(ansys.pyensight.core) +try: + _ = reload(ansys.pyensight.core) +except Exception: + pass + +import ansys.pyensight.core.utils # noqa: F811, E402 + _ = reload(ansys.pyensight.core.utils) + import ansys.pyensight.core.utils.dsg_server as dsg_server # noqa: E402 _ = reload(ansys.pyensight.core.utils.dsg_server) + import ansys.pyensight.core.utils.omniverse_dsg_server as ov_dsg_server # noqa: E402 _ = reload(ansys.pyensight.core.utils.omniverse_dsg_server) @@ -87,7 +116,7 @@ def find_kit_filename() -> Optional[str]: Use a combination of the current omniverse application and the information in the local .nvidia-omniverse/config/omniverse.toml file to come up with the pathname of a kit executable suitable for hosting another copy of the - ansys.geometry.server kit. + ansys.tools.omniverse.server kit. Returns ------- @@ -128,7 +157,7 @@ def find_kit_filename() -> Optional[str]: return None -class AnsysGeometryServiceServerExtension(omni.ext.IExt): +class AnsysToolsOmniverseCoreServerExtension(omni.ext.IExt): """ This class is an Omniverse kit. The kit is capable of creating a connection to an Ansys Distributed Scene Graph service and pushing @@ -160,6 +189,8 @@ def __init__(self, *args, **kwargs) -> None: @property def pyensight_version(self) -> str: """The ansys.pyensight.core version""" + if version: + return version return ansys.pyensight.core.VERSION @property @@ -226,7 +257,7 @@ def time_scale(self, value: float) -> None: self._time_scale = value @classmethod - def get_instance(cls) -> Optional["AnsysGeometryServiceServerExtension"]: + def get_instance(cls) -> Optional["AnsysToolsOmniverseCoreServerExtension"]: return cls._service_instance @classmethod @@ -302,8 +333,8 @@ def on_startup(self, ext_id: str) -> None: The specific version of the kit. """ self._version = ext_id - self.info(f"ANSYS geometry service server startup: {self._version}") - AnsysGeometryServiceServerExtension._service_instance = self + self.info(f"ANSYS tools omniverse core server startup: {self._version}") + AnsysToolsOmniverseCoreServerExtension._service_instance = self if self._setting("help") is not None: self.help() elif self._setting("run") is not None: @@ -313,38 +344,38 @@ def on_shutdown(self) -> None: """ Called by Omniverse when the kit instance is shutting down. """ - self.info("ANSYS geometry service server shutdown") + self.info("ANSYS tools omniverse core server shutdown") self.shutdown() - AnsysGeometryServiceServerExtension._service_instance = None + AnsysToolsOmniverseCoreServerExtension._service_instance = None def help(self) -> None: """ Send the CLI help output to logging. """ - self.warning(f"ANSYS Omniverse Geometry Service: {self._version}") - self.warning(" --/exts/ansys.geometry.service/help=1") + self.warning(f"ANSYS Tools Omniverse Core: {self._version}") + self.warning(" --/exts/ansys.tools.omniverse.core/help=1") self.warning(" Display this help.") - self.warning(" --/exts/ansys.geometry.service/run=1") + self.warning(" --/exts/ansys.tools.omniverse.core/run=1") self.warning(" Run the server.") - self.warning(" --/exts/ansys.geometry.service/omniUrl=URL") + self.warning(" --/exts/ansys.tools.omniverse.core/omniUrl=URL") self.warning(f" Omniverse pathname. (default: {self.omni_uri})") - self.warning(" --/exts/ansys.geometry.service/dsgUrl=URL") + self.warning(" --/exts/ansys.tools.omniverse.core/dsgUrl=URL") self.warning(f" Dynamic Scene Graph connection URL. (default: {self.dsg_uri})") - self.warning(" --/exts/ansys.geometry.service/securityCode=TOKEN") + self.warning(" --/exts/ansys.tools.omniverse.core/securityCode=TOKEN") self.warning(f" Dynamic Scene Graph security token. (default: {self.security_token})") - self.warning(" --/exts/ansys.geometry.service/temporal=0|1") + self.warning(" --/exts/ansys.tools.omniverse.core/temporal=0|1") self.warning( f" If non-zero, include all timeseteps in the scene. (default: {self.temporal})" ) - self.warning(" --/exts/ansys.geometry.service/vrmode=0|1") + self.warning(" --/exts/ansys.tools.omniverse.core/vrmode=0|1") self.warning( f" If non-zero, do not include a camera in the scene. (default: {self.vrmode})" ) - self.warning(" --/exts/ansys.geometry.service/normalizeGeometry=0|1") + self.warning(" --/exts/ansys.tools.omniverse.core/normalizeGeometry=0|1") self.warning( f" If non-zero, remap the geometry to the domain [-1,-1,-1]-[1,1,1]. (default: {self.normalize_geometry})" ) - self.warning(" --/exts/ansys.geometry.service/timeScale=FLOAT") + self.warning(" --/exts/ansys.tools.omniverse.core/timeScale=FLOAT") self.warning( f" Multiply all DSG time values by this value. (default: {self.time_scale})" ) @@ -397,20 +428,20 @@ def launch_server(self) -> None: for _ in range(5): kit_dir = os.path.dirname(kit_dir) cmd.extend(["--ext-folder", kit_dir]) - cmd.extend(["--enable", "ansys.geometry.service"]) + cmd.extend(["--enable", "ansys.tools.omniverse.core"]) if self.security_token: - cmd.append(f'--/exts/ansys.geometry.service/securityCode="{self.security_token}"') + cmd.append(f'--/exts/ansys.tools.omniverse.core/securityCode="{self.security_token}"') if self.temporal: - cmd.append("--/exts/ansys.geometry.service/temporal=1") + cmd.append("--/exts/ansys.tools.omniverse.core/temporal=1") if self.vrmode: - cmd.append("--/exts/ansys.geometry.service/vrmode=1") + cmd.append("--/exts/ansys.tools.omniverse.core/vrmode=1") if self.normalize_geometry: - cmd.append("--/exts/ansys.geometry.service/normalizeGeometry=1") + cmd.append("--/exts/ansys.tools.omniverse.core/normalizeGeometry=1") if self.time_scale != 1.0: - cmd.append(f"--/exts/ansys.geometry.service/timeScale={self.time_scale}") - cmd.append(f"--/exts/ansys.geometry.service/omniUrl={self.omni_uri}") - cmd.append(f"--/exts/ansys.geometry.service/dsgUrl={self.dsg_uri}") - cmd.append("--/exts/ansys.geometry.service/run=1") + cmd.append(f"--/exts/ansys.tools.omniverse.core/timeScale={self.time_scale}") + cmd.append(f"--/exts/ansys.tools.omniverse.core/omniUrl={self.omni_uri}") + cmd.append(f"--/exts/ansys.tools.omniverse.core/dsgUrl={self.dsg_uri}") + cmd.append("--/exts/ansys.tools.omniverse.core/run=1") env_vars = os.environ.copy() # we are launching the kit from an Omniverse app. In this case, we # inform the kit instance of: diff --git a/exts/ansys.geometry.service/config/extension.toml b/exts/ansys.tools.omniverse.core/config/extension.toml similarity index 70% rename from exts/ansys.geometry.service/config/extension.toml rename to exts/ansys.tools.omniverse.core/config/extension.toml index d2c8b9547f9..3993e417cf9 100644 --- a/exts/ansys.geometry.service/config/extension.toml +++ b/exts/ansys.tools.omniverse.core/config/extension.toml @@ -1,19 +1,19 @@ [package] # Semantic Versioning is used: https://semver.org/ -version = "0.9.0-dev0" +version = "0.1.0" # Lists people or organizations that are considered the "authors" of the package. authors = ["ANSYS"] # The title and description fields are primarily for displaying extension info in UI -title = "ANSYS Omniverse Geometry Service Server" +title = "ANSYS Tools Omniverse Core Server" description = "A geometry synchronization service that enables export of geometry scenes from ANSYS products to Omniverse." # Path (relative to the root) or content of readme markdown file for UI. readme = "docs/README.md" # URL of the extension source repository. -repository = "https://github.com/ansys/pyensight" +repository = "https://github.com/ansys-internal/ansys-tools-omniverse" # One of categories for UI. category = "simulation" @@ -38,9 +38,9 @@ icon = "data/icon.png" "omni.client" = {} "omni.usd" = {} -# Main python module this extension provides, it will be publicly available as "import ansys.geometry.service". +# Main python module this extension provides, it will be publicly available as "import ansys.tools.omniverse.core". [[python.module]] -name = "ansys.geometry.service" +name = "ansys.tools.omniverse.core" [[test]] # Extra dependencies only to be used during test run @@ -50,10 +50,10 @@ dependencies = [ [settings] # CLI setting defaults (note: "help" and "run" are also supported) -exts."ansys.geometry.service".dsgUrl = "grpc://127.0.0.1:5234" -exts."ansys.geometry.service".omniUrl = "omniverse://localhost/Users/test" -exts."ansys.geometry.service".securityCode = "" -exts."ansys.geometry.service".temporal = "0" -exts."ansys.geometry.service".vrmode = "0" -exts."ansys.geometry.service".normalizeGeometry = "0" -exts."ansys.geometry.service".timeScale = "1.0" +exts."ansys.tools.omniverse.core".dsgUrl = "grpc://127.0.0.1:5234" +exts."ansys.tools.omniverse.core".omniUrl = "omniverse://localhost/Users/test" +exts."ansys.tools.omniverse.core".securityCode = "" +exts."ansys.tools.omniverse.core".temporal = "0" +exts."ansys.tools.omniverse.core".vrmode = "0" +exts."ansys.tools.omniverse.core".normalizeGeometry = "0" +exts."ansys.tools.omniverse.core".timeScale = "1.0" diff --git a/exts/ansys.geometry.service/data/icon.png b/exts/ansys.tools.omniverse.core/data/icon.png similarity index 100% rename from exts/ansys.geometry.service/data/icon.png rename to exts/ansys.tools.omniverse.core/data/icon.png diff --git a/exts/ansys.geometry.service/data/preview.png b/exts/ansys.tools.omniverse.core/data/preview.png similarity index 100% rename from exts/ansys.geometry.service/data/preview.png rename to exts/ansys.tools.omniverse.core/data/preview.png diff --git a/exts/ansys.tools.omniverse.core/docs/CHANGELOG.md b/exts/ansys.tools.omniverse.core/docs/CHANGELOG.md new file mode 100644 index 00000000000..bb42ca86913 --- /dev/null +++ b/exts/ansys.tools.omniverse.core/docs/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + + +## [0.1.0] - 2024-07-30 +- First version + diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.service/docs/README.md b/exts/ansys.tools.omniverse.core/docs/README.md similarity index 73% rename from src/ansys/pyensight/core/exts/ansys.geometry.service/docs/README.md rename to exts/ansys.tools.omniverse.core/docs/README.md index e8edd2b55e2..ce990a0c9aa 100644 --- a/src/ansys/pyensight/core/exts/ansys.geometry.service/docs/README.md +++ b/exts/ansys.tools.omniverse.core/docs/README.md @@ -1,10 +1,10 @@ -# ANSYS Omniverse Geometry Service [ansys.geometry.service] +# ANSYS Tools Omniverse Core [ansys.tools.omniverse.core] The Omniverse extension provides a dynamic connection between an ANSYS geometry source (e.g. ANSYS EnSight) and an Omniverse instance. The connection runs as a standalone service capable of supporting scripted execution utilizing just a kit CLI. It can also be launched via -PyEnSight and via a simple GUI provided by the [ansys.geometry.serviceui] +PyEnSight and via a simple GUI provided by the [ansys.tools.omniverse.dsgui] kit extension. For more details on this extension see: diff --git a/exts/ansys.geometry.service/docs/index.rst b/exts/ansys.tools.omniverse.core/docs/index.rst similarity index 73% rename from exts/ansys.geometry.service/docs/index.rst rename to exts/ansys.tools.omniverse.core/docs/index.rst index e1090f915c9..e98621c056a 100644 --- a/exts/ansys.geometry.service/docs/index.rst +++ b/exts/ansys.tools.omniverse.core/docs/index.rst @@ -1,4 +1,4 @@ -ansys.geometry.service +ansys.tools.omniverse.core ###################### @@ -9,7 +9,7 @@ ansys.geometry.service CHANGELOG -.. automodule::"ansys.geometry.service" +.. automodule::"ansys.tools.omniverse.core" :platform: Windows-x86_64, Linux-x86_64 :members: :undoc-members: diff --git a/exts/ansys.geometry.serviceui/ansys/geometry/serviceui/__init__.py b/exts/ansys.tools.omniverse.dsgui/ansys/tools/omniverse/dsgui/__init__.py similarity index 100% rename from exts/ansys.geometry.serviceui/ansys/geometry/serviceui/__init__.py rename to exts/ansys.tools.omniverse.dsgui/ansys/tools/omniverse/dsgui/__init__.py diff --git a/exts/ansys.geometry.serviceui/ansys/geometry/serviceui/extension.py b/exts/ansys.tools.omniverse.dsgui/ansys/tools/omniverse/dsgui/extension.py similarity index 82% rename from exts/ansys.geometry.serviceui/ansys/geometry/serviceui/extension.py rename to exts/ansys.tools.omniverse.dsgui/ansys/tools/omniverse/dsgui/extension.py index 51a8659a50c..36abb14aace 100644 --- a/exts/ansys.geometry.serviceui/ansys/geometry/serviceui/extension.py +++ b/exts/ansys.tools.omniverse.dsgui/ansys/tools/omniverse/dsgui/extension.py @@ -4,12 +4,12 @@ from typing import Any, Optional from urllib.parse import urlparse -import ansys.geometry.service +import ansys.tools.omniverse.core import omni.ext import omni.ui as ui -class AnsysGeometryServiceUIExtension(omni.ext.IExt): +class AnsysToolsOmniverseDSGUIExtension(omni.ext.IExt): def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) self._window: Any = None @@ -28,8 +28,8 @@ def __init__(self, *args, **kwargs) -> None: self._connected = False @property - def service(self) -> Optional["AnsysGeometryServiceUIExtension"]: - return ansys.geometry.service.AnsysGeometryServiceServerExtension.get_instance() + def service(self) -> Optional["AnsysToolsOmniverseDSGUIExtension"]: + return ansys.tools.omniverse.core.AnsysToolsOmniverseCoreServerExtension.get_instance() def info(self, text: str) -> None: self._logger.info(text) @@ -89,7 +89,7 @@ def stop_server(self) -> None: def connect_cb(self) -> None: if self.service is None: - self.error("Unable to find ansys.geometry.service instance") + self.error("Unable to find ansys.tools.omniverse.core instance") return if self._connected: self.stop_server() @@ -109,9 +109,9 @@ def update_cb(self) -> None: self._grpc.command(cmd, do_eval=False) def on_startup(self, ext_id: str) -> None: - self.info(f"ANSYS geometry service GUI startup: {ext_id}") + self.info(f"ANSYS tools omniverse DSG GUI startup: {ext_id}") if self.service is None: - self.error("Unable to find ansys.geometry.service instance") + self.error("Unable to find ansys.tools.omniverse.core instance") self.build_ui() self._update_callback() @@ -144,23 +144,35 @@ def update_ui(self) -> None: self._omni_uri_w.enabled = not self._connected def build_ui(self) -> None: - self._window = ui.Window(f"ANSYS Geometry Service ({self.service.pyensight_version})") + self._window = ui.Window(f"ANSYS Tools Omniverse DSG ({self.service.pyensight_version})") with self._window.frame: with ui.VStack(height=0, spacing=5): self._label_w = ui.Label("No connected DSG server") with ui.HStack(spacing=5): - ui.Label("DSG Service URI:", alignment=ui.Alignment.RIGHT_CENTER, width=0) + ui.Label( + "DSG Service URI:", + alignment=ui.Alignment.RIGHT_CENTER, + width=0, + ) self._dsg_uri_w = ui.StringField() self._dsg_uri_w.model.as_string = self.service.dsg_uri with ui.HStack(spacing=5): - ui.Label("DSG security code:", alignment=ui.Alignment.RIGHT_CENTER, width=0) + ui.Label( + "DSG security code:", + alignment=ui.Alignment.RIGHT_CENTER, + width=0, + ) self._dsg_token_w = ui.StringField(password_mode=True) self._dsg_token_w.model.as_string = self.service.security_token with ui.HStack(spacing=5): - ui.Label("Omniverse URI:", alignment=ui.Alignment.RIGHT_CENTER, width=0) + ui.Label( + "Omniverse URI:", + alignment=ui.Alignment.RIGHT_CENTER, + width=0, + ) self._omni_uri_w = ui.StringField() self._omni_uri_w.model.as_string = self.service.omni_uri @@ -182,7 +194,9 @@ def build_ui(self) -> None: with ui.HStack(spacing=5): ui.Label( - "Temporal scaling factor:", alignment=ui.Alignment.RIGHT_CENTER, width=0 + "Temporal scaling factor:", + alignment=ui.Alignment.RIGHT_CENTER, + width=0, ) self._time_scale_w = ui.FloatField() self._time_scale_w.model.as_float = self.service.time_scale @@ -192,7 +206,7 @@ def build_ui(self) -> None: self._update_w = ui.Button("Request Update", clicked_fn=self.update_cb) def on_shutdown(self) -> None: - self.info("ANSYS geometry service shutdown") + self.info("ANSYS Tools Omniverse DSG shutdown") self.stop_server() self._window = None self._label_w = None diff --git a/exts/ansys.geometry.serviceui/config/extension.toml b/exts/ansys.tools.omniverse.dsgui/config/extension.toml similarity index 83% rename from exts/ansys.geometry.serviceui/config/extension.toml rename to exts/ansys.tools.omniverse.dsgui/config/extension.toml index b96cfb35c96..ccc03a6f401 100644 --- a/exts/ansys.geometry.serviceui/config/extension.toml +++ b/exts/ansys.tools.omniverse.dsgui/config/extension.toml @@ -1,19 +1,19 @@ [package] # Semantic Versioning is used: https://semver.org/ -version = "0.9.0-dev0" +version = "0.1.0" # Lists people or organizations that are considered the "authors" of the package. authors = ["ANSYS"] # The title and description fields are primarily for displaying extension info in UI -title = "ANSYS Omniverse Geometry Service GUI" +title = "ANSYS Tools Omniverse DSG GUI" description = "A geometry synchronization service that enables export of geometry scenes from ANSYS products to Omniverse." # Path (relative to the root) or content of readme markdown file for UI. readme = "docs/README.md" # URL of the extension source repository. -repository = "https://github.com/ansys/pyensight" +repository = "https://github.com/ansys-internal/ansys-tools-omniverse" # One of categories for UI. category = "simulation" @@ -35,11 +35,11 @@ icon = "data/icon.png" # Use omni.ui to build simple UI [dependencies] "omni.kit.uiapp" = {} -"ansys.geometry.service" = {} +"ansys.tools.omniverse.core" = {} -# Main python module this extension provides, it will be publicly available as "import ansys.geometry.serviceui". +# Main python module this extension provides, it will be publicly available as "import ansys.tools.omniverse.dsgui". [[python.module]] -name = "ansys.geometry.serviceui" +name = "ansys.tools.omniverse.dsgui" [[test]] # Extra dependencies only to be used during test run diff --git a/exts/ansys.geometry.serviceui/data/icon.png b/exts/ansys.tools.omniverse.dsgui/data/icon.png similarity index 100% rename from exts/ansys.geometry.serviceui/data/icon.png rename to exts/ansys.tools.omniverse.dsgui/data/icon.png diff --git a/exts/ansys.geometry.serviceui/data/preview.png b/exts/ansys.tools.omniverse.dsgui/data/preview.png similarity index 100% rename from exts/ansys.geometry.serviceui/data/preview.png rename to exts/ansys.tools.omniverse.dsgui/data/preview.png diff --git a/exts/ansys.tools.omniverse.dsgui/docs/CHANGELOG.md b/exts/ansys.tools.omniverse.dsgui/docs/CHANGELOG.md new file mode 100644 index 00000000000..b77439c1344 --- /dev/null +++ b/exts/ansys.tools.omniverse.dsgui/docs/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + + +## [0.1.0] - 2024-07-30 +- First version diff --git a/exts/ansys.geometry.serviceui/docs/README.md b/exts/ansys.tools.omniverse.dsgui/docs/README.md similarity index 72% rename from exts/ansys.geometry.serviceui/docs/README.md rename to exts/ansys.tools.omniverse.dsgui/docs/README.md index 81d1512d8bc..c5a6f62fa94 100644 --- a/exts/ansys.geometry.serviceui/docs/README.md +++ b/exts/ansys.tools.omniverse.dsgui/docs/README.md @@ -1,6 +1,6 @@ -# ANSYS Omniverse Geometry Service GUI [ansys.geometry.serviceui] +# ANSYS Tools Omniverse DSG GUI [ansys.tools.omniverse.dsgui] -This Omniverse extension is a UI interface to the [ansys.geometry.service] +This Omniverse extension is a UI interface to the [ansys.tools.omniverse.core] kit extension. It allows an Omniverse application user to connect to a running copy of ANSYS EnSight or other application that supports the Dynamic Scene Graph gRPC protocol. The GUI allows for the remote scene diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/docs/index.rst b/exts/ansys.tools.omniverse.dsgui/docs/index.rst similarity index 72% rename from src/ansys/pyensight/core/exts/ansys.geometry.serviceui/docs/index.rst rename to exts/ansys.tools.omniverse.dsgui/docs/index.rst index ad1f12d3990..d2258522b7f 100644 --- a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/docs/index.rst +++ b/exts/ansys.tools.omniverse.dsgui/docs/index.rst @@ -1,4 +1,4 @@ -ansys.geometry.serviceui +ansys.tools.omniverse.dsgui ######################## @@ -9,7 +9,7 @@ ansys.geometry.serviceui CHANGELOG -.. automodule::"ansys.geometry.serviceui" +.. automodule::"ansys.tools.omniverse.dsgui" :platform: Windows-x86_64, Linux-x86_64 :members: :undoc-members: diff --git a/pyproject.toml b/pyproject.toml index 254cd05d5d5..d2b1d919a57 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -88,8 +88,8 @@ omit = [ "*/omniverse*.py", "*/dsg_server.py", "*/readers.py", - "*/service/*.py", - "*/serviceui/*.py", + "*/omniverse/core/*.py", + "*/omniverse/dsgui/*.py", ] [tool.coverage.report] diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.service/docs/CHANGELOG.md b/src/ansys/pyensight/core/exts/ansys.geometry.service/docs/CHANGELOG.md deleted file mode 100644 index 12bd53edb44..00000000000 --- a/src/ansys/pyensight/core/exts/ansys.geometry.service/docs/CHANGELOG.md +++ /dev/null @@ -1,14 +0,0 @@ -# Changelog - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - - -## [0.8.9] - 2024-07-25 -- Improved status feedback - -## [0.8.7] - 2024-07-12 -- Support for time varying data and temporal scaling - -## [0.8.4] - 2024-06-28 -- Initial kit version of ANSYS Geometry Service Server - diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/docs/CHANGELOG.md b/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/docs/CHANGELOG.md deleted file mode 100644 index 12bd53edb44..00000000000 --- a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/docs/CHANGELOG.md +++ /dev/null @@ -1,14 +0,0 @@ -# Changelog - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - - -## [0.8.9] - 2024-07-25 -- Improved status feedback - -## [0.8.7] - 2024-07-12 -- Support for time varying data and temporal scaling - -## [0.8.4] - 2024-06-28 -- Initial kit version of ANSYS Geometry Service Server - diff --git a/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/PYENSIGHT_VERSION b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/PYENSIGHT_VERSION new file mode 100644 index 00000000000..14415e0f984 --- /dev/null +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/PYENSIGHT_VERSION @@ -0,0 +1 @@ +0.9.0-dev0 \ No newline at end of file diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.service/ansys/geometry/service/__init__.py b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/__init__.py similarity index 100% rename from src/ansys/pyensight/core/exts/ansys.geometry.service/ansys/geometry/service/__init__.py rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/__init__.py diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.service/ansys/geometry/service/extension.py b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/extension.py similarity index 79% rename from src/ansys/pyensight/core/exts/ansys.geometry.service/ansys/geometry/service/extension.py rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/extension.py index c413da925ac..537d3cf36d1 100644 --- a/src/ansys/pyensight/core/exts/ansys.geometry.service/ansys/geometry/service/extension.py +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/ansys/tools/omniverse/core/extension.py @@ -20,34 +20,55 @@ build of ansys-pyensight-core. If the appropriate environmental variables are set, a pip install from another repository can be forced. """ -extra_args = [] -if "ANSYS_PYPI_INDEX_URL" in os.environ: - extra_args.append(os.environ["ANSYS_PYPI_INDEX_URL"]) +pyensight_version_file = os.path.join(os.path.dirname(__file__), "PYENSIGHT_VERSION") +pyensight_version = None +with open(pyensight_version_file, "r") as version_file: + pyensight_version = str(version_file.read()).strip() -if os.environ.get("ANSYS_PYPI_REINSTALL", "") == "1": - extra_args.extend(["--upgrade", "--no-deps", "--no-cache-dir", "--force-reinstall", "--pre"]) +version = f"{pyensight_version}" if pyensight_version else None - logging.warning("ansys.geometry.server - Forced reinstall ansys-pyensight-core") - omni.kit.pipapi.install("ansys-pyensight-core", extra_args=extra_args) +extra_args = [] +if "dev0" in version and "ANSYS_PYPI_INDEX_URL" in os.environ: + # Get PyEnSight from the private PyPi repo - dev environment + extra_args.append(str(os.environ["ANSYS_PYPI_INDEX_URL"])) + extra_args.append("--pre") +if os.environ.get("ANSYS_PYPI_REINSTALL", "") == "1": + package_name = "ansys-pyensight-core" + + # Add possibility of installing local wheels + if os.environ.get("ANSYS_PYENSIGHT_LOCAL_WHEEL"): + package_name = os.environ.get("ANSYS_PYENSIGHT_LOCAL_WHEEL") + + extra_args.extend( + [ + "--upgrade", + "--no-cache-dir", + "--force-reinstall", + ] + ) + + logging.warning("ansys.tools.omniverse.server - Forced reinstall ansys-pyensight-core") + # Add ignore cache attribute when reinstalling so that you can switch between dev and released versions if needed + omni.kit.pipapi.install(package_name, extra_args=extra_args, version=version, ignore_cache=True) try: # Checking to see if we need to install the module import ansys.pyensight.core import ansys.pyensight.core.utils.dsg_server as tmp_dsg_server # noqa: F401 import ansys.pyensight.core.utils.omniverse_dsg_server as tmp_ov_dsg_server # noqa: F401 except ModuleNotFoundError: - logging.warning("ansys.geometry.server - Installing ansys-pyensight-core") - omni.kit.pipapi.install("ansys-pyensight-core", extra_args=extra_args) + logging.warning("ansys.tools.omniverse.server - Installing ansys-pyensight-core") + omni.kit.pipapi.install("ansys-pyensight-core", extra_args=extra_args, version=version) """ If we have a local copy of the module, the above installed the correct dependencies, but we want to use the local copy. Do this by prefixing the path and (re)load the modules. The pyensight wheel includes the following for this file: -ansys\pyensight\core\exts\ansys.geometry.service\ansys\geometry\service\extension.py +ansys\pyensight\core\exts\ansys.tools.omniverse.core\ansys\tools\omniverse\core\extension.py """ kit_dir = __file__ -for _ in range(5): +for _ in range(6): kit_dir = os.path.dirname(kit_dir) """ At this point, the name should be: {something}\ansys\pyensight\core\exts @@ -70,11 +91,19 @@ # force a reload if we changed the path or had a partial failure that lead # to a pipapi install. -_ = reload(ansys.pyensight.core) +try: + _ = reload(ansys.pyensight.core) +except Exception: + pass + +import ansys.pyensight.core.utils # noqa: F811, E402 + _ = reload(ansys.pyensight.core.utils) + import ansys.pyensight.core.utils.dsg_server as dsg_server # noqa: E402 _ = reload(ansys.pyensight.core.utils.dsg_server) + import ansys.pyensight.core.utils.omniverse_dsg_server as ov_dsg_server # noqa: E402 _ = reload(ansys.pyensight.core.utils.omniverse_dsg_server) @@ -87,7 +116,7 @@ def find_kit_filename() -> Optional[str]: Use a combination of the current omniverse application and the information in the local .nvidia-omniverse/config/omniverse.toml file to come up with the pathname of a kit executable suitable for hosting another copy of the - ansys.geometry.server kit. + ansys.tools.omniverse.server kit. Returns ------- @@ -128,7 +157,7 @@ def find_kit_filename() -> Optional[str]: return None -class AnsysGeometryServiceServerExtension(omni.ext.IExt): +class AnsysToolsOmniverseCoreServerExtension(omni.ext.IExt): """ This class is an Omniverse kit. The kit is capable of creating a connection to an Ansys Distributed Scene Graph service and pushing @@ -160,6 +189,8 @@ def __init__(self, *args, **kwargs) -> None: @property def pyensight_version(self) -> str: """The ansys.pyensight.core version""" + if version: + return version return ansys.pyensight.core.VERSION @property @@ -226,7 +257,7 @@ def time_scale(self, value: float) -> None: self._time_scale = value @classmethod - def get_instance(cls) -> Optional["AnsysGeometryServiceServerExtension"]: + def get_instance(cls) -> Optional["AnsysToolsOmniverseCoreServerExtension"]: return cls._service_instance @classmethod @@ -302,8 +333,8 @@ def on_startup(self, ext_id: str) -> None: The specific version of the kit. """ self._version = ext_id - self.info(f"ANSYS geometry service server startup: {self._version}") - AnsysGeometryServiceServerExtension._service_instance = self + self.info(f"ANSYS tools omniverse core server startup: {self._version}") + AnsysToolsOmniverseCoreServerExtension._service_instance = self if self._setting("help") is not None: self.help() elif self._setting("run") is not None: @@ -313,38 +344,38 @@ def on_shutdown(self) -> None: """ Called by Omniverse when the kit instance is shutting down. """ - self.info("ANSYS geometry service server shutdown") + self.info("ANSYS tools omniverse core server shutdown") self.shutdown() - AnsysGeometryServiceServerExtension._service_instance = None + AnsysToolsOmniverseCoreServerExtension._service_instance = None def help(self) -> None: """ Send the CLI help output to logging. """ - self.warning(f"ANSYS Omniverse Geometry Service: {self._version}") - self.warning(" --/exts/ansys.geometry.service/help=1") + self.warning(f"ANSYS Tools Omniverse Core: {self._version}") + self.warning(" --/exts/ansys.tools.omniverse.core/help=1") self.warning(" Display this help.") - self.warning(" --/exts/ansys.geometry.service/run=1") + self.warning(" --/exts/ansys.tools.omniverse.core/run=1") self.warning(" Run the server.") - self.warning(" --/exts/ansys.geometry.service/omniUrl=URL") + self.warning(" --/exts/ansys.tools.omniverse.core/omniUrl=URL") self.warning(f" Omniverse pathname. (default: {self.omni_uri})") - self.warning(" --/exts/ansys.geometry.service/dsgUrl=URL") + self.warning(" --/exts/ansys.tools.omniverse.core/dsgUrl=URL") self.warning(f" Dynamic Scene Graph connection URL. (default: {self.dsg_uri})") - self.warning(" --/exts/ansys.geometry.service/securityCode=TOKEN") + self.warning(" --/exts/ansys.tools.omniverse.core/securityCode=TOKEN") self.warning(f" Dynamic Scene Graph security token. (default: {self.security_token})") - self.warning(" --/exts/ansys.geometry.service/temporal=0|1") + self.warning(" --/exts/ansys.tools.omniverse.core/temporal=0|1") self.warning( f" If non-zero, include all timeseteps in the scene. (default: {self.temporal})" ) - self.warning(" --/exts/ansys.geometry.service/vrmode=0|1") + self.warning(" --/exts/ansys.tools.omniverse.core/vrmode=0|1") self.warning( f" If non-zero, do not include a camera in the scene. (default: {self.vrmode})" ) - self.warning(" --/exts/ansys.geometry.service/normalizeGeometry=0|1") + self.warning(" --/exts/ansys.tools.omniverse.core/normalizeGeometry=0|1") self.warning( f" If non-zero, remap the geometry to the domain [-1,-1,-1]-[1,1,1]. (default: {self.normalize_geometry})" ) - self.warning(" --/exts/ansys.geometry.service/timeScale=FLOAT") + self.warning(" --/exts/ansys.tools.omniverse.core/timeScale=FLOAT") self.warning( f" Multiply all DSG time values by this value. (default: {self.time_scale})" ) @@ -397,20 +428,20 @@ def launch_server(self) -> None: for _ in range(5): kit_dir = os.path.dirname(kit_dir) cmd.extend(["--ext-folder", kit_dir]) - cmd.extend(["--enable", "ansys.geometry.service"]) + cmd.extend(["--enable", "ansys.tools.omniverse.core"]) if self.security_token: - cmd.append(f'--/exts/ansys.geometry.service/securityCode="{self.security_token}"') + cmd.append(f'--/exts/ansys.tools.omniverse.core/securityCode="{self.security_token}"') if self.temporal: - cmd.append("--/exts/ansys.geometry.service/temporal=1") + cmd.append("--/exts/ansys.tools.omniverse.core/temporal=1") if self.vrmode: - cmd.append("--/exts/ansys.geometry.service/vrmode=1") + cmd.append("--/exts/ansys.tools.omniverse.core/vrmode=1") if self.normalize_geometry: - cmd.append("--/exts/ansys.geometry.service/normalizeGeometry=1") + cmd.append("--/exts/ansys.tools.omniverse.core/normalizeGeometry=1") if self.time_scale != 1.0: - cmd.append(f"--/exts/ansys.geometry.service/timeScale={self.time_scale}") - cmd.append(f"--/exts/ansys.geometry.service/omniUrl={self.omni_uri}") - cmd.append(f"--/exts/ansys.geometry.service/dsgUrl={self.dsg_uri}") - cmd.append("--/exts/ansys.geometry.service/run=1") + cmd.append(f"--/exts/ansys.tools.omniverse.core/timeScale={self.time_scale}") + cmd.append(f"--/exts/ansys.tools.omniverse.core/omniUrl={self.omni_uri}") + cmd.append(f"--/exts/ansys.tools.omniverse.core/dsgUrl={self.dsg_uri}") + cmd.append("--/exts/ansys.tools.omniverse.core/run=1") env_vars = os.environ.copy() # we are launching the kit from an Omniverse app. In this case, we # inform the kit instance of: diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.service/config/extension.toml b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/config/extension.toml similarity index 70% rename from src/ansys/pyensight/core/exts/ansys.geometry.service/config/extension.toml rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/config/extension.toml index d2c8b9547f9..3993e417cf9 100644 --- a/src/ansys/pyensight/core/exts/ansys.geometry.service/config/extension.toml +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/config/extension.toml @@ -1,19 +1,19 @@ [package] # Semantic Versioning is used: https://semver.org/ -version = "0.9.0-dev0" +version = "0.1.0" # Lists people or organizations that are considered the "authors" of the package. authors = ["ANSYS"] # The title and description fields are primarily for displaying extension info in UI -title = "ANSYS Omniverse Geometry Service Server" +title = "ANSYS Tools Omniverse Core Server" description = "A geometry synchronization service that enables export of geometry scenes from ANSYS products to Omniverse." # Path (relative to the root) or content of readme markdown file for UI. readme = "docs/README.md" # URL of the extension source repository. -repository = "https://github.com/ansys/pyensight" +repository = "https://github.com/ansys-internal/ansys-tools-omniverse" # One of categories for UI. category = "simulation" @@ -38,9 +38,9 @@ icon = "data/icon.png" "omni.client" = {} "omni.usd" = {} -# Main python module this extension provides, it will be publicly available as "import ansys.geometry.service". +# Main python module this extension provides, it will be publicly available as "import ansys.tools.omniverse.core". [[python.module]] -name = "ansys.geometry.service" +name = "ansys.tools.omniverse.core" [[test]] # Extra dependencies only to be used during test run @@ -50,10 +50,10 @@ dependencies = [ [settings] # CLI setting defaults (note: "help" and "run" are also supported) -exts."ansys.geometry.service".dsgUrl = "grpc://127.0.0.1:5234" -exts."ansys.geometry.service".omniUrl = "omniverse://localhost/Users/test" -exts."ansys.geometry.service".securityCode = "" -exts."ansys.geometry.service".temporal = "0" -exts."ansys.geometry.service".vrmode = "0" -exts."ansys.geometry.service".normalizeGeometry = "0" -exts."ansys.geometry.service".timeScale = "1.0" +exts."ansys.tools.omniverse.core".dsgUrl = "grpc://127.0.0.1:5234" +exts."ansys.tools.omniverse.core".omniUrl = "omniverse://localhost/Users/test" +exts."ansys.tools.omniverse.core".securityCode = "" +exts."ansys.tools.omniverse.core".temporal = "0" +exts."ansys.tools.omniverse.core".vrmode = "0" +exts."ansys.tools.omniverse.core".normalizeGeometry = "0" +exts."ansys.tools.omniverse.core".timeScale = "1.0" diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.service/data/icon.png b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/data/icon.png similarity index 100% rename from src/ansys/pyensight/core/exts/ansys.geometry.service/data/icon.png rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/data/icon.png diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.service/data/preview.png b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/data/preview.png similarity index 100% rename from src/ansys/pyensight/core/exts/ansys.geometry.service/data/preview.png rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/data/preview.png diff --git a/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/docs/CHANGELOG.md b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/docs/CHANGELOG.md new file mode 100644 index 00000000000..bb42ca86913 --- /dev/null +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/docs/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + + +## [0.1.0] - 2024-07-30 +- First version + diff --git a/exts/ansys.geometry.service/docs/README.md b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/docs/README.md similarity index 73% rename from exts/ansys.geometry.service/docs/README.md rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/docs/README.md index e8edd2b55e2..ce990a0c9aa 100644 --- a/exts/ansys.geometry.service/docs/README.md +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/docs/README.md @@ -1,10 +1,10 @@ -# ANSYS Omniverse Geometry Service [ansys.geometry.service] +# ANSYS Tools Omniverse Core [ansys.tools.omniverse.core] The Omniverse extension provides a dynamic connection between an ANSYS geometry source (e.g. ANSYS EnSight) and an Omniverse instance. The connection runs as a standalone service capable of supporting scripted execution utilizing just a kit CLI. It can also be launched via -PyEnSight and via a simple GUI provided by the [ansys.geometry.serviceui] +PyEnSight and via a simple GUI provided by the [ansys.tools.omniverse.dsgui] kit extension. For more details on this extension see: diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.service/docs/index.rst b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/docs/index.rst similarity index 73% rename from src/ansys/pyensight/core/exts/ansys.geometry.service/docs/index.rst rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/docs/index.rst index e1090f915c9..e98621c056a 100644 --- a/src/ansys/pyensight/core/exts/ansys.geometry.service/docs/index.rst +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.core/docs/index.rst @@ -1,4 +1,4 @@ -ansys.geometry.service +ansys.tools.omniverse.core ###################### @@ -9,7 +9,7 @@ ansys.geometry.service CHANGELOG -.. automodule::"ansys.geometry.service" +.. automodule::"ansys.tools.omniverse.core" :platform: Windows-x86_64, Linux-x86_64 :members: :undoc-members: diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/ansys/geometry/serviceui/__init__.py b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/ansys/tools/omniverse/dsgui/__init__.py similarity index 100% rename from src/ansys/pyensight/core/exts/ansys.geometry.serviceui/ansys/geometry/serviceui/__init__.py rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/ansys/tools/omniverse/dsgui/__init__.py diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/ansys/geometry/serviceui/extension.py b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/ansys/tools/omniverse/dsgui/extension.py similarity index 82% rename from src/ansys/pyensight/core/exts/ansys.geometry.serviceui/ansys/geometry/serviceui/extension.py rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/ansys/tools/omniverse/dsgui/extension.py index 51a8659a50c..36abb14aace 100644 --- a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/ansys/geometry/serviceui/extension.py +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/ansys/tools/omniverse/dsgui/extension.py @@ -4,12 +4,12 @@ from typing import Any, Optional from urllib.parse import urlparse -import ansys.geometry.service +import ansys.tools.omniverse.core import omni.ext import omni.ui as ui -class AnsysGeometryServiceUIExtension(omni.ext.IExt): +class AnsysToolsOmniverseDSGUIExtension(omni.ext.IExt): def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) self._window: Any = None @@ -28,8 +28,8 @@ def __init__(self, *args, **kwargs) -> None: self._connected = False @property - def service(self) -> Optional["AnsysGeometryServiceUIExtension"]: - return ansys.geometry.service.AnsysGeometryServiceServerExtension.get_instance() + def service(self) -> Optional["AnsysToolsOmniverseDSGUIExtension"]: + return ansys.tools.omniverse.core.AnsysToolsOmniverseCoreServerExtension.get_instance() def info(self, text: str) -> None: self._logger.info(text) @@ -89,7 +89,7 @@ def stop_server(self) -> None: def connect_cb(self) -> None: if self.service is None: - self.error("Unable to find ansys.geometry.service instance") + self.error("Unable to find ansys.tools.omniverse.core instance") return if self._connected: self.stop_server() @@ -109,9 +109,9 @@ def update_cb(self) -> None: self._grpc.command(cmd, do_eval=False) def on_startup(self, ext_id: str) -> None: - self.info(f"ANSYS geometry service GUI startup: {ext_id}") + self.info(f"ANSYS tools omniverse DSG GUI startup: {ext_id}") if self.service is None: - self.error("Unable to find ansys.geometry.service instance") + self.error("Unable to find ansys.tools.omniverse.core instance") self.build_ui() self._update_callback() @@ -144,23 +144,35 @@ def update_ui(self) -> None: self._omni_uri_w.enabled = not self._connected def build_ui(self) -> None: - self._window = ui.Window(f"ANSYS Geometry Service ({self.service.pyensight_version})") + self._window = ui.Window(f"ANSYS Tools Omniverse DSG ({self.service.pyensight_version})") with self._window.frame: with ui.VStack(height=0, spacing=5): self._label_w = ui.Label("No connected DSG server") with ui.HStack(spacing=5): - ui.Label("DSG Service URI:", alignment=ui.Alignment.RIGHT_CENTER, width=0) + ui.Label( + "DSG Service URI:", + alignment=ui.Alignment.RIGHT_CENTER, + width=0, + ) self._dsg_uri_w = ui.StringField() self._dsg_uri_w.model.as_string = self.service.dsg_uri with ui.HStack(spacing=5): - ui.Label("DSG security code:", alignment=ui.Alignment.RIGHT_CENTER, width=0) + ui.Label( + "DSG security code:", + alignment=ui.Alignment.RIGHT_CENTER, + width=0, + ) self._dsg_token_w = ui.StringField(password_mode=True) self._dsg_token_w.model.as_string = self.service.security_token with ui.HStack(spacing=5): - ui.Label("Omniverse URI:", alignment=ui.Alignment.RIGHT_CENTER, width=0) + ui.Label( + "Omniverse URI:", + alignment=ui.Alignment.RIGHT_CENTER, + width=0, + ) self._omni_uri_w = ui.StringField() self._omni_uri_w.model.as_string = self.service.omni_uri @@ -182,7 +194,9 @@ def build_ui(self) -> None: with ui.HStack(spacing=5): ui.Label( - "Temporal scaling factor:", alignment=ui.Alignment.RIGHT_CENTER, width=0 + "Temporal scaling factor:", + alignment=ui.Alignment.RIGHT_CENTER, + width=0, ) self._time_scale_w = ui.FloatField() self._time_scale_w.model.as_float = self.service.time_scale @@ -192,7 +206,7 @@ def build_ui(self) -> None: self._update_w = ui.Button("Request Update", clicked_fn=self.update_cb) def on_shutdown(self) -> None: - self.info("ANSYS geometry service shutdown") + self.info("ANSYS Tools Omniverse DSG shutdown") self.stop_server() self._window = None self._label_w = None diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/config/extension.toml b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/config/extension.toml similarity index 83% rename from src/ansys/pyensight/core/exts/ansys.geometry.serviceui/config/extension.toml rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/config/extension.toml index b96cfb35c96..ccc03a6f401 100644 --- a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/config/extension.toml +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/config/extension.toml @@ -1,19 +1,19 @@ [package] # Semantic Versioning is used: https://semver.org/ -version = "0.9.0-dev0" +version = "0.1.0" # Lists people or organizations that are considered the "authors" of the package. authors = ["ANSYS"] # The title and description fields are primarily for displaying extension info in UI -title = "ANSYS Omniverse Geometry Service GUI" +title = "ANSYS Tools Omniverse DSG GUI" description = "A geometry synchronization service that enables export of geometry scenes from ANSYS products to Omniverse." # Path (relative to the root) or content of readme markdown file for UI. readme = "docs/README.md" # URL of the extension source repository. -repository = "https://github.com/ansys/pyensight" +repository = "https://github.com/ansys-internal/ansys-tools-omniverse" # One of categories for UI. category = "simulation" @@ -35,11 +35,11 @@ icon = "data/icon.png" # Use omni.ui to build simple UI [dependencies] "omni.kit.uiapp" = {} -"ansys.geometry.service" = {} +"ansys.tools.omniverse.core" = {} -# Main python module this extension provides, it will be publicly available as "import ansys.geometry.serviceui". +# Main python module this extension provides, it will be publicly available as "import ansys.tools.omniverse.dsgui". [[python.module]] -name = "ansys.geometry.serviceui" +name = "ansys.tools.omniverse.dsgui" [[test]] # Extra dependencies only to be used during test run diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/data/icon.png b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/data/icon.png similarity index 100% rename from src/ansys/pyensight/core/exts/ansys.geometry.serviceui/data/icon.png rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/data/icon.png diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/data/preview.png b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/data/preview.png similarity index 100% rename from src/ansys/pyensight/core/exts/ansys.geometry.serviceui/data/preview.png rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/data/preview.png diff --git a/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/docs/CHANGELOG.md b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/docs/CHANGELOG.md new file mode 100644 index 00000000000..b77439c1344 --- /dev/null +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/docs/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + + +## [0.1.0] - 2024-07-30 +- First version diff --git a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/docs/README.md b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/docs/README.md similarity index 72% rename from src/ansys/pyensight/core/exts/ansys.geometry.serviceui/docs/README.md rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/docs/README.md index 81d1512d8bc..c5a6f62fa94 100644 --- a/src/ansys/pyensight/core/exts/ansys.geometry.serviceui/docs/README.md +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/docs/README.md @@ -1,6 +1,6 @@ -# ANSYS Omniverse Geometry Service GUI [ansys.geometry.serviceui] +# ANSYS Tools Omniverse DSG GUI [ansys.tools.omniverse.dsgui] -This Omniverse extension is a UI interface to the [ansys.geometry.service] +This Omniverse extension is a UI interface to the [ansys.tools.omniverse.core] kit extension. It allows an Omniverse application user to connect to a running copy of ANSYS EnSight or other application that supports the Dynamic Scene Graph gRPC protocol. The GUI allows for the remote scene diff --git a/exts/ansys.geometry.serviceui/docs/index.rst b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/docs/index.rst similarity index 72% rename from exts/ansys.geometry.serviceui/docs/index.rst rename to src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/docs/index.rst index ad1f12d3990..d2258522b7f 100644 --- a/exts/ansys.geometry.serviceui/docs/index.rst +++ b/src/ansys/pyensight/core/exts/ansys.tools.omniverse.dsgui/docs/index.rst @@ -1,4 +1,4 @@ -ansys.geometry.serviceui +ansys.tools.omniverse.dsgui ######################## @@ -9,7 +9,7 @@ ansys.geometry.serviceui CHANGELOG -.. automodule::"ansys.geometry.serviceui" +.. automodule::"ansys.tools.omniverse.dsgui" :platform: Windows-x86_64, Linux-x86_64 :members: :undoc-members: