ansys / pyansys-geometry

A Python wrapper for Ansys Geometry Services
https://geometry.docs.pyansys.com/
MIT License
38 stars 11 forks source link

STEP curve import depends on 'import_points' option #1318

Open greschd opened 1 month ago

greschd commented 1 month ago

🔍 Before submitting the issue

🐞 Description of the bug

When importing the attached .step file, the imported curves are incomplete unless the import_points option is also set to True. ply_boundaries.step.txt

Screenshot with import_points=False [1] image

Screenshot with import_points=True image

Reproducing code:

from ansys.geometry.core import launch_modeler_with_discovery
from ansys.geometry.core.misc import ImportOptions

modeler = launch_modeler_with_discovery()

design = modeler.open_file(
    "ply_boundaries.step", 
    import_options=ImportOptions(
        import_curves=True,
        import_names=True,
        import_points=False,
    )
)

The curves are defined as B_SPLINE_CURVE_WITH_KNOTS. These do reference CARTESIAN_POINT objects in their definition, but I don't understand why the curve import works in some cases, but not in others. Presumably, the curve import should read the points which make up the curve definition, but not import them as separate point objects. And indeed, in neither case are the points separately present in the imported geometry.

[1] I am using launch_modeler_with_discovery for being able to make screenshots, but the issue originally occurred using launch_modeler_with_geometry_service.

📝 Steps to reproduce

💻 Which operating system are you using?

Windows

📀 Which ANSYS version are you using?

2025R1

🐍 Which Python version are you using?

3.10

📦 Installed packages

aiohttp==3.9.5
aiosignal==1.3.1
ansys-api-dbu==0.3.3
ansys-api-geometry==0.4.4
ansys-geometry-core==0.6.5
ansys-tools-path==0.6.0
ansys-tools-visualization-interface==0.2.6
appdirs==1.4.4
async-timeout==4.0.3
attrs==23.2.0
beartype==0.18.5
certifi==2024.7.4
charset-normalizer==3.3.2
click==8.1.7
colorama==0.4.6
contourpy==1.2.1
cycler==0.12.1
flexcache==0.3
flexparser==0.3.1
fonttools==4.53.1
frozenlist==1.4.1
grpcio==1.65.1
grpcio-health-checking==1.65.1
idna==3.7
kiwisolver==1.4.5
matplotlib==3.9.1
more-itertools==10.3.0
msgpack==1.0.8
multidict==6.0.5
numpy==1.26.4
packaging==24.1
pillow==10.4.0
Pint==0.24.3
platformdirs==4.2.2
pooch==1.8.2
protobuf==5.27.2
pyparsing==3.1.2
python-dateutil==2.9.0.post0
pyvista==0.44.0
requests==2.32.3
scipy==1.14.0
scooby==0.10.0
semver==3.0.2
six==1.16.0
trame==3.6.3
trame-client==3.2.1
trame-server==3.0.3
trame-vtk==2.8.9
trame-vuetify==2.6.1
typing_extensions==4.12.2
urllib3==2.2.2
vtk==9.3.1
websockets==12.0
wslink==2.1.1
yarl==1.9.4
RobPasMue commented 1 month ago

Hi @greschd - thanks for opening the issue. Seems like a backend problem IMO. Pinging @b-matteo @umutsoysalansys @smereu for evaluation

RobPasMue commented 1 month ago

ImportOptions object might be expected in this scenario but the main issue is the difference in behavior when it gets imported.