3D

[OpenCASCADE] Shape Edge Intersection

반응형

[ 2010년에 작성된 글입니다. 지금은 다를 수 있습니다. ]

 

TopOpeBRep_ShapeIntersector 를 이용하면 TopoDS_Shape 관련 Intersection 정보를 구하는 건 거의 다 할 수 있을 것 같다.

 

그동안 IntTools_EdgeEdge, GeomAPI_IntCS, 등등을 이용해보려고 했으나, 대부분 Geom 형태의 데이터가 필요해서 역 변환을 하는 과정에서 문제가 생긴 것 같은데, Shape을 바로 사용할 수 있는 클래스가 있어서 다행이 문제가 해결됬다.

 

TopoDS_Edge line1 = BRepBuilderAPI_MakeEdge(gp_Pnt(-100, 0, m_fZPos), gp_Pnt(100, 0, m_fZPos));
TopOpeBRep_ShapeIntersector si0;
si0.InitIntersection(pscan->m_ScanShape, line1);
while (si0.MoreIntersection())
{
	TopOpeBRep_FaceEdgeIntersector& fe = si0.ChangeFaceEdgeIntersector();
	fe.InitPoint();
	while (fe.MorePoint())
	{
		gp_Pnt aPoint = fe.Value();
		TopoDS_Vertex aNewVertex = BRepBuilderAPI_MakeVertex(aPoint);

		fe.NextPoint();
	}
	si0.NextIntersection();
}
반응형