netgen/python/occ.py
2023-06-29 12:22:00 +02:00

53 lines
1.5 KiB
Python

""" Netgen OCC documentation
This module provides the Netgen OCCGeometry class, as well as Python wrappers
for OpenCascade functionality. This allows the construction from scratch, as well as
editing geometries imported via STEP format.
Most of the classes are directly py-wrapped from the OCCT classes.
For more detailed documentation consult the OCCT docs, a good starting point is
https://dev.opencascade.org/doc/refman/html/class_b_rep_builder_a_p_i___make_shape.html
"""
from .config import USE_OCC
if not USE_OCC:
raise ImportError("Netgen was not built with Opencascade support")
from .libngpy._NgOCC import *
from .meshing import meshsize, IdentificationType
gp_Ax3 = Axes
gp_Ax1 = Axis
Translation = gp_Trsf.Translation
Rotation = gp_Trsf.Rotation
Mirror = gp_Trsf.Mirror
def Rectangle(l,w): return WorkPlane().Rectangle(l,w)
def MoveTo(x,y): return WorkPlane().MoveTo(x,y)
def LineTo(x,y): return WorkPlane().LineTo(x,y)
def Line(l): return WorkPlane().Line(l)
unit_square_shape = WorkPlane().Line(1, name="bottom").Rotate(90) \
.Line(1, name="right").Rotate(90) \
.Line(1, name="top").Rotate(90) \
.Line(1, name="left").Rotate(90).Face()
unit_square = OCCGeometry(unit_square_shape, dim=2)
uc_shape = Box((0,0,0),(1,1,1))
uc_shape.faces.Max(X).name = "front"
uc_shape.faces.Min(X).name = "back"
uc_shape.faces.Max(Y).name = "right"
uc_shape.faces.Min(Y).name = "left"
uc_shape.faces.Max(Z).name = "top"
uc_shape.faces.Min(Z).name = "bottom"
unit_cube = OCCGeometry(uc_shape)