def display_geom(self, geom, color=None, transparency=None, material=None, update=True): """ Display a geometric entity. Parameters ---------- geom: OCCT.gp.gp_Pnt or OCCT.Geom.Geom_Curve or OCCT.Geom.Geom_Surface The shape to display color: enaml.color.Color An enaml color transparency: float The transparency (0 to 1). material: OCCT.Graphic3d.Graphic3d_NameOfMaterial The material. Returns ------- result: AIS_Shape or None The AIS_Shape created for the geometry. Returns *None* if the entity cannot be converted to a shape. """ if isinstance(geom, gp_Pnt): shape = BRepBuilderAPI_MakeVertex(geom).Vertex() elif isinstance(geom, Geom_Curve): shape = BRepBuilderAPI_MakeEdge(geom).Edge() elif isinstance(geom, Geom_Surface): shape = BRepBuilderAPI_MakeFace(geom, 1.0e-7).Face() else: return None return self.display_shape(shape, color, transparency, material, update)
def display_geom(self, geom, rgb=None, transparency=None, material=Graphic3d_NOM_DEFAULT): """ Display a geometric entity. :param geom: The geometry. :type geom: OCCT.gp.gp_Pnt or OCCT.Geom.Geom_Curve or OCCT.Geom.Geom_Surface :param rgb: The RGB color (r, g, b). :type rgb: collections.Sequence[float] or OCCT.Quantity.Quantity_Color :param float transparency: The transparency (0 to 1). :param OCCT.Graphic3d.Graphic3d_NameOfMaterial material: The material. :return: The AIS_Shape created for the geometry. Returns *None* if the entity cannot be converted to a shape. :rtype: OCCT.AIS.AIS_Shape or None """ if isinstance(geom, gp_Pnt): shape = BRepBuilderAPI_MakeVertex(geom).Vertex() elif isinstance(geom, Geom_Curve): shape = BRepBuilderAPI_MakeEdge(geom).Edge() elif isinstance(geom, Geom_Surface): shape = BRepBuilderAPI_MakeFace(geom, 1.0e-7).Face() else: return None return self.display_shape(shape, rgb, transparency, material)
def get_shapes(self): """ Get the shapes casted to the actual type """ shapes = [] for s in self.declaration.shapes: if isinstance(s, Point): shapes.append(BRepBuilderAPI_MakeVertex(s.proxy).Vertex()) else: shapes.append(Topology.cast_shape(s)) return shapes
def by_point(pnt): """ Create a vertex by a point. :param point_like pnt: The point. :return: The vertex. :rtype: afem.topology.entities.Vertex """ pnt = CheckGeom.to_point(pnt) return Vertex(BRepBuilderAPI_MakeVertex(pnt).Vertex())
def edge(event=None): # The blud edge BlueEdge = BRepBuilderAPI_MakeEdge(gp_Pnt(-80, -50, -20), gp_Pnt(-30, -60, -60)) V1 = BRepBuilderAPI_MakeVertex(gp_Pnt(-20, 10, -30)) V2 = BRepBuilderAPI_MakeVertex(gp_Pnt(10, 7, -25)) YellowEdge = BRepBuilderAPI_MakeEdge(V1.Vertex(), V2.Vertex()) #The white edge line = gp_Lin(gp_Ax1(gp_Pnt(10, 10, 10), gp_Dir(1, 0, 0))) WhiteEdge = BRepBuilderAPI_MakeEdge(line, -20, 10) #The red edge Elips = gp_Elips(gp_Ax2(gp_Pnt(10, 0, 0), gp_Dir(1, 1, 1)), 60, 30) RedEdge = BRepBuilderAPI_MakeEdge(Elips, 0, math.pi/2) # The green edge and the both extreme vertex P1 = gp_Pnt(-15, 200, 10) P2 = gp_Pnt(5, 204, 0) P3 = gp_Pnt(15, 200, 0) P4 = gp_Pnt(-15, 20, 15) P5 = gp_Pnt(-5, 20, 0) P6 = gp_Pnt(15, 20, 0) P7 = gp_Pnt(24, 120, 0) P8 = gp_Pnt(-24, 120, 12.5) array = TColgp_Array1OfPnt(1, 8) array.SetValue(1, P1) array.SetValue(2, P2) array.SetValue(3, P3) array.SetValue(4, P4) array.SetValue(5, P5) array.SetValue(6, P6) array.SetValue(7, P7) array.SetValue(8, P8) curve = Geom_BezierCurve(array) ME = BRepBuilderAPI_MakeEdge(curve) GreenEdge = ME V3 = ME.Vertex1() V4 = ME.Vertex2() display.DisplayColoredShape(BlueEdge.Edge(), 'BLUE') display.DisplayShape(V1.Vertex()) display.DisplayShape(V2.Vertex()) display.DisplayColoredShape(WhiteEdge.Edge(), 'WHITE') display.DisplayColoredShape(YellowEdge.Edge(), 'YELLOW') display.DisplayColoredShape(RedEdge.Edge(), 'RED') display.DisplayColoredShape(GreenEdge.Edge(), 'GREEN') display.DisplayShape(V3) display.DisplayShape(V4, update=True)
def to_vertex(cls, entity): """ Convert an entity to a vertex. :param entity: The entity. :return: A vertex. :rtype: OCCT.TopoDS.TopoDS_Vertex :raise TypeError: If entity cannot be converted to a vertex. """ if isinstance(entity, TopoDS_Vertex): return entity if isinstance(entity, gp_Pnt): return BRepBuilderAPI_MakeVertex(entity).Vertex() if cls.is_shape(entity) and entity.ShapeType() == TopAbs_VERTEX: return TopoDS.Vertex_(entity) raise TypeError('Failed to convert entity to a vertex.')
def create_shape(self): pt = self.declaration.position.proxy self.shape = BRepBuilderAPI_MakeVertex(pt).Vertex()
ay = gp_XYZ(aYDir.X(), aYDir.Y(), aYDir.Z()) az = gp_XYZ(aZDir.X(), aZDir.Y(), aZDir.Z()) p = gp_Pnt(aBaryCenter.X(), aBaryCenter.Y(), aBaryCenter.Z()) anAxes = gp_Ax2(p, gp_Dir(aZDir), gp_Dir(aXDir)) anAxes.SetLocation( gp_Pnt(p.XYZ() - ax * aHalfX - ay * aHalfY - az * aHalfZ)) aBox = BRepPrimAPI_MakeBox(anAxes, 2.0 * aHalfX, 2.0 * aHalfY, 2.0 * aHalfZ).Shape() return aBox obb = Bnd_OBB() # choose n random vertices n = 10 for _ in range(n): x = random.uniform(100, 1000) y = random.uniform(100, 1000) z = random.uniform(100, 1000) p = BRepBuilderAPI_MakeVertex(gp_Pnt(x, y, z)).Shape() display.DisplayShape(p) brepbndlib_AddOBB(p, obb) obb_shape = ConvertBndToShape(obb) display.DisplayShape(obb_shape) # a ref box b = BRepPrimAPI_MakeBox(10, 10, 10).Shape() display.DisplayShape(b, update=True) start_display()
def make_vertex(*args): vert = BRepBuilderAPI_MakeVertex(*args) with assert_isdone(vert, 'failed to produce vertex'): result = vert.Vertex() vert.Delete() return result