mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
Compare commits
1 Commits
CR0_IILS_P
...
CR0-Intera
Author | SHA1 | Date | |
---|---|---|---|
|
961713db52 |
@@ -86,8 +86,7 @@ typedef enum
|
|||||||
MT_BoundaryEdge = 4, //!< Boundary edge (related to a single face)
|
MT_BoundaryEdge = 4, //!< Boundary edge (related to a single face)
|
||||||
MT_SharedEdge = 5, //!< Shared edge (related to several faces)
|
MT_SharedEdge = 5, //!< Shared edge (related to several faces)
|
||||||
MT_WireFrameFace = 6, //!< Wireframe face
|
MT_WireFrameFace = 6, //!< Wireframe face
|
||||||
MT_ShadedFace = 7, //!< Shaded face
|
MT_ShadedFace = 7 //!< Shaded face
|
||||||
MT_SeamEdge = 8 //!< Seam edge between faces
|
|
||||||
} IVtk_MeshType;
|
} IVtk_MeshType;
|
||||||
|
|
||||||
//! @enum IVtk_DisplayMode Display modes for 3D shapes
|
//! @enum IVtk_DisplayMode Display modes for 3D shapes
|
||||||
|
@@ -719,85 +719,6 @@ static Standard_Integer VtkSetDisplayMode (Draw_Interpretor& theDI,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================
|
|
||||||
// Function : VtkSetBoundaryDraw
|
|
||||||
// Purpose :
|
|
||||||
// Draw args : ivtksetboundingdraw [name] draw on/off(0,1)
|
|
||||||
//================================================================
|
|
||||||
static Standard_Integer VtkSetBoundaryDraw(Draw_Interpretor& theDI,
|
|
||||||
Standard_Integer theArgNum,
|
|
||||||
const char** theArgs)
|
|
||||||
{
|
|
||||||
// Check viewer
|
|
||||||
if (!GetInteractor()->IsEnabled())
|
|
||||||
{
|
|
||||||
theDI << theArgs[0] << " error: call ivtkinit before\n";
|
|
||||||
return 1; // TCL_ERROR
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check arguments
|
|
||||||
if (theArgNum != 2 && theArgNum != 3)
|
|
||||||
{
|
|
||||||
theDI << theArgs[0] << " error: expects 1 or 2 arguments\n";
|
|
||||||
return 1; // TCL_ERROR
|
|
||||||
}
|
|
||||||
|
|
||||||
vtkSmartPointer<vtkActor> anActor;
|
|
||||||
// Set disp mode for all objects
|
|
||||||
if (theArgNum == 2)
|
|
||||||
{
|
|
||||||
// Get mode
|
|
||||||
Standard_Integer toDraw = Draw::Atoi(theArgs[1]);
|
|
||||||
DoubleMapOfActorsAndNames::Iterator anIter(GetMapOfActors());
|
|
||||||
while (anIter.More())
|
|
||||||
{
|
|
||||||
anActor = anIter.Key1();
|
|
||||||
IVtkTools_ShapeDataSource* aSrc = IVtkTools_ShapeObject::GetShapeSource(anActor);
|
|
||||||
if (aSrc)
|
|
||||||
{
|
|
||||||
IVtkOCC_Shape::Handle anOccShape = aSrc->GetShape();
|
|
||||||
if (!anOccShape.IsNull())
|
|
||||||
{
|
|
||||||
IVtkTools_DisplayModeFilter* aFilter = GetPipeline(anOccShape->GetId())->GetDisplayModeFilter();
|
|
||||||
aFilter->SetDisplayMode(DM_Shading);
|
|
||||||
aFilter->SetFaceBoundaryDraw((toDraw == 0)? false : true);
|
|
||||||
aFilter->Modified();
|
|
||||||
aFilter->Update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
anIter.Next();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Set disp mode for named object
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Standard_Integer toDraw = atoi(theArgs[2]);
|
|
||||||
TCollection_AsciiString aName = theArgs[1];
|
|
||||||
if (GetMapOfActors().IsBound2(aName))
|
|
||||||
{
|
|
||||||
anActor = GetMapOfActors().Find2(aName);
|
|
||||||
vtkSmartPointer<IVtkTools_ShapeDataSource> aSrc = IVtkTools_ShapeObject::GetShapeSource(anActor);
|
|
||||||
if (aSrc)
|
|
||||||
{
|
|
||||||
IVtkOCC_Shape::Handle anOccShape = aSrc->GetShape();
|
|
||||||
if (!anOccShape.IsNull())
|
|
||||||
{
|
|
||||||
IVtkTools_DisplayModeFilter* aFilter = GetPipeline(anOccShape->GetId())->GetDisplayModeFilter();
|
|
||||||
aFilter->SetDisplayMode(DM_Shading);
|
|
||||||
aFilter->SetFaceBoundaryDraw((toDraw == 0) ? false : true);
|
|
||||||
aFilter->Modified();
|
|
||||||
aFilter->Update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Redraw window
|
|
||||||
GetInteractor()->Render();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//================================================================
|
//================================================================
|
||||||
// Function : VtkSetSelectionMode
|
// Function : VtkSetSelectionMode
|
||||||
// Purpose :
|
// Purpose :
|
||||||
@@ -1277,13 +1198,6 @@ void IVtkDraw::Commands (Draw_Interpretor& theCommands)
|
|||||||
"if name is not defined.",
|
"if name is not defined.",
|
||||||
__FILE__, VtkSetDisplayMode, group);
|
__FILE__, VtkSetDisplayMode, group);
|
||||||
|
|
||||||
theCommands.Add("ivtksetboundingdraw",
|
|
||||||
"ivtksetboundingdraw usage:\n"
|
|
||||||
"ivtksetboundingdraw [name] draw on/off (0,1)"
|
|
||||||
"\n\t\t: Sets or unsets boundaries drawing for shading display mode to the object with name 'name' or to all objects"
|
|
||||||
"if name is not defined.",
|
|
||||||
__FILE__, VtkSetBoundaryDraw, group);
|
|
||||||
|
|
||||||
theCommands.Add("ivtksetselmode",
|
theCommands.Add("ivtksetselmode",
|
||||||
"ivtksetselmode usage:\n"
|
"ivtksetselmode usage:\n"
|
||||||
" ivtksetselmode [name] mode on/off(0,1)"
|
" ivtksetselmode [name] mode on/off(0,1)"
|
||||||
|
@@ -180,19 +180,15 @@ void IVtkOCC_ShapeMesher::addEdges()
|
|||||||
TopAbs_FACE,
|
TopAbs_FACE,
|
||||||
anEdgesMap);
|
anEdgesMap);
|
||||||
|
|
||||||
TopTools_IndexedMapOfShape anEdgesList;
|
|
||||||
TopExp::MapShapes(GetShapeObj()->GetShape(), TopAbs_EDGE, anEdgesList);
|
|
||||||
|
|
||||||
int aNbFaces;
|
int aNbFaces;
|
||||||
IVtk_MeshType aType;
|
IVtk_MeshType aType;
|
||||||
myEdgesTypes.Clear();
|
myEdgesTypes.Clear();
|
||||||
|
|
||||||
TopTools_IndexedMapOfShape::const_iterator aEdgeIt;
|
TopExp_Explorer anEdgeIter (GetShapeObj()->GetShape(), TopAbs_EDGE);
|
||||||
for (aEdgeIt = anEdgesList.cbegin(); aEdgeIt != anEdgesList.cend(); aEdgeIt++)
|
for (; anEdgeIter.More(); anEdgeIter.Next())
|
||||||
{
|
{
|
||||||
const TopoDS_Edge& anOcctEdge = TopoDS::Edge (*aEdgeIt);
|
const TopoDS_Edge& anOcctEdge = TopoDS::Edge (anEdgeIter.Current());
|
||||||
const TopTools_ListOfShape& aFaceList = anEdgesMap.FindFromKey(anOcctEdge);
|
aNbFaces = anEdgesMap.FindFromKey (anOcctEdge).Extent();
|
||||||
aNbFaces = aFaceList.Extent();
|
|
||||||
if (aNbFaces == 0)
|
if (aNbFaces == 0)
|
||||||
{
|
{
|
||||||
aType = MT_FreeEdge;
|
aType = MT_FreeEdge;
|
||||||
@@ -203,21 +199,7 @@ void IVtkOCC_ShapeMesher::addEdges()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool isSame = false;
|
aType = MT_SharedEdge;
|
||||||
TopTools_ListOfShape::const_iterator aFaceIt;
|
|
||||||
for (aFaceIt = aFaceList.cbegin(); aFaceIt != aFaceList.cend(); aFaceIt++) {
|
|
||||||
TopExp_Explorer aIt((*aFaceIt), TopAbs_EDGE);
|
|
||||||
int aCount = 0;
|
|
||||||
for (; aIt.More(); aIt.Next()) {
|
|
||||||
if (aIt.Current().IsSame(anOcctEdge))
|
|
||||||
aCount++;
|
|
||||||
}
|
|
||||||
if (aCount == 2) {
|
|
||||||
isSame = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
aType = isSame? MT_SeamEdge : MT_SharedEdge;
|
|
||||||
}
|
}
|
||||||
addEdge (anOcctEdge, GetShapeObj()->GetSubShapeId (anOcctEdge), aType);
|
addEdge (anOcctEdge, GetShapeObj()->GetSubShapeId (anOcctEdge), aType);
|
||||||
myEdgesTypes.Bind (anOcctEdge, aType);
|
myEdgesTypes.Bind (anOcctEdge, aType);
|
||||||
|
@@ -35,8 +35,7 @@ vtkStandardNewMacro(IVtkTools_DisplayModeFilter)
|
|||||||
//============================================================================
|
//============================================================================
|
||||||
IVtkTools_DisplayModeFilter::IVtkTools_DisplayModeFilter()
|
IVtkTools_DisplayModeFilter::IVtkTools_DisplayModeFilter()
|
||||||
: myDisplayMode (DM_Wireframe),
|
: myDisplayMode (DM_Wireframe),
|
||||||
myDoDisplaySharedVertices (false),
|
myDoDisplaySharedVertices (false)
|
||||||
myDrawFaceBoundaries( false )
|
|
||||||
{
|
{
|
||||||
// Filter according to values in subshapes types array.
|
// Filter according to values in subshapes types array.
|
||||||
myIdsArrayName = IVtkVTK_ShapeData::ARRNAME_MESH_TYPES();
|
myIdsArrayName = IVtkVTK_ShapeData::ARRNAME_MESH_TYPES();
|
||||||
@@ -48,16 +47,15 @@ IVtkTools_DisplayModeFilter::IVtkTools_DisplayModeFilter()
|
|||||||
aTypes.Add (MT_FreeEdge);
|
aTypes.Add (MT_FreeEdge);
|
||||||
aTypes.Add (MT_BoundaryEdge);
|
aTypes.Add (MT_BoundaryEdge);
|
||||||
aTypes.Add (MT_SharedEdge);
|
aTypes.Add (MT_SharedEdge);
|
||||||
aTypes.Add (MT_SeamEdge);
|
|
||||||
aTypes.Add (MT_WireFrameFace);
|
aTypes.Add (MT_WireFrameFace);
|
||||||
|
|
||||||
myModesDefinition[DM_Wireframe] = aTypes;
|
myModesDefinition.Bind (DM_Wireframe, aTypes);
|
||||||
|
|
||||||
aTypes.Clear();
|
aTypes.Clear();
|
||||||
aTypes.Add (MT_FreeVertex);
|
aTypes.Add (MT_FreeVertex);
|
||||||
aTypes.Add (MT_ShadedFace);
|
aTypes.Add (MT_ShadedFace);
|
||||||
|
|
||||||
myModesDefinition[DM_Shading] = aTypes;
|
myModesDefinition.Bind (DM_Shading, aTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
@@ -75,7 +73,7 @@ int IVtkTools_DisplayModeFilter::RequestData (vtkInformation *theRequest,
|
|||||||
vtkInformationVector **theInputVector,
|
vtkInformationVector **theInputVector,
|
||||||
vtkInformationVector *theOutputVector)
|
vtkInformationVector *theOutputVector)
|
||||||
{
|
{
|
||||||
SetData (myModesDefinition[myDisplayMode]);
|
SetData (myModesDefinition.Find (myDisplayMode));
|
||||||
return Superclass::RequestData (theRequest, theInputVector, theOutputVector);
|
return Superclass::RequestData (theRequest, theInputVector, theOutputVector);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,20 +104,24 @@ void IVtkTools_DisplayModeFilter::SetDisplaySharedVertices (const bool theDoDisp
|
|||||||
if (myDoDisplaySharedVertices != theDoDisplay)
|
if (myDoDisplaySharedVertices != theDoDisplay)
|
||||||
{
|
{
|
||||||
myDoDisplaySharedVertices = theDoDisplay;
|
myDoDisplaySharedVertices = theDoDisplay;
|
||||||
|
vtkIdType aVertexType = MT_SharedVertex;
|
||||||
|
NCollection_DataMap<IVtk_DisplayMode, IVtk_IdTypeMap>::Iterator aModes (myModesDefinition);
|
||||||
|
NCollection_DataMap<IVtk_DisplayMode, IVtk_IdTypeMap> aNewModes;
|
||||||
IVtk_IdTypeMap aModeTypes;
|
IVtk_IdTypeMap aModeTypes;
|
||||||
for (int i = 0; i < 2; i++)
|
for (; aModes.More(); aModes.Next())
|
||||||
{
|
{
|
||||||
aModeTypes = myModesDefinition[i];
|
aModeTypes = aModes.Value();
|
||||||
if (theDoDisplay && !aModeTypes.Contains(MT_SharedVertex))
|
if (theDoDisplay && !aModeTypes.Contains(aVertexType))
|
||||||
{
|
{
|
||||||
aModeTypes.Add (MT_SharedVertex);
|
aModeTypes.Add (aVertexType);
|
||||||
}
|
}
|
||||||
else if (!theDoDisplay && aModeTypes.Contains (MT_SharedVertex))
|
else if (!theDoDisplay && aModeTypes.Contains (aVertexType))
|
||||||
{
|
{
|
||||||
aModeTypes.Remove (MT_SharedVertex);
|
aModeTypes.Remove (aVertexType);
|
||||||
}
|
}
|
||||||
myModesDefinition[i] = aModeTypes;
|
aNewModes.Bind (aModes.Key(), aModeTypes);
|
||||||
}
|
}
|
||||||
|
myModesDefinition = aNewModes;
|
||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -146,42 +148,3 @@ IVtk_DisplayMode IVtkTools_DisplayModeFilter::GetDisplayMode () const
|
|||||||
return myDisplayMode;
|
return myDisplayMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Method: meshTypesForMode
|
|
||||||
// Purpose:
|
|
||||||
//============================================================================
|
|
||||||
const IVtk_IdTypeMap& IVtkTools_DisplayModeFilter::MeshTypesForMode(IVtk_DisplayMode theMode) const
|
|
||||||
{
|
|
||||||
return myModesDefinition[theMode];
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Method: setMeshTypesForMode
|
|
||||||
// Purpose:
|
|
||||||
//============================================================================
|
|
||||||
void IVtkTools_DisplayModeFilter::SetMeshTypesForMode(IVtk_DisplayMode theMode, const IVtk_IdTypeMap& theMeshTypes)
|
|
||||||
{
|
|
||||||
myModesDefinition[theMode] = theMeshTypes;
|
|
||||||
Modified();
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// Method: SetFaceBoundaryDraw
|
|
||||||
// Purpose:
|
|
||||||
//============================================================================
|
|
||||||
void IVtkTools_DisplayModeFilter::SetFaceBoundaryDraw(bool theToDraw)
|
|
||||||
{
|
|
||||||
myDrawFaceBoundaries = theToDraw;
|
|
||||||
if (theToDraw) {
|
|
||||||
myModesDefinition[DM_Shading].Add(MT_BoundaryEdge);
|
|
||||||
myModesDefinition[DM_Shading].Add(MT_SharedEdge);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (myModesDefinition[DM_Shading].Contains(MT_BoundaryEdge))
|
|
||||||
myModesDefinition[DM_Shading].Remove(MT_BoundaryEdge);
|
|
||||||
|
|
||||||
if (myModesDefinition[DM_Shading].Contains(MT_SharedEdge))
|
|
||||||
myModesDefinition[DM_Shading].Remove(MT_SharedEdge);
|
|
||||||
}
|
|
||||||
Modified();
|
|
||||||
}
|
|
||||||
|
@@ -20,15 +20,11 @@
|
|||||||
#include <IVtkTools_SubPolyDataFilter.hxx>
|
#include <IVtkTools_SubPolyDataFilter.hxx>
|
||||||
#include <NCollection_DataMap.hxx>
|
#include <NCollection_DataMap.hxx>
|
||||||
|
|
||||||
#include <array>
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(push)
|
#pragma warning(push)
|
||||||
#pragma warning(disable: 4251) // avoid warning C4251: "class needs to have dll-interface..."
|
#pragma warning(disable: 4251) // avoid warning C4251: "class needs to have dll-interface..."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef std::array<IVtk_IdTypeMap, 2> IVtk_DisplayModeArray;
|
|
||||||
|
|
||||||
//! @class IVtkTools_DisplayModeFilter
|
//! @class IVtkTools_DisplayModeFilter
|
||||||
//! @brief Cells filter according to the selected display mode by mesh parts types.
|
//! @brief Cells filter according to the selected display mode by mesh parts types.
|
||||||
//! This filter is used to get parts of a shape according to different
|
//! This filter is used to get parts of a shape according to different
|
||||||
@@ -50,18 +46,6 @@ public:
|
|||||||
//! Get current display mode.
|
//! Get current display mode.
|
||||||
IVtk_DisplayMode GetDisplayMode() const;
|
IVtk_DisplayMode GetDisplayMode() const;
|
||||||
|
|
||||||
//! Returns list of displaying mesh element types for the given display mode
|
|
||||||
const IVtk_IdTypeMap& MeshTypesForMode(IVtk_DisplayMode theMode) const;
|
|
||||||
|
|
||||||
//! Set a list of displaying mesh element types for the given display mode
|
|
||||||
void SetMeshTypesForMode(IVtk_DisplayMode theMode, const IVtk_IdTypeMap& theMeshTypes);
|
|
||||||
|
|
||||||
//! Draw Boundary of faces for shading mode
|
|
||||||
void SetFaceBoundaryDraw(bool theToDraw);
|
|
||||||
|
|
||||||
//! Returns True if drawing Boundary of faces for shading mode is defined.
|
|
||||||
bool FaceBoundaryDraw() const { return myDrawFaceBoundaries; }
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Filter cells according to the given set of ids.
|
//! Filter cells according to the given set of ids.
|
||||||
virtual int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *);
|
virtual int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *);
|
||||||
@@ -72,9 +56,8 @@ protected:
|
|||||||
protected:
|
protected:
|
||||||
//! Display mode defining mesh types to pass through this filter.
|
//! Display mode defining mesh types to pass through this filter.
|
||||||
IVtk_DisplayMode myDisplayMode;
|
IVtk_DisplayMode myDisplayMode;
|
||||||
IVtk_DisplayModeArray myModesDefinition;
|
NCollection_DataMap<IVtk_DisplayMode, IVtk_IdTypeMap> myModesDefinition;
|
||||||
bool myDoDisplaySharedVertices;
|
bool myDoDisplaySharedVertices;
|
||||||
bool myDrawFaceBoundaries;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
|
@@ -97,9 +97,25 @@ namespace
|
|||||||
return aPoly;
|
return aPoly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Add new solid
|
||||||
|
virtual void AddSolid() Standard_OVERRIDE
|
||||||
|
{
|
||||||
|
Handle(Poly_Triangulation) aCurrentTri = GetTriangulation();
|
||||||
|
myTriangulationList.Append(aCurrentTri);
|
||||||
|
myNodes.Clear();
|
||||||
|
myTriangles.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
NCollection_Sequence<Handle(Poly_Triangulation)> GetTriangulationList()
|
||||||
|
{
|
||||||
|
return myTriangulationList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NCollection_Vector<gp_XYZ> myNodes;
|
NCollection_Vector<gp_XYZ> myNodes;
|
||||||
NCollection_Vector<Poly_Triangle> myTriangles;
|
NCollection_Vector<Poly_Triangle> myTriangles;
|
||||||
|
NCollection_Sequence<Handle(Poly_Triangulation)> myTriangulationList;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -118,6 +134,17 @@ Handle(Poly_Triangulation) RWStl::ReadFile (const Standard_CString theFile,
|
|||||||
return aReader.GetTriangulation();
|
return aReader.GetTriangulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//function : ReadFile
|
||||||
|
//purpose :
|
||||||
|
//=============================================================================
|
||||||
|
void RWStl::ReadFile(const Standard_CString theFile, NCollection_Sequence<Handle(Poly_Triangulation)>& theTriangList)
|
||||||
|
{
|
||||||
|
Reader aReader;
|
||||||
|
aReader.Read(theFile, Handle(Message_ProgressIndicator)(), true);
|
||||||
|
theTriangList = aReader.GetTriangulationList();
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
//function : ReadFile
|
//function : ReadFile
|
||||||
//purpose :
|
//purpose :
|
||||||
|
@@ -50,6 +50,8 @@ public:
|
|||||||
Standard_EXPORT static Handle(Poly_Triangulation) ReadFile (const Standard_CString theFile,
|
Standard_EXPORT static Handle(Poly_Triangulation) ReadFile (const Standard_CString theFile,
|
||||||
const Handle(Message_ProgressIndicator)& aProgInd = Handle(Message_ProgressIndicator)());
|
const Handle(Message_ProgressIndicator)& aProgInd = Handle(Message_ProgressIndicator)());
|
||||||
|
|
||||||
|
Standard_EXPORT static void ReadFile(const Standard_CString theFile, NCollection_Sequence<Handle(Poly_Triangulation)>& theTriangList);
|
||||||
|
|
||||||
//! Read triangulation from a binary STL file
|
//! Read triangulation from a binary STL file
|
||||||
//! In case of error, returns Null handle.
|
//! In case of error, returns Null handle.
|
||||||
Standard_EXPORT static Handle(Poly_Triangulation) ReadBinary (const OSD_Path& thePath,
|
Standard_EXPORT static Handle(Poly_Triangulation) ReadBinary (const OSD_Path& thePath,
|
||||||
|
@@ -126,7 +126,8 @@ namespace
|
|||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
Standard_Boolean RWStl_Reader::Read (const char* theFile,
|
Standard_Boolean RWStl_Reader::Read (const char* theFile,
|
||||||
const Handle(Message_ProgressIndicator)& theProgress)
|
const Handle(Message_ProgressIndicator)& theProgress,
|
||||||
|
bool IsMultiSolid)
|
||||||
{
|
{
|
||||||
std::filebuf aBuf;
|
std::filebuf aBuf;
|
||||||
OSD_OpenStream (aBuf, theFile, std::ios::in | std::ios::binary);
|
OSD_OpenStream (aBuf, theFile, std::ios::in | std::ios::binary);
|
||||||
@@ -165,6 +166,8 @@ Standard_Boolean RWStl_Reader::Read (const char* theFile,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
aStream >> std::ws; // skip any white spaces
|
aStream >> std::ws; // skip any white spaces
|
||||||
|
if (IsMultiSolid)
|
||||||
|
AddSolid();
|
||||||
}
|
}
|
||||||
return ! aStream.fail();
|
return ! aStream.fail();
|
||||||
}
|
}
|
||||||
|
@@ -39,7 +39,8 @@ public:
|
|||||||
//! Format is recognized automatically by analysis of the file header.
|
//! Format is recognized automatically by analysis of the file header.
|
||||||
//! Returns true if success, false on error or user break.
|
//! Returns true if success, false on error or user break.
|
||||||
Standard_EXPORT Standard_Boolean Read (const char* theFile,
|
Standard_EXPORT Standard_Boolean Read (const char* theFile,
|
||||||
const Handle(Message_ProgressIndicator)& theProgress);
|
const Handle(Message_ProgressIndicator)& theProgress,
|
||||||
|
bool IsMultiSolid = false);
|
||||||
|
|
||||||
//! Guess whether the stream is an Ascii STL file, by analysis of the first bytes (~200).
|
//! Guess whether the stream is an Ascii STL file, by analysis of the first bytes (~200).
|
||||||
//! The function attempts to put back the read symbols to the stream which thus must support ungetc().
|
//! The function attempts to put back the read symbols to the stream which thus must support ungetc().
|
||||||
@@ -74,6 +75,8 @@ public:
|
|||||||
//! Should create new triangle built on specified nodes in the target model.
|
//! Should create new triangle built on specified nodes in the target model.
|
||||||
virtual void AddTriangle (Standard_Integer theN1, Standard_Integer theN2, Standard_Integer theN3) = 0;
|
virtual void AddTriangle (Standard_Integer theN1, Standard_Integer theN2, Standard_Integer theN3) = 0;
|
||||||
|
|
||||||
|
virtual void AddSolid() = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -411,6 +411,22 @@ static Standard_Integer ReadObj (Draw_Interpretor& theDI,
|
|||||||
{
|
{
|
||||||
aFilePath = theArgVec[anArgIter];
|
aFilePath = theArgVec[anArgIter];
|
||||||
}
|
}
|
||||||
|
else if (theArgc == 4 && strcmp("multi", theArgv[3]) == 0)
|
||||||
|
{
|
||||||
|
NCollection_Sequence<Handle(Poly_Triangulation)> theTriangList;
|
||||||
|
RWStl::ReadFile(theArgv[2], theTriangList);
|
||||||
|
BRep_Builder aB;
|
||||||
|
TopoDS_Compound aCmp;
|
||||||
|
aB.MakeCompound(aCmp);
|
||||||
|
for (int i = 1; i <= theTriangList.Length(); i++)
|
||||||
|
{
|
||||||
|
TopoDS_Face aFace;
|
||||||
|
aB.MakeFace(aFace);
|
||||||
|
aB.UpdateFace(aFace, theTriangList(i));
|
||||||
|
aB.Add(aCmp, aFace);
|
||||||
|
}
|
||||||
|
DBRep::Set(theArgv[1], aCmp);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "Syntax error at '" << theArgVec[anArgIter] << "'\n";
|
std::cout << "Syntax error at '" << theArgVec[anArgIter] << "'\n";
|
||||||
|
@@ -64,6 +64,7 @@ math_GaussLeastSquare.lxx
|
|||||||
math_GaussMultipleIntegration.cxx
|
math_GaussMultipleIntegration.cxx
|
||||||
math_GaussMultipleIntegration.hxx
|
math_GaussMultipleIntegration.hxx
|
||||||
math_GaussMultipleIntegration.lxx
|
math_GaussMultipleIntegration.lxx
|
||||||
|
math_GaussPoints.hxx
|
||||||
math_GaussSetIntegration.cxx
|
math_GaussSetIntegration.cxx
|
||||||
math_GaussSetIntegration.hxx
|
math_GaussSetIntegration.hxx
|
||||||
math_GaussSetIntegration.lxx
|
math_GaussSetIntegration.lxx
|
||||||
|
28
src/math/math_GaussPoints.hxx
Normal file
28
src/math/math_GaussPoints.hxx
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
// Copyright (c) 1997-1999 Matra Datavision
|
||||||
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef math_GaussPoints_HeaderFile
|
||||||
|
#define math_GaussPoints_HeaderFile
|
||||||
|
#include <math_Vector.hxx>
|
||||||
|
#include <Standard_Real.hxx>
|
||||||
|
|
||||||
|
|
||||||
|
extern const Standard_Real Point[157];
|
||||||
|
extern const Standard_Real Weight[157];
|
||||||
|
|
||||||
|
math_Vector GPoints(const Standard_Integer Index);
|
||||||
|
|
||||||
|
math_Vector GWeights(const Standard_Integer Index);
|
||||||
|
|
||||||
|
#endif
|
@@ -1,19 +0,0 @@
|
|||||||
puts "============="
|
|
||||||
puts "boundary_draw"
|
|
||||||
puts "============="
|
|
||||||
puts ""
|
|
||||||
#######################################################
|
|
||||||
# Tests boundary draw flag changing in the IVtk view
|
|
||||||
#######################################################
|
|
||||||
|
|
||||||
set anImage1 $imagedir/${casename}_1.png
|
|
||||||
set anImage2 $imagedir/${casename}_2.png
|
|
||||||
|
|
||||||
ivtkinit
|
|
||||||
box b 1 1 1
|
|
||||||
ivtkdisplay b
|
|
||||||
ivtksetboundingdraw 1
|
|
||||||
ivtkdump $anImage1
|
|
||||||
|
|
||||||
ivtksetboundingdraw 0
|
|
||||||
ivtkdump $anImage2
|
|
Reference in New Issue
Block a user