1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

Compare commits

..

19 Commits

Author SHA1 Message Date
dpasukhi
bd2a789f15 Update version to 7.8.1 2024-03-31 23:05:22 +01:00
dpasukhi
a4e91f855b 0033656: Foundation Classes - Standard_Type crash during unloading static lib
Revert changes to use type_info as a key to use string.
Impact - performance decrease to search (once per class registration)
Will be updated with reorganizing type storage in future
2024-03-31 23:05:22 +01:00
oan
9efc032b9a 0033560: PARASOLID Import - XT importer raises exception SIGFPE Arithmetic Exception
Prevent division by zero in exceptional cases when vector of parameters contains only a single value.
2024-03-31 22:46:06 +01:00
ichesnok
44cbb3d8e7 0033410: Data Exchange, Step Import - TRIANGULATED_FACE from STEP where there are no pnval entries
Problem fixed by using array of nodes in case when aPnindices is empty.
2024-03-31 22:42:35 +01:00
astromko
392377a331 0033367: Modeling Algorithms - Normal projection or BOP problem [Regression]
Fixed passing of an incorrect curve into GeomAdaptor::MakeCurve() function.
2024-03-31 22:42:24 +01:00
astromko
6635f53848 0031601: Modeling Algorithms - BRepOffset_Tool Segmentation Fault
Added protection against null pointer dereferencing.
Modified BRepOffset_MakeOffset::MakeThickSolid method.
Fixed the problem with negative volume values.
Fixed several unit tests and added a new one.
2024-03-31 22:42:16 +01:00
ichesnok
f7f32bf33e 0033638: Data Exchange, Step Import - Style for tessellated object missed
TransferBRep_ShapeBinder used for tessellated face.
2024-03-31 22:41:14 +01:00
ichesnok
c1620d29fa 0033631: Data Exchange, Step import - Crash by reading STEP file
Creating Poly_Triangulation from ComplexTriangulatedSurfaceSet was fixed.
2024-03-31 22:41:08 +01:00
ichesnok
92e70f93d0 0033603: Data Exchange, Step Import - Crash reading corrupted STEP file
Crash fixed by checking IsNull().
2024-03-31 22:41:02 +01:00
ichesnok
54754bccab 0033602: Data Exchange, Step - Carriage return removing
Carriage removing integrated
2024-03-31 22:40:54 +01:00
ichesnok
33a5691ef1 0033596: Documentation - Incorrect default value read.step.tessellated
Default value of read.step.tessellated corrected.
2024-03-31 22:40:25 +01:00
abv
689b59692e 0025415: Data Exchange - Invalid result of loading a STEP file
Handling of special case found on some STEP files produced by FPX Expert 2013 (PCB design system):
edge curve is line displaced from its true position but with correct direction;
we shift the line in this case so that it passes through vertices correcty.

Protection against possible exception in writing XDE.
2024-03-31 22:40:18 +01:00
astromko
c7fd6ca63b 0033383: Modeling Algorithms - Wire/Face creation problem
ProjCurve3d and BRepAlgo_FaceRestrictor::Perform functions should not continue to work and should terminate if the BRep_Tool::Curve function returns null pointer.
2024-03-31 22:40:08 +01:00
ichesnok
9704e22131 0033261: Data Exchange, Step Import - Empty shape after reading process
Added a transfer for ShapeRepresentationRelationship in Transfer of MappedItem method,
in order to support link of components according to ISO 10303-203-2003.
2024-03-31 22:40:00 +01:00
ichesnok
f3f713569a 0033569: Data Exchange, STEP - Crash when reading multi-body file
Datum reading changed in ReadDatums() method:
using DatumSystemAP242 (DatumSystem or DatumReference) array
instead of DatumSystem array (DatumReference)
2024-03-31 22:39:52 +01:00
ichesnok
db976e0a59 0025188: Data Exchange, Step Export - Losing shapes after import
Check on null for description added to WriteStep methods
(for product, product_definition and product_definition_formation)
2024-03-31 22:39:42 +01:00
ichesnok
ee8f2ea3c2 0032980: Data Exchange - STEP import produce a crash
Check on null for loop added
2024-03-31 22:39:34 +01:00
oan
58393b24b6 0033567: Modeling Data - GeomLib_IsPlanarSurface raises exception SIGFPE Arithmetic Exception in Release mode
Add protection against zero-division
2024-03-31 22:39:22 +01:00
dpasukhi
b896c6f4af Update version to 7.8.1 dev 2024-03-31 22:39:07 +01:00
181 changed files with 626 additions and 5331 deletions

View File

@@ -1653,13 +1653,6 @@ For each Saved View OCCT STEP Reader will retrieve the following attributes:
- clipping planes (single plane of combination of planes);
- front and back plane clipping.
### User defined attributes
Attributes are implemented in accordance with <a href="https://www.mbx-if.org/documents/rec_prac_user_def_attributes_v18.pdf">Recommended practices for User Defined Attributes</a> section 4, 5, 6.1-6.3 and 7.
Attributes can be read for shapes at levels:
- Part/Product Level;
- Component Instances in an Assembly;
- Geometry Level.
@subsection occt_step_7_3 Writing to STEP
The translation from XDE to STEP can be initialized as follows:
@@ -1737,8 +1730,5 @@ Interface_Static::SetIVal("write.step.schema", 5));
### Saved views
Saved Views are not exported by OCCT.
### User defined attributes
Attributes can be imported from STEP.

View File

@@ -643,7 +643,7 @@ Standard_Boolean AIS_Manipulator::ObjectTransformation (const Standard_Integer t
//function : ProcessDragging
//purpose :
//=======================================================================
Standard_Boolean AIS_Manipulator::ProcessDragging (const Handle(AIS_InteractiveContext)& aCtx,
Standard_Boolean AIS_Manipulator::ProcessDragging (const Handle(AIS_InteractiveContext)&,
const Handle(V3d_View)& theView,
const Handle(SelectMgr_EntityOwner)&,
const Graphic3d_Vec2i& theDragFrom,
@@ -676,15 +676,6 @@ Standard_Boolean AIS_Manipulator::ProcessDragging (const Handle(AIS_InteractiveC
return Standard_True;
}
case AIS_DragAction_Stop:
{
//at the end of transformation redisplay for updating sensitive areas
StopTransform (true);
if (aCtx->IsDisplayed (this))
{
aCtx->Redisplay (this, true);
}
return Standard_True;
}
break;
}
return Standard_False;
@@ -843,18 +834,10 @@ void AIS_Manipulator::updateTransformation()
if (myIsZoomPersistentMode)
{
if (TransformPersistence().IsNull()
|| TransformPersistence()->Mode() != Graphic3d_TMF_AxialZoomPers
|| TransformPersistence()->Mode() != Graphic3d_TMF_ZoomPers
|| !TransformPersistence()->AnchorPoint().IsEqual (myPosition.Location(), 0.0))
{
setTransformPersistence (new Graphic3d_TransformPers (Graphic3d_TMF_AxialZoomPers, myPosition.Location()));
}
}
else
{
if (TransformPersistence().IsNull()
|| TransformPersistence()->Mode() != Graphic3d_TMF_AxialScalePers)
{
setTransformPersistence (new Graphic3d_TransformPers (Graphic3d_TMF_AxialScalePers, myPosition.Location()));
setTransformPersistence (new Graphic3d_TransformPers (Graphic3d_TMF_ZoomPers, myPosition.Location()));
}
}
}
@@ -939,7 +922,7 @@ void AIS_Manipulator::SetZoomPersistence (const Standard_Boolean theToEnable)
if (!theToEnable)
{
setTransformPersistence (new (Graphic3d_TransformPers)(Graphic3d_TMF_AxialScalePers));
setTransformPersistence (Handle(Graphic3d_TransformPers)());
}
updateTransformation();

View File

@@ -926,7 +926,7 @@ void BRepFill_OffsetWire::PerformWithBiLo
if (StartOnEdge) {
Standard_Boolean Start = 1;
Trim.AddOrConfuse(Start, E[0], E[1], Params);
if (Params.Length() == Vertices.Length() && Params.Length() != 0)
if (Params.Length() == Vertices.Length())
Vertices.SetValue(1,VS);
else
@@ -936,7 +936,7 @@ void BRepFill_OffsetWire::PerformWithBiLo
if (EndOnEdge) {
Standard_Boolean Start = 0;
Trim.AddOrConfuse(Start, E[0], E[1], Params);
if (Params.Length() == Vertices.Length() && Params.Length() != 0)
if (Params.Length() == Vertices.Length())
Vertices.SetValue(Params.Length(),VE);
else
@@ -962,7 +962,7 @@ void BRepFill_OffsetWire::PerformWithBiLo
// Storage of vertices on parallel edges.
// fill MapBis and MapVerPar.
//----------------------------------------------
if (!Vertices.IsEmpty() && Params.Length() == Vertices.Length()) {
if (!Vertices.IsEmpty()) {
for (k = 0; k <= 1; k++) {
if (!MapBis.IsBound(E[k])) {
MapBis .Bind(E[k],EmptySeq);
@@ -1198,9 +1198,7 @@ void BRepFill_OffsetWire::PrepareSpine()
// Cut
TopoDS_Shape aLocalShape = E.Oriented(TopAbs_FORWARD);
// Modified by Sergey KHROMOV - Thu Nov 16 17:29:29 2000 Begin
Handle(BRep_TEdge) TEdge = Handle(BRep_TEdge)::DownCast(E.TShape());
const Standard_Integer aNumCurvesInEdge = TEdge->Curves().Size();
if (nbEdges == 2 && nbResEdges == 0 && aNumCurvesInEdge > 1)
if (nbEdges == 2 && nbResEdges == 0)
ForcedCut = 1;
// Modified by Sergey KHROMOV - Thu Nov 16 17:29:33 2000 End
nbResEdges = CutEdge (TopoDS::Edge(aLocalShape), mySpine, ForcedCut, Cuts);
@@ -1300,7 +1298,7 @@ void BRepFill_OffsetWire::UpdateDetromp (BRepFill_DataMapOfOrientedShapeListOfSh
ii++;
}
while (ii <= Vertices.Length() && ii <= Params.Length()) {
while (ii <= Vertices.Length()) {
U2 = Params.Value(ii).X();
V2 = TopoDS::Vertex(Vertices.Value(ii));

View File

@@ -273,25 +273,16 @@ BRepLib_MakeFace::BRepLib_MakeFace(const TopoDS_Wire& W,
aB.MakeWire (aW);
TopoDS_Wire aWForw = W;
Standard_Boolean hasDegenerated = Standard_False;
aWForw.Orientation (TopAbs_FORWARD);
TopoDS_Iterator anIter (aWForw);
for (; anIter.More(); anIter.Next())
{
const TopoDS_Edge& aE = TopoDS::Edge (anIter.Value());
if (BRep_Tool::Degenerated(aE))
{
hasDegenerated = Standard_True;
}
else
{
aB.Add(aW, aE);
}
if (!BRep_Tool::Degenerated (aE))
aB.Add (aW, aE);
}
if (hasDegenerated)
{
aW.Orientation (W.Orientation()); // return to original orient
aW.Closed (W.Closed());
}
@@ -299,11 +290,6 @@ BRepLib_MakeFace::BRepLib_MakeFace(const TopoDS_Wire& W,
{
aW = W;
}
}
else
{
aW = W;
}
Add (aW);
//

View File

@@ -33,7 +33,6 @@
#include <Storage_Schema.hxx>
#include <TCollection_AsciiString.hxx>
#include <TCollection_ExtendedString.hxx>
#include <TDataStd_TreeNode.hxx>
#include <TDF_Attribute.hxx>
#include <TDF_Data.hxx>
#include <TDF_Label.hxx>
@@ -325,16 +324,7 @@ void BinLDrivers_DocumentRetrievalDriver::Read (Standard_IStream&
// read sub-tree of the root label
if (!theFilter.IsNull())
theFilter->StartIteration();
const auto aStreamStartPosition = theIStream.tellg();
Standard_Integer nbRead = ReadSubTree (theIStream, aData->Root(), theFilter, aQuickPart, Standard_False, aPS.Next());
if (!myUnresolvedLinks.IsEmpty())
{
// In case we have skipped some linked TreeNodes before getting to
// their children.
theFilter->StartIteration();
theIStream.seekg(aStreamStartPosition, std::ios_base::beg);
nbRead += ReadSubTree(theIStream, aData->Root(), theFilter, aQuickPart, Standard_True, aPS.Next());
}
Standard_Integer nbRead = ReadSubTree (theIStream, aData->Root(), theFilter, aQuickPart, aPS.Next());
if (!aPS.More())
{
myReaderStatus = PCDM_RS_UserBreak;
@@ -383,7 +373,6 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
const TDF_Label& theLabel,
const Handle(PCDM_ReaderFilter)& theFilter,
const Standard_Boolean& theQuickPart,
const Standard_Boolean theReadMissing,
const Message_ProgressRange& theRange)
{
Standard_Integer nbRead = 0;
@@ -404,7 +393,7 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
aLabelSize = InverseUint64(aLabelSize);
#endif
// no one sub-label is needed, so, skip everything
if (aSkipAttrs && !theFilter->IsSubPassed() && myUnresolvedLinks.IsEmpty())
if (aSkipAttrs && !theFilter->IsSubPassed())
{
aLabelSize -= sizeof (uint64_t);
theIS.seekg (aLabelSize, std::ios_base::cur);
@@ -414,11 +403,6 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
}
}
if (theReadMissing)
{
aSkipAttrs = Standard_True;
}
const auto anAttStartPosition = theIS.tellg();
// Read attributes:
for (theIS >> myPAtt;
theIS && myPAtt.TypeId() > 0 && // not an end marker ?
@@ -431,12 +415,6 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
myReaderStatus = PCDM_RS_UserBreak;
return -1;
}
if (myUnresolvedLinks.Remove(myPAtt.Id()) && aSkipAttrs)
{
aSkipAttrs = Standard_False;
theIS.seekg(anAttStartPosition, std::ios_base::beg);
continue;
}
if (aSkipAttrs)
{
if (myPAtt.IsDirect()) // skip direct written stream
@@ -509,17 +487,7 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
aDriver->TypeName(), Message_Warning);
}
else if (!isBound)
{
myRelocTable.Bind(anID, tAtt);
Handle(TDataStd_TreeNode) aNode = Handle(TDataStd_TreeNode)::DownCast(tAtt);
if (!theFilter.IsNull() && !aNode.IsNull() && !aNode->Father().IsNull() && aNode->Father()->IsNew())
{
Standard_Integer anUnresolvedLink;
myPAtt.SetPosition(BP_HEADSIZE);
myPAtt >> anUnresolvedLink;
myUnresolvedLinks.Add(anUnresolvedLink);
}
}
}
else if (!myMapUnsupported.Contains(myPAtt.TypeId()))
myMsgDriver->Send(aMethStr + "warning: type ID not registered in header: "
@@ -554,7 +522,7 @@ Standard_Integer BinLDrivers_DocumentRetrievalDriver::ReadSubTree
// read sub-tree
if (!theFilter.IsNull())
theFilter->Down (aTag);
Standard_Integer nbSubRead = ReadSubTree (theIS, aLab, theFilter, theQuickPart, theReadMissing, aPS.Next());
Standard_Integer nbSubRead = ReadSubTree (theIS, aLab, theFilter, theQuickPart, aPS.Next());
// check for error
if (nbSubRead == -1)
return -1;

View File

@@ -80,7 +80,6 @@ protected:
const TDF_Label& theData,
const Handle(PCDM_ReaderFilter)& theFilter,
const Standard_Boolean& theQuickPart,
const Standard_Boolean theReadMissing,
const Message_ProgressRange& theRanges = Message_ProgressRange());
@@ -126,7 +125,6 @@ private:
BinObjMgt_Persistent myPAtt;
TColStd_MapOfInteger myMapUnsupported;
BinLDrivers_VectorOfDocumentSection mySections;
NCollection_Map<Standard_Integer> myUnresolvedLinks;
};

View File

@@ -140,15 +140,6 @@ public:
myIsEnabled = theIsLoaded;
}
//! Custom function to activate commercial DE component.
//! The input is special sequence of values that described in
//! specific component documentation. Order is important.
//! Each component can have own way of activation.
//!
//! The main goal - real-time loading plug-in activation.
//! OpenSource components don't need to have activation process.
Standard_EXPORT void virtual CustomActivation(const TColStd_ListOfAsciiString&) {};
public:
//!< Internal parameters for transfer process

View File

@@ -20,10 +20,10 @@
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <StepData_Factors.hxx>
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_Axis1Placement;
class gp_Ax1;
class gp_Ax2d;
@@ -43,16 +43,16 @@ public:
Standard_EXPORT GeomToStep_MakeAxis1Placement(const gp_Ax1& A,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeAxis1Placement(const gp_Ax2d& A,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeAxis1Placement(const Handle(Geom_Axis1Placement)& A,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeAxis1Placement(const Handle(Geom2d_AxisPlacement)& A,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Axis1Placement)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_Axis2Placement2d;
class gp_Ax2;
class gp_Ax22d;
@@ -40,10 +41,10 @@ public:
Standard_EXPORT GeomToStep_MakeAxis2Placement2d(const gp_Ax2& A,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeAxis2Placement2d(const gp_Ax22d& A,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Axis2Placement2d)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
#include <StepData_StepModel.hxx>
class StepData_Factors;
class StepGeom_Axis2Placement3d;
class gp_Ax2;
class gp_Ax3;
@@ -41,19 +42,19 @@ public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT GeomToStep_MakeAxis2Placement3d(const StepData_Factors& theLocalFactors = StepData_Factors());
Standard_EXPORT GeomToStep_MakeAxis2Placement3d(const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeAxis2Placement3d(const gp_Ax2& A,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeAxis2Placement3d(const gp_Ax3& A,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeAxis2Placement3d(const gp_Trsf& T,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeAxis2Placement3d(const Handle(Geom_Axis2Placement)& A,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Axis2Placement3d)& Value() const;

View File

@@ -24,6 +24,7 @@
#include <GeomToStep_Root.hxx>
class Geom_BSplineCurve;
class Geom2d_BSplineCurve;
class StepData_Factors;
class StepGeom_BSplineCurveWithKnots;
@@ -40,10 +41,10 @@ public:
Standard_EXPORT GeomToStep_MakeBSplineCurveWithKnots(const Handle(Geom_BSplineCurve)& Bsplin,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeBSplineCurveWithKnots(const Handle(Geom2d_BSplineCurve)& Bsplin,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_BSplineCurveWithKnots)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve;
class Geom_BSplineCurve;
class Geom2d_BSplineCurve;
@@ -41,10 +42,10 @@ public:
Standard_EXPORT GeomToStep_MakeBSplineCurveWithKnotsAndRationalBSplineCurve(const Handle(Geom_BSplineCurve)& Bsplin,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeBSplineCurveWithKnotsAndRationalBSplineCurve(const Handle(Geom2d_BSplineCurve)& Bsplin,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve)& Value() const;

View File

@@ -22,6 +22,7 @@
#include <Standard_Handle.hxx>
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_BSplineSurfaceWithKnots;
class Geom_BSplineSurface;
@@ -39,7 +40,7 @@ public:
Standard_EXPORT GeomToStep_MakeBSplineSurfaceWithKnots(const Handle(Geom_BSplineSurface)& Bsplin,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_BSplineSurfaceWithKnots)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_BSplineSurfaceWithKnotsAndRationalBSplineSurface;
class Geom_BSplineSurface;
@@ -40,7 +41,7 @@ public:
Standard_EXPORT GeomToStep_MakeBSplineSurfaceWithKnotsAndRationalBSplineSurface(const Handle(Geom_BSplineSurface)& Bsplin,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_BSplineSurfaceWithKnotsAndRationalBSplineSurface)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_BoundedCurve;
class Geom_BoundedCurve;
class Geom2d_BoundedCurve;
@@ -41,10 +42,10 @@ public:
Standard_EXPORT GeomToStep_MakeBoundedCurve(const Handle(Geom_BoundedCurve)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeBoundedCurve(const Handle(Geom2d_BoundedCurve)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_BoundedCurve)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_BoundedSurface;
class Geom_BoundedSurface;
@@ -40,7 +41,7 @@ public:
Standard_EXPORT GeomToStep_MakeBoundedSurface(const Handle(Geom_BoundedSurface)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_BoundedSurface)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_Circle;
class gp_Circ;
class Geom_Circle;
@@ -41,13 +42,13 @@ public:
Standard_EXPORT GeomToStep_MakeCircle(const gp_Circ& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeCircle(const Handle(Geom_Circle)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeCircle(const Handle(Geom2d_Circle)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Circle)& Value() const;

View File

@@ -25,6 +25,7 @@
class StepGeom_Conic;
class Geom_Conic;
class Geom2d_Conic;
class StepData_Factors;
//! This class implements the mapping between classes
@@ -39,10 +40,10 @@ public:
Standard_EXPORT GeomToStep_MakeConic(const Handle(Geom_Conic)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeConic(const Handle(Geom2d_Conic)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Conic)& Value() const;

View File

@@ -24,6 +24,7 @@
#include <GeomToStep_Root.hxx>
class StepGeom_ConicalSurface;
class Geom_ConicalSurface;
class StepData_Factors;
//! This class implements the mapping between class
@@ -38,7 +39,7 @@ public:
Standard_EXPORT GeomToStep_MakeConicalSurface(const Handle(Geom_ConicalSurface)& CSurf,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_ConicalSurface)& Value() const;

View File

@@ -22,6 +22,7 @@
#include <Standard_Handle.hxx>
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_Curve;
class Geom_Curve;
class Geom2d_Curve;
@@ -39,10 +40,10 @@ public:
Standard_EXPORT GeomToStep_MakeCurve(const Handle(Geom_Curve)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeCurve(const Handle(Geom2d_Curve)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Curve)& Value() const;

View File

@@ -24,6 +24,7 @@
#include <GeomToStep_Root.hxx>
class StepGeom_CylindricalSurface;
class Geom_CylindricalSurface;
class StepData_Factors;
//! This class implements the mapping between class
@@ -38,7 +39,7 @@ public:
Standard_EXPORT GeomToStep_MakeCylindricalSurface(const Handle(Geom_CylindricalSurface)& CSurf,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_CylindricalSurface)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_ElementarySurface;
class Geom_ElementarySurface;
@@ -40,7 +41,7 @@ public:
Standard_EXPORT GeomToStep_MakeElementarySurface(const Handle(Geom_ElementarySurface)& S,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_ElementarySurface)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_Ellipse;
class gp_Elips;
class Geom_Ellipse;
@@ -41,13 +42,13 @@ public:
Standard_EXPORT GeomToStep_MakeEllipse(const gp_Elips& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeEllipse(const Handle(Geom_Ellipse)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeEllipse(const Handle(Geom2d_Ellipse)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Ellipse)& Value() const;

View File

@@ -38,10 +38,10 @@ public:
Standard_EXPORT GeomToStep_MakeHyperbola(const Handle(Geom2d_Hyperbola)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeHyperbola(const Handle(Geom_Hyperbola)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Hyperbola)& Value() const;

View File

@@ -22,6 +22,7 @@
#include <Standard_Handle.hxx>
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_Line;
class gp_Lin;
class gp_Lin2d;
@@ -41,16 +42,16 @@ public:
Standard_EXPORT GeomToStep_MakeLine(const gp_Lin& L,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeLine(const gp_Lin2d& L,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeLine(const Handle(Geom_Line)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeLine(const Handle(Geom2d_Line)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Line)& Value() const;

View File

@@ -25,6 +25,7 @@
class StepGeom_Parabola;
class Geom2d_Parabola;
class Geom_Parabola;
class StepData_Factors;
//! This class implements the mapping between the class
@@ -38,10 +39,10 @@ public:
Standard_EXPORT GeomToStep_MakeParabola(const Handle(Geom2d_Parabola)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeParabola(const Handle(Geom_Parabola)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Parabola)& Value() const;

View File

@@ -22,6 +22,7 @@
#include <Standard_Handle.hxx>
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_Plane;
class gp_Pln;
class Geom_Plane;
@@ -39,10 +40,10 @@ public:
Standard_EXPORT GeomToStep_MakePlane(const gp_Pln& P,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakePlane(const Handle(Geom_Plane)& P,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Plane)& Value() const;

View File

@@ -25,6 +25,7 @@
#include <TColgp_Array1OfPnt.hxx>
#include <TColgp_Array1OfPnt2d.hxx>
class StepData_Factors;
class StepGeom_Polyline;
@@ -38,10 +39,10 @@ public:
Standard_EXPORT GeomToStep_MakePolyline(const TColgp_Array1OfPnt& P,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakePolyline(const TColgp_Array1OfPnt2d& P,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Polyline)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_RectangularTrimmedSurface;
class Geom_RectangularTrimmedSurface;
@@ -40,7 +41,7 @@ public:
Standard_EXPORT GeomToStep_MakeRectangularTrimmedSurface(const Handle(Geom_RectangularTrimmedSurface)& RTSurf,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_RectangularTrimmedSurface)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_SphericalSurface;
class Geom_SphericalSurface;
@@ -39,7 +40,7 @@ public:
Standard_EXPORT GeomToStep_MakeSphericalSurface(const Handle(Geom_SphericalSurface)& CSurf,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_SphericalSurface)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_Surface;
class Geom_Surface;
@@ -39,7 +40,7 @@ public:
Standard_EXPORT GeomToStep_MakeSurface(const Handle(Geom_Surface)& C,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Surface)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_SurfaceOfLinearExtrusion;
class Geom_SurfaceOfLinearExtrusion;
@@ -39,7 +40,7 @@ public:
Standard_EXPORT GeomToStep_MakeSurfaceOfLinearExtrusion(const Handle(Geom_SurfaceOfLinearExtrusion)& CSurf,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_SurfaceOfLinearExtrusion)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_SurfaceOfRevolution;
class Geom_SurfaceOfRevolution;
@@ -39,7 +40,7 @@ public:
Standard_EXPORT GeomToStep_MakeSurfaceOfRevolution(const Handle(Geom_SurfaceOfRevolution)& RevSurf,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_SurfaceOfRevolution)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_SweptSurface;
class Geom_SweptSurface;
@@ -40,7 +41,7 @@ public:
Standard_EXPORT GeomToStep_MakeSweptSurface(const Handle(Geom_SweptSurface)& S,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_SweptSurface)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_ToroidalSurface;
class Geom_ToroidalSurface;
@@ -39,7 +40,7 @@ public:
Standard_EXPORT GeomToStep_MakeToroidalSurface(const Handle(Geom_ToroidalSurface)& TorSurf,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_ToroidalSurface)& Value() const;

View File

@@ -23,6 +23,7 @@
#include <GeomToStep_Root.hxx>
class StepData_Factors;
class StepGeom_Vector;
class gp_Vec;
class gp_Vec2d;
@@ -42,16 +43,16 @@ public:
Standard_EXPORT GeomToStep_MakeVector(const gp_Vec& V,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeVector(const gp_Vec2d& V,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeVector(const Handle(Geom_Vector)& V,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT GeomToStep_MakeVector(const Handle(Geom2d_Vector)& V,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT const Handle(StepGeom_Vector)& Value() const;

View File

@@ -20,7 +20,6 @@
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <StepData_Factors.hxx>
#include <Standard_Boolean.hxx>

View File

@@ -101,11 +101,10 @@ void GeomTools::GetReal(Standard_IStream& IS,Standard_Real& theValue)
theValue = 0.;
if (IS.eof())
return;
// According IEEE-754 Specification and standard stream parameters
// the most optimal buffer length is 25
char buffer[25];
char buffer[256];
buffer[0] = '\0';
std::streamsize anOldWide = IS.width(25);
std::streamsize anOldWide = IS.width(256);
IS >> buffer;
IS.width(anOldWide);
theValue = Strtod(buffer, NULL);

View File

@@ -22,7 +22,6 @@ enum Graphic3d_BufferType
Graphic3d_BT_Depth, //!< depth buffer
Graphic3d_BT_RGB_RayTraceHdrLeft, //!< left view HDR color buffer for Ray-Tracing
Graphic3d_BT_Red, //!< color buffer, red channel
Graphic3d_BT_ShadowMap, //!< buffer with shadow map
};
#endif // _Graphic3d_BufferType_H__

View File

@@ -42,9 +42,6 @@ Graphic3d_CView::Graphic3d_CView (const Handle(Graphic3d_StructureManager)& theM
myBackfacing (Graphic3d_TypeOfBackfacingModel_Auto),
myVisualization (Graphic3d_TOV_WIREFRAME),
//
myZLayerTarget (Graphic3d_ZLayerId_BotOSD),
myZLayerRedrawMode (Standard_False),
//
myBgColor (Quantity_NOC_BLACK),
myBackgroundType (Graphic3d_TOB_NONE),
myToUpdateSkydome (Standard_False),

View File

@@ -112,18 +112,6 @@ public:
//! Sets visualization type of the view.
void SetVisualizationType (const Graphic3d_TypeOfVisualization theType) { myVisualization = theType; }
//! Returns ZLayerId target
Graphic3d_ZLayerId ZLayerTarget() const { return myZLayerTarget; }
//! Sets ZLayerId target.
void SetZLayerTarget (const Graphic3d_ZLayerId theTarget) { myZLayerTarget = theTarget; }
//! Returns ZLayerId redraw mode
Standard_Boolean ZLayerRedrawMode() const { return myZLayerRedrawMode; }
//! Sets ZLayerId redraw mode.
void SetZLayerRedrawMode (const Standard_Boolean theMode) { myZLayerRedrawMode = theMode; }
//! Switches computed HLR mode in the view
Standard_EXPORT void SetComputedMode (const Standard_Boolean theMode);
@@ -270,11 +258,6 @@ public:
//! Dump active rendering buffer into specified memory buffer.
virtual Standard_Boolean BufferDump (Image_PixMap& theImage, const Graphic3d_BufferType& theBufferType) = 0;
//! Dumps the graphical contents of a shadowmap framebuffer into an image.
//! @param theImage the image to store the shadow map.
//! @param theLightName [in] name of the light used to generate the shadow map.
virtual Standard_Boolean ShadowMapDump (Image_PixMap& theImage, const TCollection_AsciiString& theLightName) = 0;
//! Marks BVH tree and the set of BVH primitives of correspondent priority list with id theLayerId as outdated.
virtual void InvalidateBVHData (const Graphic3d_ZLayerId theLayerId) = 0;
@@ -665,9 +648,6 @@ protected:
Graphic3d_TypeOfBackfacingModel myBackfacing;
Graphic3d_TypeOfVisualization myVisualization;
Graphic3d_ZLayerId myZLayerTarget; //!< ZLayerId for redrawing the content of specific zlayers.
Standard_Boolean myZLayerRedrawMode; //!< If true redraws single layer, otherwise redraws group of layers.
Quantity_ColorRGBA myBgColor;
Handle(Graphic3d_TextureMap) myBackgroundImage;
Handle(Graphic3d_CubeMap) myCubeMapBackground; //!< Cubemap displayed at background

View File

@@ -309,10 +309,6 @@ void Graphic3d_Camera::SetUp (const gp_Dir& theUp)
// =======================================================================
void Graphic3d_Camera::SetAxialScale (const gp_XYZ& theAxialScale)
{
Standard_OutOfRange_Raise_if (theAxialScale.X() <= 0.0
|| theAxialScale.Y() <= 0.0
|| theAxialScale.Z() <= 0.0,
"Graphic3d_Camera::SetAxialScale, bad coefficient");
if (AxialScale().IsEqual (theAxialScale, 0.0))
{
return;

View File

@@ -25,18 +25,8 @@ enum Graphic3d_TransModeFlags
Graphic3d_TMF_TriedronPers = 0x0020, //!< object behaves like trihedron - it is fixed at the corner of view and does not resizing (but rotating)
Graphic3d_TMF_2d = 0x0040, //!< object is defined in 2D screen coordinates (pixels) and does not resize, pan and rotate
Graphic3d_TMF_CameraPers = 0x0080, //!< object is in front of the camera
Graphic3d_TMF_OrthoPers = 0x0100, //!< object is forced to be rendered with orthographic projection.
Graphic3d_TMF_AxialScalePers = 0x0200, //!< object does not resize with axial scale
Graphic3d_TMF_ZoomRotatePers = Graphic3d_TMF_ZoomPers
| Graphic3d_TMF_RotatePers, //!< object doesn't resize and rotate
Graphic3d_TMF_AxialZoomPers = Graphic3d_TMF_ZoomPers
| Graphic3d_TMF_AxialScalePers //!< object does not visually resize with either object or axial scale
| Graphic3d_TMF_RotatePers //!< object doesn't resize and rotate
};
//! Bitwise OR operator for transform persistence mode flags. Be aware that some flags combinations are not valid.
inline Graphic3d_TransModeFlags operator| (Graphic3d_TransModeFlags a, Graphic3d_TransModeFlags b)
{
return static_cast<Graphic3d_TransModeFlags> (static_cast<uint32_t> (a) | static_cast<uint32_t> (b));
}
#endif

View File

@@ -40,9 +40,6 @@ DEFINE_STANDARD_HANDLE(Graphic3d_TransformPers, Standard_Transient)
//! Beware that Graphic3d_RenderingParams::ResolutionRatio() will be ignored!
//! For other Persistence flags, normal (world) length units will apply.
//!
//! Graphic3d_TMF_AxialPers and Graphic3d_TMF_AxialZoomPers defines persistence in the axial scale,
//! i.e., keeps the object visual coherence when the camera's axial scale is changed.
//! Meant to be used by objects such as Manipulators and trihedrons.
//! WARNING: Graphic3d_TMF_None is not permitted for defining instance of this class - NULL handle should be used for this purpose!
class Graphic3d_TransformPers : public Standard_Transient
{
@@ -61,25 +58,13 @@ public:
return (theMode & (Graphic3d_TMF_TriedronPers | Graphic3d_TMF_2d)) != 0;
}
//! Return true if specified mode is orthographic projection transformation persistence.
static Standard_Boolean IsOrthoPers (Graphic3d_TransModeFlags theMode)
{
return (theMode & Graphic3d_TMF_OrthoPers) != 0;
}
//! Return true if specified mode is axial transformation persistence.
static Standard_Boolean IsAxial (Graphic3d_TransModeFlags theMode)
{
return (theMode & Graphic3d_TMF_AxialScalePers) != 0;
}
public:
//! Set transformation persistence.
Graphic3d_TransformPers (const Graphic3d_TransModeFlags theMode)
: myMode (theMode)
{
if (IsZoomOrRotate (theMode) || IsAxial (theMode))
if (IsZoomOrRotate (theMode))
{
SetPersistence (theMode, gp_Pnt(0.0, 0.0, 0.0));
}
@@ -125,12 +110,6 @@ public:
//! Return true for Graphic3d_TMF_TriedronPers and Graphic3d_TMF_2d modes.
Standard_Boolean IsTrihedronOr2d() const { return IsTrihedronOr2d (myMode); }
//! Return true for Graphic3d_TMF_OrthoPers mode.
Standard_Boolean IsOrthoPers () const { return IsOrthoPers (myMode); }
//! Return true for Graphic3d_TMF_AxialScalePers modes.
Standard_Boolean IsAxial() const { return IsAxial (myMode); }
//! Transformation persistence mode flags.
Graphic3d_TransModeFlags Mode() const { return myMode; }
@@ -142,7 +121,7 @@ public:
void SetPersistence (const Graphic3d_TransModeFlags theMode,
const gp_Pnt& thePnt)
{
if (!IsZoomOrRotate (theMode) && !IsAxial (theMode))
if (!IsZoomOrRotate (theMode))
{
throw Standard_ProgramError("Graphic3d_TransformPers::SetPersistence(), wrong persistence mode.");
}
@@ -175,7 +154,7 @@ public:
//! Return the anchor point for zoom/rotate transformation persistence.
gp_Pnt AnchorPoint() const
{
if (!IsZoomOrRotate() && !IsAxial())
if (!IsZoomOrRotate())
{
throw Standard_ProgramError("Graphic3d_TransformPers::AnchorPoint(), wrong persistence mode.");
}
@@ -186,7 +165,7 @@ public:
//! Set the anchor point for zoom/rotate transformation persistence.
void SetAnchorPoint (const gp_Pnt& thePnt)
{
if (!IsZoomOrRotate() && !IsAxial())
if (!IsZoomOrRotate())
{
throw Standard_ProgramError("Graphic3d_TransformPers::SetAnchorPoint(), wrong persistence mode.");
}
@@ -318,189 +297,28 @@ public:
//! @param theWorldView [in] the world view transformation matrix.
//! @param theViewportWidth [in] the width of viewport (for 2d persistence).
//! @param theViewportHeight [in] the height of viewport (for 2d persistence).
//! @param theToApplyProjPers [in] if should apply projection persistence to matrix (for orthographic persistence).
//! @return transformation matrix to be applied to model world transformation of an object.
template<class T>
NCollection_Mat4<T> Compute (const Handle(Graphic3d_Camera)& theCamera,
const NCollection_Mat4<T>& theProjection,
const NCollection_Mat4<T>& theWorldView,
const Standard_Integer theViewportWidth,
const Standard_Integer theViewportHeight,
const Standard_Boolean theToApplyProjPers = false) const;
const Standard_Integer theViewportHeight) const;
//! Apply transformation persistence on specified matrices.
//! @param theCamera [in] camera definition
//! @param theProjection [in] projection matrix to modify
//! @param theWorldView [in/out] world-view matrix to modify
//! @param theViewportWidth [in] viewport width
//! @param theViewportHeight [in] viewport height
//! @param theAnchor [in] if not NULL, overrides anchor point
//! @param theToApplyProjPers [in] if should apply projection persistence to matrix (for orthographic persistence).
//! @param theCamera camera definition
//! @param theProjection projection matrix to modify
//! @param theWorldView world-view matrix to modify
//! @param theViewportWidth viewport width
//! @param theViewportHeight viewport height
//! @param theAnchor if not NULL, overrides anchor point
template<class T>
void Apply (const Handle(Graphic3d_Camera)& theCamera,
const NCollection_Mat4<T>& theProjection,
NCollection_Mat4<T>& theWorldView,
const Standard_Integer theViewportWidth,
const Standard_Integer theViewportHeight,
const gp_Pnt* theAnchor = NULL,
const Standard_Boolean theToApplyProjPers = true) const;
//! Perform computations for applying transformation persistence on specified matrices.
//! @param theCamera [in] camera definition
//! @param theViewportWidth [in] viewport width
//! @param theViewportHeight [in] viewport height
//! @param theAnchor [in] if not NULL, overrides anchor point
virtual NCollection_Mat4<Standard_Real> ComputeApply (Handle(Graphic3d_Camera)& theCamera,
const Standard_Integer theViewportWidth,
const Standard_Integer theViewportHeight,
const gp_Pnt* theAnchor = NULL) const
{
(void)theViewportWidth;
Handle(Graphic3d_Camera) aProxyCamera = theCamera;
if (IsOrthoPers() && !aProxyCamera->IsOrthographic())
{
aProxyCamera = new Graphic3d_Camera(*theCamera); // If OrthoPers, copy camera and set to orthographic projection
aProxyCamera->SetProjectionType (Graphic3d_Camera::Projection_Orthographic);
}
NCollection_Mat4<Standard_Real> aWorldView = aProxyCamera->OrientationMatrix();
// use total size when tiling is active
const Standard_Integer aVPSizeY = aProxyCamera->Tile().IsValid() ? aProxyCamera->Tile().TotalSize.y() : theViewportHeight;
// a small enough jitter compensation offset
// to avoid image dragging within single pixel in corner cases
const Standard_Real aJitterComp = 0.001;
if ((myMode & Graphic3d_TMF_TriedronPers) != 0)
{
// reset Z focus for trihedron persistence
const Standard_Real aFocus = aProxyCamera->IsOrthographic()
? aProxyCamera->Distance()
: (aProxyCamera->ZFocusType() == Graphic3d_Camera::FocusType_Relative
? Standard_Real(aProxyCamera->ZFocus() * aProxyCamera->Distance())
: Standard_Real(aProxyCamera->ZFocus()));
// scale factor to pixels
const gp_XYZ aViewDim = aProxyCamera->ViewDimensions (aFocus);
const Standard_Real aScale = Abs(aViewDim.Y()) / Standard_Real(aVPSizeY);
const gp_Dir aForward = aProxyCamera->Direction();
gp_XYZ aCenter = aProxyCamera->Center().XYZ() + aForward.XYZ() * (aFocus - aProxyCamera->Distance());
if ((myParams.Params2d.Corner & (Aspect_TOTP_LEFT | Aspect_TOTP_RIGHT)) != 0)
{
const Standard_Real anOffsetX = (Standard_Real(myParams.Params2d.OffsetX) + aJitterComp) * aScale;
const gp_Dir aSide = aForward.Crossed (aProxyCamera->Up());
const gp_XYZ aDeltaX = aSide.XYZ() * (Abs(aViewDim.X()) * aProxyCamera->NDC2dOffsetX() - anOffsetX);
if ((myParams.Params2d.Corner & Aspect_TOTP_RIGHT) != 0)
{
aCenter += aDeltaX;
}
else
{
aCenter -= aDeltaX;
}
}
if ((myParams.Params2d.Corner & (Aspect_TOTP_TOP | Aspect_TOTP_BOTTOM)) != 0)
{
const Standard_Real anOffsetY = (Standard_Real(myParams.Params2d.OffsetY) + aJitterComp) * aScale;
const gp_XYZ aDeltaY = aProxyCamera->Up().XYZ() * (Abs(aViewDim.Y()) * aProxyCamera->NDC2dOffsetY() - anOffsetY);
if ((myParams.Params2d.Corner & Aspect_TOTP_TOP) != 0)
{
aCenter += aDeltaY;
}
else
{
aCenter -= aDeltaY;
}
}
Graphic3d_TransformUtils::Scale (aWorldView,
1.0 / theCamera->AxialScale().X(),
1.0 / theCamera->AxialScale().Y(),
1.0 / theCamera->AxialScale().Z());
Graphic3d_TransformUtils::Translate (aWorldView, aCenter.X(), aCenter.Y(), aCenter.Z());
Graphic3d_TransformUtils::Scale (aWorldView, aScale, aScale, aScale);
}
else if ((myMode & Graphic3d_TMF_2d) != 0)
{
const Standard_Real aFocus = aProxyCamera->IsOrthographic()
? aProxyCamera->Distance()
: (aProxyCamera->ZFocusType() == Graphic3d_Camera::FocusType_Relative
? Standard_Real(aProxyCamera->ZFocus() * aProxyCamera->Distance())
: Standard_Real(aProxyCamera->ZFocus()));
// scale factor to pixels
const gp_XYZ aViewDim = aProxyCamera->ViewDimensions (aFocus);
const Standard_Real aScale = Abs(aViewDim.Y()) / Standard_Real(aVPSizeY);
gp_XYZ aCenter (0.0, 0.0, -aFocus);
if ((myParams.Params2d.Corner & (Aspect_TOTP_LEFT | Aspect_TOTP_RIGHT)) != 0)
{
aCenter.SetX (-aViewDim.X() * aProxyCamera->NDC2dOffsetX() + (Standard_Real(myParams.Params2d.OffsetX) + aJitterComp) * aScale);
if ((myParams.Params2d.Corner & Aspect_TOTP_RIGHT) != 0)
{
aCenter.SetX (-aCenter.X());
}
}
if ((myParams.Params2d.Corner & (Aspect_TOTP_TOP | Aspect_TOTP_BOTTOM)) != 0)
{
aCenter.SetY (-aViewDim.Y() * aProxyCamera->NDC2dOffsetY() + (Standard_Real(myParams.Params2d.OffsetY) + aJitterComp) * aScale);
if ((myParams.Params2d.Corner & Aspect_TOTP_TOP) != 0)
{
aCenter.SetY (-aCenter.Y());
}
}
aWorldView.InitIdentity();
Graphic3d_TransformUtils::Translate (aWorldView, aCenter.X(), aCenter.Y(), aCenter.Z());
Graphic3d_TransformUtils::Scale (aWorldView, aScale, aScale, aScale);
}
else if ((myMode & Graphic3d_TMF_CameraPers) != 0)
{
aWorldView.InitIdentity();
}
else
{
// Compute reference point for transformation in untransformed projection space.
if (theAnchor != NULL)
{
Graphic3d_TransformUtils::Translate (aWorldView, theAnchor->X(), theAnchor->Y(), theAnchor->Z());
}
else
{
Graphic3d_TransformUtils::Translate (aWorldView, myParams.Params3d.PntX, myParams.Params3d.PntY, myParams.Params3d.PntZ);
}
if ((myMode & Graphic3d_TMF_RotatePers) != 0)
{
NCollection_Mat3<Standard_Real> aRotMat = persistentRotationMatrix (theCamera, theViewportWidth, theViewportHeight);
aWorldView.SetValue (0, 0, aRotMat.GetColumn (0).x());
aWorldView.SetValue (1, 0, aRotMat.GetColumn (0).y());
aWorldView.SetValue (2, 0, aRotMat.GetColumn (0).z());
aWorldView.SetValue (0, 1, aRotMat.GetColumn (1).x());
aWorldView.SetValue (1, 1, aRotMat.GetColumn (1).y());
aWorldView.SetValue (2, 1, aRotMat.GetColumn (1).z());
aWorldView.SetValue (0, 2, aRotMat.GetColumn (2).x());
aWorldView.SetValue (1, 2, aRotMat.GetColumn (2).y());
aWorldView.SetValue (2, 2, aRotMat.GetColumn (2).z());
}
if (IsAxial())
{
Graphic3d_TransformUtils::Scale (aWorldView,
1.0 / theCamera->AxialScale().X(),
1.0 / theCamera->AxialScale().Y(),
1.0 / theCamera->AxialScale().Z());
}
if ((myMode & Graphic3d_TMF_ZoomPers) != 0)
{
// lock zooming
Standard_Real aScale = persistentScale (aProxyCamera, theViewportWidth, theViewportHeight);
Graphic3d_TransformUtils::Scale (aWorldView, aScale, aScale, aScale);
}
}
theCamera = aProxyCamera;
return aWorldView;
}
const gp_Pnt* theAnchor = NULL) const;
//! Dumps the content of me into the stream
Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
@@ -550,26 +368,147 @@ void Graphic3d_TransformPers::Apply (const Handle(Graphic3d_Camera)& theCamera,
NCollection_Mat4<T>& theWorldView,
const Standard_Integer theViewportWidth,
const Standard_Integer theViewportHeight,
const gp_Pnt* theAnchor,
const Standard_Boolean theToApplyProjPers) const
const gp_Pnt* theAnchor) const
{
(void)theViewportWidth;
if (myMode == Graphic3d_TMF_None || theViewportHeight == 0)
(void )theViewportWidth;
(void )theProjection;
if (myMode == Graphic3d_TMF_None
|| theViewportHeight == 0)
{
return;
}
Handle(Graphic3d_Camera) aCamera = new Graphic3d_Camera(*theCamera);
NCollection_Mat4<Standard_Real> aWorldView = ComputeApply (aCamera, theViewportWidth, theViewportHeight, theAnchor);
// use total size when tiling is active
const Standard_Integer aVPSizeY = theCamera->Tile().IsValid() ? theCamera->Tile().TotalSize.y() : theViewportHeight;
if (!theCamera->IsOrthographic() && IsOrthoPers() && theToApplyProjPers)
// a small enough jitter compensation offset
// to avoid image dragging within single pixel in corner cases
const Standard_Real aJitterComp = 0.001;
if (myMode == Graphic3d_TMF_TriedronPers)
{
Graphic3d_Mat4d aProjInv;
aProjInv.ConvertFrom (theProjection.Inverted());
aWorldView = (aProjInv * aCamera->ProjectionMatrix()) * aWorldView;
// reset Z focus for trihedron persistence
const Standard_Real aFocus = theCamera->IsOrthographic()
? theCamera->Distance()
: (theCamera->ZFocusType() == Graphic3d_Camera::FocusType_Relative
? Standard_Real(theCamera->ZFocus() * theCamera->Distance())
: Standard_Real(theCamera->ZFocus()));
// scale factor to pixels
const gp_XYZ aViewDim = theCamera->ViewDimensions (aFocus);
const Standard_Real aScale = Abs(aViewDim.Y()) / Standard_Real(aVPSizeY);
const gp_Dir aForward = theCamera->Direction();
gp_XYZ aCenter = theCamera->Center().XYZ() + aForward.XYZ() * (aFocus - theCamera->Distance());
if ((myParams.Params2d.Corner & (Aspect_TOTP_LEFT | Aspect_TOTP_RIGHT)) != 0)
{
const Standard_Real anOffsetX = (Standard_Real(myParams.Params2d.OffsetX) + aJitterComp) * aScale;
const gp_Dir aSide = aForward.Crossed (theCamera->Up());
const gp_XYZ aDeltaX = aSide.XYZ() * (Abs(aViewDim.X()) * theCamera->NDC2dOffsetX() - anOffsetX);
if ((myParams.Params2d.Corner & Aspect_TOTP_RIGHT) != 0)
{
aCenter += aDeltaX;
}
else
{
aCenter -= aDeltaX;
}
}
if ((myParams.Params2d.Corner & (Aspect_TOTP_TOP | Aspect_TOTP_BOTTOM)) != 0)
{
const Standard_Real anOffsetY = (Standard_Real(myParams.Params2d.OffsetY) + aJitterComp) * aScale;
const gp_XYZ aDeltaY = theCamera->Up().XYZ() * (Abs(aViewDim.Y()) * theCamera->NDC2dOffsetY() - anOffsetY);
if ((myParams.Params2d.Corner & Aspect_TOTP_TOP) != 0)
{
aCenter += aDeltaY;
}
else
{
aCenter -= aDeltaY;
}
}
NCollection_Mat4<Standard_Real> aWorldView = theCamera->OrientationMatrix();
Graphic3d_TransformUtils::Translate (aWorldView, aCenter.X(), aCenter.Y(), aCenter.Z());
Graphic3d_TransformUtils::Scale (aWorldView, aScale, aScale, aScale);
theWorldView.ConvertFrom (aWorldView);
return;
}
else if (myMode == Graphic3d_TMF_2d)
{
const Standard_Real aFocus = theCamera->IsOrthographic()
? theCamera->Distance()
: (theCamera->ZFocusType() == Graphic3d_Camera::FocusType_Relative
? Standard_Real(theCamera->ZFocus() * theCamera->Distance())
: Standard_Real(theCamera->ZFocus()));
// scale factor to pixels
const gp_XYZ aViewDim = theCamera->ViewDimensions (aFocus);
const Standard_Real aScale = Abs(aViewDim.Y()) / Standard_Real(aVPSizeY);
gp_XYZ aCenter (0.0, 0.0, -aFocus);
if ((myParams.Params2d.Corner & (Aspect_TOTP_LEFT | Aspect_TOTP_RIGHT)) != 0)
{
aCenter.SetX (-aViewDim.X() * theCamera->NDC2dOffsetX() + (Standard_Real(myParams.Params2d.OffsetX) + aJitterComp) * aScale);
if ((myParams.Params2d.Corner & Aspect_TOTP_RIGHT) != 0)
{
aCenter.SetX (-aCenter.X());
}
}
if ((myParams.Params2d.Corner & (Aspect_TOTP_TOP | Aspect_TOTP_BOTTOM)) != 0)
{
aCenter.SetY (-aViewDim.Y() * theCamera->NDC2dOffsetY() + (Standard_Real(myParams.Params2d.OffsetY) + aJitterComp) * aScale);
if ((myParams.Params2d.Corner & Aspect_TOTP_TOP) != 0)
{
aCenter.SetY (-aCenter.Y());
}
}
theWorldView.InitIdentity();
Graphic3d_TransformUtils::Translate (theWorldView, T(aCenter.X()), T(aCenter.Y()), T(aCenter.Z()));
Graphic3d_TransformUtils::Scale (theWorldView, T(aScale), T(aScale), T(aScale));
return;
}
else if ((myMode & Graphic3d_TMF_CameraPers) != 0)
{
theWorldView.InitIdentity();
}
else
{
// Compute reference point for transformation in untransformed projection space.
NCollection_Mat4<Standard_Real> aWorldView = theCamera->OrientationMatrix();
if (theAnchor != NULL)
{
Graphic3d_TransformUtils::Translate (aWorldView, theAnchor->X(), theAnchor->Y(), theAnchor->Z());
}
else
{
Graphic3d_TransformUtils::Translate (aWorldView, myParams.Params3d.PntX, myParams.Params3d.PntY, myParams.Params3d.PntZ);
}
if ((myMode & Graphic3d_TMF_RotatePers) != 0)
{
NCollection_Mat3<Standard_Real> aRotMat = persistentRotationMatrix (theCamera, theViewportWidth, theViewportHeight);
aWorldView.SetValue (0, 0, aRotMat.GetColumn (0).x());
aWorldView.SetValue (1, 0, aRotMat.GetColumn (0).y());
aWorldView.SetValue (2, 0, aRotMat.GetColumn (0).z());
aWorldView.SetValue (0, 1, aRotMat.GetColumn (1).x());
aWorldView.SetValue (1, 1, aRotMat.GetColumn (1).y());
aWorldView.SetValue (2, 1, aRotMat.GetColumn (1).z());
aWorldView.SetValue (0, 2, aRotMat.GetColumn (2).x());
aWorldView.SetValue (1, 2, aRotMat.GetColumn (2).y());
aWorldView.SetValue (2, 2, aRotMat.GetColumn (2).z());
}
if ((myMode & Graphic3d_TMF_ZoomPers) != 0)
{
// lock zooming
Standard_Real aScale = persistentScale (theCamera, theViewportWidth, theViewportHeight);
Graphic3d_TransformUtils::Scale (aWorldView, aScale, aScale, aScale);
}
theWorldView.ConvertFrom (aWorldView);
return;
}
}
// =======================================================================
@@ -616,7 +555,7 @@ void Graphic3d_TransformPers::Apply (const Handle(Graphic3d_Camera)& theCamera,
const Standard_Integer theViewportHeight,
BVH_Box<T, 3>& theBoundingBox) const
{
NCollection_Mat4<T> aTPers = Compute (theCamera, theProjection, theWorldView, theViewportWidth, theViewportHeight, false);
NCollection_Mat4<T> aTPers = Compute (theCamera, theProjection, theWorldView, theViewportWidth, theViewportHeight);
if (aTPers.IsIdentity()
|| !theBoundingBox.IsValid())
{
@@ -655,8 +594,7 @@ NCollection_Mat4<T> Graphic3d_TransformPers::Compute (const Handle(Graphic3d_Cam
const NCollection_Mat4<T>& theProjection,
const NCollection_Mat4<T>& theWorldView,
const Standard_Integer theViewportWidth,
const Standard_Integer theViewportHeight,
const Standard_Boolean theToApplyProjPers) const
const Standard_Integer theViewportHeight) const
{
if (myMode == Graphic3d_TMF_None)
{
@@ -672,7 +610,7 @@ NCollection_Mat4<T> Graphic3d_TransformPers::Compute (const Handle(Graphic3d_Cam
// compute only world-view matrix difference to avoid floating point instability
// caused by projection matrix modifications outside of this algorithm (e.g. by Z-fit)
Apply (theCamera, theProjection, aWorldView, theViewportWidth, theViewportHeight, NULL, theToApplyProjPers);
Apply (theCamera, theProjection, aWorldView, theViewportWidth, theViewportHeight);
return anUnviewMat * aWorldView;
}

View File

@@ -978,7 +978,7 @@ Standard_Boolean OpenGl_FrameBuffer::BufferDump (const Handle(OpenGl_Context)& t
return false;
}
aFormat = theBufferType == Graphic3d_BT_Depth || theBufferType == Graphic3d_BT_ShadowMap ? GL_DEPTH_COMPONENT : GL_RED;
aFormat = theBufferType == Graphic3d_BT_Depth ? GL_DEPTH_COMPONENT : GL_RED;
aType = GL_UNSIGNED_BYTE;
break;
}
@@ -989,7 +989,7 @@ Standard_Boolean OpenGl_FrameBuffer::BufferDump (const Handle(OpenGl_Context)& t
return false;
}
aFormat = theBufferType == Graphic3d_BT_Depth || theBufferType == Graphic3d_BT_ShadowMap ? GL_DEPTH_COMPONENT : GL_RED;
aFormat = theBufferType == Graphic3d_BT_Depth ? GL_DEPTH_COMPONENT : GL_RED;
aType = GL_UNSIGNED_SHORT;
break;
}
@@ -1000,7 +1000,7 @@ Standard_Boolean OpenGl_FrameBuffer::BufferDump (const Handle(OpenGl_Context)& t
return false;
}
aFormat = theBufferType == Graphic3d_BT_Depth || theBufferType == Graphic3d_BT_ShadowMap ? GL_DEPTH_COMPONENT : GL_RED;
aFormat = theBufferType == Graphic3d_BT_Depth ? GL_DEPTH_COMPONENT : GL_RED;
aType = GL_FLOAT;
break;
}
@@ -1113,7 +1113,7 @@ Standard_Boolean OpenGl_FrameBuffer::BufferDump (const Handle(OpenGl_Context)& t
GLint aReadBufferPrev = GL_BACK;
if (theGlCtx->GraphicsLibrary() != Aspect_GraphicsLibrary_OpenGLES
&& (theBufferType == Graphic3d_BT_Depth || theBufferType == Graphic3d_BT_ShadowMap)
&& theBufferType == Graphic3d_BT_Depth
&& aFormat != GL_DEPTH_COMPONENT)
{
return Standard_False;

View File

@@ -23,7 +23,6 @@ enum OpenGl_LayerFilter
OpenGl_LF_All, //!< process all layers
OpenGl_LF_Upper, //!< process only top non-raytracable layers
OpenGl_LF_Bottom, //!< process only Graphic3d_ZLayerId_BotOSD
OpenGl_LF_Single, //!< process single layer
OpenGl_LF_RayTracable //!< process only normal raytracable layers (save the bottom layer)
};

View File

@@ -58,12 +58,10 @@ namespace
//! Main constructor.
OpenGl_FilteredIndexedLayerIterator (const NCollection_List<Handle(Graphic3d_Layer)>& theSeq,
Standard_Boolean theToDrawImmediate,
OpenGl_LayerFilter theFilterMode,
Graphic3d_ZLayerId theLayersToProcess)
OpenGl_LayerFilter theLayersToProcess)
: myIter (theSeq),
myFilterMode (theFilterMode),
myToDrawImmediate (theToDrawImmediate),
myLayersToProcess (theLayersToProcess)
myLayersToProcess (theLayersToProcess),
myToDrawImmediate (theToDrawImmediate)
{
next();
}
@@ -96,16 +94,12 @@ namespace
continue;
}
switch (myFilterMode)
switch (myLayersToProcess)
{
case OpenGl_LF_All:
{
if (aLayer->LayerId() >= myLayersToProcess)
{
return;
}
break;
}
case OpenGl_LF_Upper:
{
if (aLayer->LayerId() != Graphic3d_ZLayerId_BotOSD
@@ -125,14 +119,6 @@ namespace
}
break;
}
case OpenGl_LF_Single:
{
if (aLayer->LayerId() == myLayersToProcess)
{
return;
}
break;
}
case OpenGl_LF_RayTracable:
{
if (aLayer->LayerSettings().IsRaytracable()
@@ -147,9 +133,8 @@ namespace
}
private:
OpenGl_IndexedLayerIterator myIter;
OpenGl_LayerFilter myFilterMode;
OpenGl_LayerFilter myLayersToProcess;
Standard_Boolean myToDrawImmediate;
Graphic3d_ZLayerId myLayersToProcess;
};
static const Standard_Integer THE_DRAW_BUFFERS0[] = { GL_COLOR_ATTACHMENT0 };
@@ -729,8 +714,7 @@ void OpenGl_LayerList::renderLayer (const Handle(OpenGl_Workspace)& theWorkspace
//=======================================================================
void OpenGl_LayerList::Render (const Handle(OpenGl_Workspace)& theWorkspace,
const Standard_Boolean theToDrawImmediate,
const OpenGl_LayerFilter theFilterMode,
const Graphic3d_ZLayerId theLayersToProcess,
const OpenGl_LayerFilter theLayersToProcess,
OpenGl_FrameBuffer* theReadDrawFbo,
OpenGl_FrameBuffer* theOitAccumFbo) const
{
@@ -766,7 +750,7 @@ void OpenGl_LayerList::Render (const Handle(OpenGl_Workspace)& theWorkspace,
&& !isShadowMapPass;
const Handle(Graphic3d_LightSet) aLightsBack = aCtx->ShaderManager()->LightSourceState().LightSources();
const Handle(OpenGl_ShadowMapArray) aShadowMaps = aCtx->ShaderManager()->LightSourceState().ShadowMaps();
for (OpenGl_FilteredIndexedLayerIterator aLayerIterStart (myLayers, theToDrawImmediate, theFilterMode, theLayersToProcess); aLayerIterStart.More();)
for (OpenGl_FilteredIndexedLayerIterator aLayerIterStart (myLayers, theToDrawImmediate, theLayersToProcess); aLayerIterStart.More();)
{
bool hasSkippedDepthLayers = false;
for (int aPassIter = toPerformDepthPrepass ? 0 : 2; aPassIter < 3; ++aPassIter)

View File

@@ -102,8 +102,7 @@ public:
//! Render this element
Standard_EXPORT void Render (const Handle(OpenGl_Workspace)& theWorkspace,
const Standard_Boolean theToDrawImmediate,
const OpenGl_LayerFilter theFilterMode,
const Graphic3d_ZLayerId theLayersToProcess,
const OpenGl_LayerFilter theLayersToProcess,
OpenGl_FrameBuffer* theReadDrawFbo,
OpenGl_FrameBuffer* theOitAccumFbo) const;

View File

@@ -520,12 +520,12 @@ Standard_Boolean OpenGl_View::BufferDump (Image_PixMap& theImage, const Graphic3
const Handle(OpenGl_Context)& aCtx = myWorkspace->GetGlContext();
if (theBufferType != Graphic3d_BT_RGB_RayTraceHdrLeft)
{
return myWorkspace->BufferDump (myFBO, theImage, theBufferType);
return myWorkspace->BufferDump(myFBO, theImage, theBufferType);
}
if (!myRaytraceParameters.AdaptiveScreenSampling)
{
return myWorkspace->BufferDump (myAccumFrames % 2 ? myRaytraceFBO2[0] : myRaytraceFBO1[0], theImage, theBufferType);
return myWorkspace->BufferDump(myAccumFrames % 2 ? myRaytraceFBO2[0] : myRaytraceFBO1[0], theImage, theBufferType);
}
if (aCtx->GraphicsLibrary() == Aspect_GraphicsLibrary_OpenGLES)
@@ -572,71 +572,6 @@ Standard_Boolean OpenGl_View::BufferDump (Image_PixMap& theImage, const Graphic3
return true;
}
//=======================================================================
//function : ShadowMapDump
//purpose :
//=======================================================================
Standard_Boolean OpenGl_View::ShadowMapDump (Image_PixMap& theImage, const TCollection_AsciiString& theLightName)
{
if (!myShadowMaps->IsValid())
{
return Standard_False;
}
const Handle(OpenGl_Context)& aGlCtx = myWorkspace->GetGlContext();
for (Standard_Integer aShadowIter = 0; aShadowIter < myShadowMaps->Size(); ++aShadowIter)
{
Handle(OpenGl_ShadowMap)& aShadow = myShadowMaps->ChangeValue(aShadowIter);
if (!aShadow.IsNull() && aShadow->LightSource()->Name() == theLightName)
{
const Handle(OpenGl_FrameBuffer)& aShadowFbo = aShadow->FrameBuffer();
if (aShadowFbo->GetVPSizeX() == myRenderParams.ShadowMapResolution)
{
if ((Standard_Integer)theImage.Width() != aShadowFbo->GetVPSizeX() || (Standard_Integer)theImage.Height() != aShadowFbo->GetVPSizeY())
{
theImage.InitZero(Image_Format_GrayF, aShadowFbo->GetVPSizeX(), aShadowFbo->GetVPSizeY());
}
GLint aReadBufferPrev = GL_BACK;
// Bind FBO if used.
if (!aShadowFbo.IsNull() && aShadowFbo->IsValid())
{
aShadowFbo->BindBuffer (aGlCtx);
}
else if (aGlCtx->GraphicsLibrary() != Aspect_GraphicsLibrary_OpenGLES)
{
aGlCtx->core11fwd->glGetIntegerv (GL_READ_BUFFER, &aReadBufferPrev);
GLint aDrawBufferPrev = GL_BACK;
aGlCtx->core11fwd->glGetIntegerv (GL_DRAW_BUFFER, &aDrawBufferPrev);
aGlCtx->core11fwd->glReadBuffer (aDrawBufferPrev);
}
// Setup alignment.
const GLint anAligment = Min (GLint(theImage.MaxRowAligmentBytes()), 8); // limit to 8 bytes for OpenGL.
aGlCtx->core11fwd->glPixelStorei (GL_PACK_ALIGNMENT, anAligment);
// Read data.
aGlCtx->core11fwd->glReadPixels (0, 0, GLsizei(theImage.SizeX()), GLsizei(theImage.SizeY()), GL_DEPTH_COMPONENT, GL_FLOAT, theImage.ChangeData());
aGlCtx->core11fwd->glPixelStorei (GL_PACK_ALIGNMENT, 1);
if (aGlCtx->hasPackRowLength)
{
aGlCtx->core11fwd->glPixelStorei (GL_PACK_ROW_LENGTH, 0);
}
// Unbind FBO.
if (!aShadowFbo.IsNull() && aShadowFbo->IsValid())
{
aShadowFbo->UnbindBuffer (aGlCtx);
}
else if (aGlCtx->GraphicsLibrary() != Aspect_GraphicsLibrary_OpenGLES)
{
aGlCtx->core11fwd->glReadBuffer (aReadBufferPrev);
}
// Check for errors.
const bool hasErrors = aGlCtx->ResetErrors (true);
return !hasErrors;
}
}
}
return Standard_False;
}
// =======================================================================
// function : GradientBackground
// purpose :
@@ -2648,7 +2583,7 @@ void OpenGl_View::renderStructs (Graphic3d_Camera::Projection theProjection,
if (aCtx->arbFBOBlit != NULL)
{
// Render bottom OSD layer
myZLayers.Render (myWorkspace, theToDrawImmediate, OpenGl_LF_Bottom, myZLayerTarget, theReadDrawFbo, theOitAccumFbo);
myZLayers.Render (myWorkspace, theToDrawImmediate, OpenGl_LF_Bottom, theReadDrawFbo, theOitAccumFbo);
const Standard_Integer aPrevFilter = myWorkspace->RenderFilter() & ~(Standard_Integer )(OpenGl_RenderFilter_NonRaytraceableOnly);
myWorkspace->SetRenderFilter (aPrevFilter | OpenGl_RenderFilter_NonRaytraceableOnly);
@@ -2664,7 +2599,7 @@ void OpenGl_View::renderStructs (Graphic3d_Camera::Projection theProjection,
}
// Render non-polygonal elements in default layer
myZLayers.Render (myWorkspace, theToDrawImmediate, OpenGl_LF_RayTracable, myZLayerTarget, theReadDrawFbo, theOitAccumFbo);
myZLayers.Render (myWorkspace, theToDrawImmediate, OpenGl_LF_RayTracable, theReadDrawFbo, theOitAccumFbo);
}
myWorkspace->SetRenderFilter (aPrevFilter);
}
@@ -2687,7 +2622,7 @@ void OpenGl_View::renderStructs (Graphic3d_Camera::Projection theProjection,
raytrace (aSizeXY.x(), aSizeXY.y(), theProjection, theReadDrawFbo, aCtx);
// Render upper (top and topmost) OpenGL layers
myZLayers.Render (myWorkspace, theToDrawImmediate, OpenGl_LF_Upper, myZLayerTarget, theReadDrawFbo, theOitAccumFbo);
myZLayers.Render (myWorkspace, theToDrawImmediate, OpenGl_LF_Upper, theReadDrawFbo, theOitAccumFbo);
}
}
@@ -2695,9 +2630,7 @@ void OpenGl_View::renderStructs (Graphic3d_Camera::Projection theProjection,
// mode or in case of ray-tracing failure
if (toRenderGL)
{
// check if only a single layer is to be dumped
OpenGl_LayerFilter aFilter = myZLayerRedrawMode ? OpenGl_LF_Single : OpenGl_LF_All;
myZLayers.Render (myWorkspace, theToDrawImmediate, aFilter, myZLayerTarget, theReadDrawFbo, theOitAccumFbo);
myZLayers.Render (myWorkspace, theToDrawImmediate, OpenGl_LF_All, theReadDrawFbo, theOitAccumFbo);
// Set flag that scene was redrawn by standard pipeline
myWasRedrawnGL = Standard_True;

View File

@@ -111,12 +111,6 @@ public:
Standard_EXPORT virtual Standard_Boolean BufferDump (Image_PixMap& theImage,
const Graphic3d_BufferType& theBufferType) Standard_OVERRIDE;
//! Dumps the graphical contents of a shadowmap framebuffer into an image.
//! @param theImage the image to store the shadow map.
//! @param theLightName [in] name of the light used to generate the shadow map.
Standard_EXPORT virtual Standard_Boolean ShadowMapDump (Image_PixMap& theImage,
const TCollection_AsciiString& theLightName) Standard_OVERRIDE;
//! Marks BVH tree and the set of BVH primitives of correspondent priority list with id theLayerId as outdated.
Standard_EXPORT virtual void InvalidateBVHData (const Graphic3d_ZLayerId theLayerId) Standard_OVERRIDE;

View File

@@ -383,16 +383,6 @@ Standard_Boolean RWMesh_CafReader::addShapeIntoDoc (CafDocumentTools& theTools,
return Standard_False;
}
if (toMakeAssembly)
{
TDF_Label aRefLabel;
theTools.ShapeTool->GetReferredShape(aNewLabel, aRefLabel);
if (!aRefLabel.IsNull())
{
theTools.OriginalShapeMap.Bind(theShape, aRefLabel);
}
}
// if new label is a reference get referred shape
TDF_Label aNewRefLabel = aNewLabel;
theTools.ShapeTool->GetReferredShape (aNewLabel, aNewRefLabel);

View File

@@ -57,7 +57,6 @@ public:
Handle(XCAFDoc_ColorTool) ColorTool;
Handle(XCAFDoc_VisMaterialTool) VisMaterialTool;
NCollection_DataMap<TopoDS_Shape, TDF_Label, TopTools_ShapeMapHasher> ComponentMap;
NCollection_DataMap<TopoDS_Shape, TDF_Label, TopTools_ShapeMapHasher> OriginalShapeMap;
};
public:

View File

@@ -98,8 +98,6 @@
#include <RWStepBasic_RWExternalIdentificationAssignment.hxx>
#include <RWStepBasic_RWExternallyDefinedItem.hxx>
#include <RWStepBasic_RWGeneralProperty.hxx>
#include <RWStepBasic_RWGeneralPropertyAssociation.hxx>
#include <RWStepBasic_RWGeneralPropertyRelationship.hxx>
#include <RWStepBasic_RWGroupRelationship.hxx>
#include <RWStepBasic_RWIdentificationAssignment.hxx>
#include <RWStepBasic_RWIdentificationRole.hxx>
@@ -327,7 +325,6 @@
#include <RWStepRepr_RWMaterialDesignation.hxx>
#include <RWStepRepr_RWMaterialProperty.hxx>
#include <RWStepRepr_RWMaterialPropertyRepresentation.hxx>
#include <RWStepRepr_RWMechanicalDesignAndDraughtingRelationship.hxx>
#include <RWStepRepr_RWMeasureRepresentationItem.hxx>
#include <RWStepRepr_RWProductConcept.hxx>
#include <RWStepRepr_RWProductDefinitionShape.hxx>
@@ -573,8 +570,6 @@
#include <StepBasic_ExternalIdentificationAssignment.hxx>
#include <StepBasic_ExternalSource.hxx>
#include <StepBasic_GeneralProperty.hxx>
#include <StepBasic_GeneralPropertyAssociation.hxx>
#include <StepBasic_GeneralPropertyRelationship.hxx>
#include <StepBasic_Group.hxx>
#include <StepBasic_GroupRelationship.hxx>
#include <StepBasic_IdentificationAssignment.hxx>
@@ -790,7 +785,6 @@
#include <StepRepr_ConfigurationEffectivity.hxx>
#include <StepRepr_ConstructiveGeometryRepresentation.hxx>
#include <StepRepr_ConstructiveGeometryRepresentationRelationship.hxx>
#include <StepRepr_MechanicalDesignAndDraughtingRelationship.hxx>
#include <StepRepr_DataEnvironment.hxx>
#include <StepRepr_DescriptiveRepresentationItem.hxx>
#include <StepRepr_Extension.hxx>
@@ -1194,9 +1188,7 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_GeneralModule,StepData_GeneralModule)
#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
#include <StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
#include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
#include <StepRepr_BooleanRepresentationItem.hxx>
#include <StepRepr_IntegerRepresentationItem.hxx>
#include <StepRepr_RealRepresentationItem.hxx>
#include <StepRepr_ValueRepresentationItem.hxx>
#include <StepAP242_DraughtingModelItemAssociation.hxx>
#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
@@ -5884,27 +5876,6 @@ void RWStepAP214_GeneralModule::FillSharedCase(const Standard_Integer CN,
aTool.Share(anEnt, iter);
}
break;
case 820:
{
DeclareAndCast(StepBasic_GeneralPropertyAssociation, anEnt, ent);
RWStepBasic_RWGeneralPropertyAssociation aTool;
aTool.Share(anEnt, iter);
}
break;
case 821:
{
DeclareAndCast(StepBasic_GeneralPropertyRelationship, anEnt, ent);
RWStepBasic_RWGeneralPropertyRelationship aTool;
aTool.Share(anEnt, iter);
}
break;
case 824:
{
DeclareAndCast(StepRepr_MechanicalDesignAndDraughtingRelationship, anEnt, ent);
RWStepRepr_RWMechanicalDesignAndDraughtingRelationship aTool;
aTool.Share(anEnt, iter);
}
break;
default : break;
}
}
@@ -8214,21 +8185,6 @@ Standard_Boolean RWStepAP214_GeneralModule::NewVoid
case 819:
ent = new StepVisual_TriangulatedSurfaceSet;
break;
case 820:
ent = new StepBasic_GeneralPropertyAssociation;
break;
case 821:
ent = new StepBasic_GeneralPropertyRelationship;
break;
case 822:
ent = new StepRepr_BooleanRepresentationItem;
break;
case 823:
ent = new StepRepr_RealRepresentationItem;
break;
case 824:
ent = new StepRepr_MechanicalDesignAndDraughtingRelationship;
break;
default:
return Standard_False;

View File

@@ -188,8 +188,6 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
#include <StepShape_GeometricallyBoundedWireframeShapeRepresentation.hxx>
#include <StepRepr_GlobalUncertaintyAssignedContext.hxx>
#include <StepRepr_GlobalUnitAssignedContext.hxx>
#include <StepBasic_GeneralPropertyAssociation.hxx>
#include <StepBasic_GeneralPropertyRelationship.hxx>
#include <StepBasic_Group.hxx>
#include <StepBasic_GroupRelationship.hxx>
#include <StepShape_HalfSpaceSolid.hxx>
@@ -624,8 +622,6 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
#include <RWStepShape_RWGeometricallyBoundedWireframeShapeRepresentation.hxx>
#include <RWStepRepr_RWGlobalUncertaintyAssignedContext.hxx>
#include <RWStepRepr_RWGlobalUnitAssignedContext.hxx>
#include <RWStepBasic_RWGeneralPropertyAssociation.hxx>
#include <RWStepBasic_RWGeneralPropertyRelationship.hxx>
#include <RWStepBasic_RWGroup.hxx>
#include <RWStepBasic_RWGroupRelationship.hxx>
#include <RWStepShape_RWHalfSpaceSolid.hxx>
@@ -641,7 +637,6 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
#include <RWStepShape_RWManifoldSurfaceShapeRepresentation.hxx>
#include <RWStepRepr_RWMappedItem.hxx>
#include <RWStepBasic_RWMeasureWithUnit.hxx>
#include <RWStepRepr_RWMechanicalDesignAndDraughtingRelationship.hxx>
#include <RWStepVisual_RWMechanicalDesignGeometricPresentationArea.hxx>
#include <RWStepVisual_RWMechanicalDesignGeometricPresentationRepresentation.hxx>
// Removed from Rev2 to Rev4 : <RWStepVisual_RWMechanicalDesignPresentationArea.hxx>
@@ -1360,9 +1355,7 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
#include <RWStepDimTol_RWGeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
#include <RWStepRepr_RWCompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
#include <RWStepRepr_RWCompShAspAndDatumFeatAndShAsp.hxx>
#include <RWStepRepr_RWBooleanRepresentationItem.hxx>
#include <RWStepRepr_RWIntegerRepresentationItem.hxx>
#include <RWStepRepr_RWRealRepresentationItem.hxx>
#include <RWStepRepr_RWValueRepresentationItem.hxx>
#include <RWStepRepr_RWValueRepresentationItem.hxx>
#include <RWStepAP242_RWDraughtingModelItemAssociation.hxx>
@@ -1413,9 +1406,7 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
#include <StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
#include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
#include <StepRepr_BooleanRepresentationItem.hxx>
#include <StepRepr_IntegerRepresentationItem.hxx>
#include <StepRepr_RealRepresentationItem.hxx>
#include <StepRepr_ValueRepresentationItem.hxx>
#include <StepAP242_DraughtingModelItemAssociation.hxx>
#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
@@ -1432,7 +1423,6 @@ IMPLEMENT_STANDARD_RTTIEXT(RWStepAP214_ReadWriteModule,StepData_ReadWriteModule)
#include <StepRepr_CharacterizedRepresentation.hxx>
#include <StepRepr_ConstructiveGeometryRepresentation.hxx>
#include <StepRepr_ConstructiveGeometryRepresentationRelationship.hxx>
#include <StepRepr_MechanicalDesignAndDraughtingRelationship.hxx>
#include <RWStepVisual_RWTessellatedAnnotationOccurrence.hxx>
#include <RWStepVisual_RWTessellatedItem.hxx>
@@ -2362,11 +2352,6 @@ static TCollection_AsciiString Reco_ComplexTriangulatedSurfaceSet("COMPLEX_TRIAN
static TCollection_AsciiString Reco_CubicBezierTessellatedEdge("CUBIC_BEZIER_TESSELLATED_EDGE");
static TCollection_AsciiString Reco_CubicBezierTriangulatedFace("CUBIC_BEZIER_TRIANGULATED_FACE");
static TCollection_AsciiString Reco_TriangulatedSurfaceSet("TRIANGULATED_SURFACE_SET");
static TCollection_AsciiString Reco_GeneralPropertyAssociation("GENERAL_PROPERTY_ASSOCIATION");
static TCollection_AsciiString Reco_GeneralPropertyRelationship("GENERAL_PROPERTY_RELATIONSHIP");
static TCollection_AsciiString Reco_BooleanRepresentationItem("BOOLEAN_REPRESENTATION_ITEM");
static TCollection_AsciiString Reco_RealRepresentationItem("REAL_REPRESENTATION_ITEM");
static TCollection_AsciiString Reco_MechanicalDesignAndDraughtingRelationship("MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP");
// -- Definition of the libraries --
@@ -3124,11 +3109,6 @@ RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule ()
typenums.Bind(Reco_CubicBezierTessellatedEdge, 817);
typenums.Bind(Reco_CubicBezierTriangulatedFace, 818);
typenums.Bind(Reco_TriangulatedSurfaceSet, 819);
typenums.Bind(Reco_GeneralPropertyAssociation, 820);
typenums.Bind(Reco_GeneralPropertyRelationship, 821);
typenums.Bind(Reco_BooleanRepresentationItem, 822);
typenums.Bind(Reco_RealRepresentationItem, 823);
typenums.Bind(Reco_MechanicalDesignAndDraughtingRelationship, 824);
// SHORT NAMES
@@ -5117,11 +5097,6 @@ const TCollection_AsciiString& RWStepAP214_ReadWriteModule::StepType
case 817: return Reco_CubicBezierTessellatedEdge;
case 818: return Reco_CubicBezierTriangulatedFace;
case 819: return Reco_TriangulatedSurfaceSet;
case 820: return Reco_GeneralPropertyAssociation;
case 821: return Reco_GeneralPropertyRelationship;
case 822: return Reco_BooleanRepresentationItem;
case 823: return Reco_RealRepresentationItem;
case 824: return Reco_MechanicalDesignAndDraughtingRelationship;
default : return PasReco;
}
}
@@ -10731,41 +10706,6 @@ void RWStepAP214_ReadWriteModule::ReadStep(const Standard_Integer CN,
aTool.ReadStep(data, num, ach, anEnt);
}
break;
case 820:
{
DeclareAndCast(StepBasic_GeneralPropertyAssociation, anEnt, ent);
RWStepBasic_RWGeneralPropertyAssociation aTool;
aTool.ReadStep(data, num, ach, anEnt);
}
break;
case 821:
{
DeclareAndCast(StepBasic_GeneralPropertyRelationship, anEnt, ent);
RWStepBasic_RWGeneralPropertyRelationship aTool;
aTool.ReadStep(data, num, ach, anEnt);
}
break;
case 822:
{
DeclareAndCast(StepRepr_BooleanRepresentationItem, anent, ent);
RWStepRepr_RWBooleanRepresentationItem aTool;
aTool.ReadStep(data, num, ach, anent);
}
break;
case 823:
{
DeclareAndCast(StepRepr_RealRepresentationItem, anent, ent);
RWStepRepr_RWRealRepresentationItem aTool;
aTool.ReadStep(data, num, ach, anent);
}
break;
case 824:
{
DeclareAndCast(StepRepr_MechanicalDesignAndDraughtingRelationship, anent, ent);
RWStepRepr_RWMechanicalDesignAndDraughtingRelationship aTool;
aTool.ReadStep(data, num, ach, anent);
}
break;
default:
ach->AddFail("Type Mismatch when reading - Entity");
}
@@ -16317,41 +16257,6 @@ void RWStepAP214_ReadWriteModule::WriteStep(const Standard_Integer CN,
aTool.WriteStep(SW, anEnt);
}
break;
case 820:
{
DeclareAndCast(StepBasic_GeneralPropertyAssociation, anEnt, ent);
RWStepBasic_RWGeneralPropertyAssociation aTool;
aTool.WriteStep(SW, anEnt);
}
break;
case 821:
{
DeclareAndCast(StepBasic_GeneralPropertyRelationship, anEnt, ent);
RWStepBasic_RWGeneralPropertyRelationship aTool;
aTool.WriteStep(SW, anEnt);
}
break;
case 822:
{
DeclareAndCast(StepRepr_BooleanRepresentationItem, anent, ent);
RWStepRepr_RWBooleanRepresentationItem aTool;
aTool.WriteStep(SW, anent);
}
break;
case 823:
{
DeclareAndCast(StepRepr_RealRepresentationItem, anent, ent);
RWStepRepr_RWRealRepresentationItem aTool;
aTool.WriteStep(SW, anent);
}
break;
case 824:
{
DeclareAndCast(StepRepr_MechanicalDesignAndDraughtingRelationship, anent, ent);
RWStepRepr_RWMechanicalDesignAndDraughtingRelationship aTool;
aTool.WriteStep(SW, anent);
}
break;
default:
return;
}

View File

@@ -108,10 +108,6 @@ RWStepBasic_RWExternalSource.cxx
RWStepBasic_RWExternalSource.hxx
RWStepBasic_RWGeneralProperty.cxx
RWStepBasic_RWGeneralProperty.hxx
RWStepBasic_RWGeneralPropertyAssociation.cxx
RWStepBasic_RWGeneralPropertyAssociation.hxx
RWStepBasic_RWGeneralPropertyRelationship.cxx
RWStepBasic_RWGeneralPropertyRelationship.hxx
RWStepBasic_RWGroup.cxx
RWStepBasic_RWGroup.hxx
RWStepBasic_RWGroupAssignment.cxx

View File

@@ -1,87 +0,0 @@
// Copyright (c) 2024 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.
#include <Interface_EntityIterator.hxx>
#include <RWStepBasic_RWGeneralPropertyAssociation.hxx>
#include <StepBasic_GeneralProperty.hxx>
#include <StepBasic_GeneralPropertyAssociation.hxx>
#include <StepData_StepReaderData.hxx>
#include <StepData_StepWriter.hxx>
#include <StepRepr_PropertyDefinition.hxx>
//=======================================================================
//function : RWStepBasic_RWGeneralPropertyAssociation
//purpose :
//=======================================================================
RWStepBasic_RWGeneralPropertyAssociation::RWStepBasic_RWGeneralPropertyAssociation()
{
}
//=======================================================================
//function : ReadStep
//purpose :
//=======================================================================
void RWStepBasic_RWGeneralPropertyAssociation::ReadStep(const Handle(StepData_StepReaderData)& theData,
const Standard_Integer theNum,
Handle(Interface_Check)& theAch,
const Handle(StepBasic_GeneralPropertyAssociation)& theEnt) const
{
// Check number of parameters
if (!theData->CheckNbParams(theNum, 4, theAch, "general_property_association")) return;
Handle(TCollection_HAsciiString) aName;
theData->ReadString(theNum, 1, "name", theAch, aName);
Handle(TCollection_HAsciiString) aDescription;
theData->ReadString(theNum, 2, "description", theAch, aDescription);
Handle(StepBasic_GeneralProperty) aGeneralProperty;
theData->ReadEntity(theNum, 3, "base_definition", theAch, STANDARD_TYPE(StepBasic_GeneralProperty), aGeneralProperty);
Handle(StepRepr_PropertyDefinition) aPropertyDefinition;
theData->ReadEntity(theNum, 4, "derived_definition", theAch, STANDARD_TYPE(StepRepr_PropertyDefinition), aPropertyDefinition);
// Initialize entity
theEnt->Init(aName,
aDescription,
aGeneralProperty,
aPropertyDefinition);
}
//=======================================================================
//function : WriteStep
//purpose :
//=======================================================================
void RWStepBasic_RWGeneralPropertyAssociation::WriteStep (StepData_StepWriter& theSW,
const Handle(StepBasic_GeneralPropertyAssociation) &theEnt) const
{
theSW.Send(theEnt->Name());
theSW.Send(theEnt->Description());
theSW.Send(theEnt->GeneralProperty());
theSW.Send(theEnt->PropertyDefinition());
}
//=======================================================================
//function : Share
//purpose :
//=======================================================================
void RWStepBasic_RWGeneralPropertyAssociation::Share(const Handle(StepBasic_GeneralPropertyAssociation)& theEnt,
Interface_EntityIterator& theIter) const
{
theIter.AddItem(theEnt->GeneralProperty());
theIter.AddItem(theEnt->PropertyDefinition());
}

View File

@@ -1,60 +0,0 @@
// Copyright (c) 2024 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 _RWStepBasic_RWGeneralPropertyAssociation_HeaderFile
#define _RWStepBasic_RWGeneralPropertyAssociation_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Integer.hxx>
class StepData_StepReaderData;
class Interface_Check;
class StepBasic_GeneralProperty;
class StepData_StepWriter;
class Interface_EntityIterator;
class StepBasic_GeneralPropertyAssociation;
//! Read & Write tool for GeneralPropertyAssociation
class RWStepBasic_RWGeneralPropertyAssociation
{
public:
DEFINE_STANDARD_ALLOC
//! Empty constructor
Standard_EXPORT RWStepBasic_RWGeneralPropertyAssociation();
//! Reads GeneralPropertyAssociation
Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& theData,
const Standard_Integer theNum,
Handle(Interface_Check)& theAch,
const Handle(StepBasic_GeneralPropertyAssociation)& theEnt) const;
//! Writes GeneralPropertyAssociation
Standard_EXPORT void WriteStep (StepData_StepWriter& theSW,
const Handle(StepBasic_GeneralPropertyAssociation)& theEnt) const;
//! Fills data for graph (shared items)
Standard_EXPORT void Share (const Handle(StepBasic_GeneralPropertyAssociation)& theEnt,
Interface_EntityIterator& theIter) const;
protected:
private:
};
#endif // _RWStepBasic_RWGeneralPropertyAssociation_HeaderFile

View File

@@ -1,103 +0,0 @@
// Copyright (c) 2024 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.
#include <Interface_EntityIterator.hxx>
#include <RWStepBasic_RWGeneralPropertyRelationship.hxx>
#include <StepBasic_GeneralProperty.hxx>
#include <StepBasic_GeneralPropertyRelationship.hxx>
#include <StepData_StepReaderData.hxx>
#include <StepData_StepWriter.hxx>
#include <StepRepr_PropertyDefinition.hxx>
//=======================================================================
//function : RWStepBasic_RWGeneralPropertyRelationship
//purpose :
//=======================================================================
RWStepBasic_RWGeneralPropertyRelationship::RWStepBasic_RWGeneralPropertyRelationship()
{
}
//=======================================================================
//function : ReadStep
//purpose :
//=======================================================================
void RWStepBasic_RWGeneralPropertyRelationship::ReadStep(const Handle(StepData_StepReaderData)& theData,
const Standard_Integer theNum,
Handle(Interface_Check)& theAch,
const Handle(StepBasic_GeneralPropertyRelationship)& theEnt) const
{
// Check number of parameters
if (!theData->CheckNbParams(theNum, 4, theAch, "general_property_association")) return;
Handle(TCollection_HAsciiString) aName;
theData->ReadString(theNum, 1, "name", theAch, aName);
Handle(TCollection_HAsciiString) aDescription;
Standard_Boolean hasDescription = Standard_True;
if (theData->IsParamDefined(theNum, 2))
{
theData->ReadString(theNum, 2, "description", theAch, aDescription);
}
else
{
hasDescription = Standard_False;
}
Handle(StepBasic_GeneralProperty) aRelatingGeneralProperty;
theData->ReadEntity(theNum, 3, "relating_property", theAch, STANDARD_TYPE(StepBasic_GeneralProperty), aRelatingGeneralProperty);
Handle(StepBasic_GeneralProperty) aRelatedGeneralProperty;
theData->ReadEntity(theNum, 4, "related_property", theAch, STANDARD_TYPE(StepBasic_GeneralProperty), aRelatedGeneralProperty);
// Initialize entity
theEnt->Init(aName,
hasDescription,
aDescription,
aRelatingGeneralProperty,
aRelatedGeneralProperty);
}
//=======================================================================
//function : WriteStep
//purpose :
//=======================================================================
void RWStepBasic_RWGeneralPropertyRelationship::WriteStep(StepData_StepWriter& theSW,
const Handle(StepBasic_GeneralPropertyRelationship)& theEnt) const
{
theSW.Send(theEnt->Name());
if (theEnt->HasDescription())
{
theSW.Send(theEnt->Description());
}
else
{
theSW.SendUndef();
}
theSW.Send(theEnt->RelatingGeneralProperty());
theSW.Send(theEnt->RelatedGeneralProperty());
}
//=======================================================================
//function : Share
//purpose :
//=======================================================================
void RWStepBasic_RWGeneralPropertyRelationship::Share(const Handle(StepBasic_GeneralPropertyRelationship)& theEnt,
Interface_EntityIterator& theIter) const
{
theIter.AddItem(theEnt->RelatingGeneralProperty());
theIter.AddItem(theEnt->RelatedGeneralProperty());
}

View File

@@ -1,60 +0,0 @@
// Copyright (c) 2024 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 _RWStepBasic_RWGeneralPropertyRelationship_HeaderFile
#define _RWStepBasic_RWGeneralPropertyRelationship_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Integer.hxx>
class StepData_StepReaderData;
class Interface_Check;
class StepBasic_GeneralProperty;
class StepData_StepWriter;
class Interface_EntityIterator;
class StepBasic_GeneralPropertyRelationship;
//! Read & Write tool for GeneralPropertyRelationship
class RWStepBasic_RWGeneralPropertyRelationship
{
public:
DEFINE_STANDARD_ALLOC
//! Empty constructor
Standard_EXPORT RWStepBasic_RWGeneralPropertyRelationship();
//! Reads GeneralPropertyAssociation
Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& theData,
const Standard_Integer theNum,
Handle(Interface_Check)& theAch,
const Handle(StepBasic_GeneralPropertyRelationship)& theEnt) const;
//! Writes GeneralPropertyAssociation
Standard_EXPORT void WriteStep (StepData_StepWriter& theSW,
const Handle(StepBasic_GeneralPropertyRelationship)& theEnt) const;
//! Fills data for graph (shared items)
Standard_EXPORT void Share (const Handle(StepBasic_GeneralPropertyRelationship)& theEnt,
Interface_EntityIterator& theIter) const;
protected:
private:
};
#endif // _RWStepBasic_RWGeneralPropertyRelationship_HeaderFile

View File

@@ -8,8 +8,6 @@ RWStepRepr_RWAssemblyComponentUsageSubstitute.cxx
RWStepRepr_RWAssemblyComponentUsageSubstitute.hxx
RWStepRepr_RWBetweenShapeAspect.cxx
RWStepRepr_RWBetweenShapeAspect.hxx
RWStepRepr_RWBooleanRepresentationItem.cxx
RWStepRepr_RWBooleanRepresentationItem.hxx
RWStepRepr_RWCentreOfSymmetry.cxx
RWStepRepr_RWCentreOfSymmetry.hxx
RWStepRepr_RWCharacterizedRepresentation.cxx
@@ -72,8 +70,6 @@ RWStepRepr_RWMaterialPropertyRepresentation.cxx
RWStepRepr_RWMaterialPropertyRepresentation.hxx
RWStepRepr_RWMeasureRepresentationItem.cxx
RWStepRepr_RWMeasureRepresentationItem.hxx
RWStepRepr_RWMechanicalDesignAndDraughtingRelationship.cxx
RWStepRepr_RWMechanicalDesignAndDraughtingRelationship.hxx
RWStepRepr_RWParallelOffset.cxx
RWStepRepr_RWParallelOffset.hxx
RWStepRepr_RWParametricRepresentationContext.cxx
@@ -92,8 +88,6 @@ RWStepRepr_RWPropertyDefinitionRepresentation.cxx
RWStepRepr_RWPropertyDefinitionRepresentation.hxx
RWStepRepr_RWQuantifiedAssemblyComponentUsage.cxx
RWStepRepr_RWQuantifiedAssemblyComponentUsage.hxx
RWStepRepr_RWRealRepresentationItem.cxx
RWStepRepr_RWRealRepresentationItem.hxx
RWStepRepr_RWRepresentation.cxx
RWStepRepr_RWRepresentation.hxx
RWStepRepr_RWRepresentationContext.cxx

View File

@@ -1,50 +0,0 @@
// Copyright (c) 2024 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.
#include <RWStepRepr_RWBooleanRepresentationItem.hxx>
#include <StepData_StepReaderData.hxx>
#include <StepData_StepWriter.hxx>
#include <StepRepr_BooleanRepresentationItem.hxx>
#include <TCollection_HAsciiString.hxx>
RWStepRepr_RWBooleanRepresentationItem::RWStepRepr_RWBooleanRepresentationItem()
{
}
void RWStepRepr_RWBooleanRepresentationItem::ReadStep(const Handle(StepData_StepReaderData)& theData,
const Standard_Integer theNum,
Handle(Interface_Check)& theAch,
const Handle(StepRepr_BooleanRepresentationItem)& theEnt) const
{
// Check number of parameters
if (!theData->CheckNbParams(theNum, 2, theAch, "boolean_representation_item") ) return;
// --- inherited field : name ---
Handle(TCollection_HAsciiString) aName;
theData->ReadString (theNum, 1, "name", theAch, aName);
// --- own field : value ---
Standard_Boolean aValue;
theData->ReadBoolean (theNum, 2, "value", theAch, aValue);
//--- Initialisation of the read entity ---
theEnt->Init(aName, aValue);
}
void RWStepRepr_RWBooleanRepresentationItem::WriteStep(StepData_StepWriter& theSW,
const Handle(StepRepr_BooleanRepresentationItem)& theEnt) const
{
theSW.Send(theEnt->Name());
theSW.Send(theEnt->Value());
}

View File

@@ -1,45 +0,0 @@
// Copyright (c) 2024 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 _RWStepRepr_RWBooleanRepresentationItem_HeaderFile
#define _RWStepRepr_RWBooleanRepresentationItem_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Boolean.hxx>
class StepData_StepReaderData;
class Interface_Check;
class StepRepr_BooleanRepresentationItem;
class StepData_StepWriter;
//! Read & Write Module for BooleanRepresentationItem
class RWStepRepr_RWBooleanRepresentationItem
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT RWStepRepr_RWBooleanRepresentationItem();
Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& theData,
const Standard_Integer theNum,
Handle(Interface_Check)& theAch,
const Handle(StepRepr_BooleanRepresentationItem)& theEnt) const;
Standard_EXPORT void WriteStep (StepData_StepWriter& theSW,
const Handle(StepRepr_BooleanRepresentationItem)& theEnt) const;
};
#endif // _RWStepRepr_RWBooleanRepresentationItem_HeaderFile

View File

@@ -1,78 +0,0 @@
// Copyright (c) 2024 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.
#include <Standard_Type.hxx>
#include <Interface_EntityIterator.hxx>
#include <RWStepRepr_RWMechanicalDesignAndDraughtingRelationship.hxx>
#include <StepData_StepReaderData.hxx>
#include <StepData_StepWriter.hxx>
#include <StepRepr_Representation.hxx>
#include <StepRepr_MechanicalDesignAndDraughtingRelationship.hxx>
RWStepRepr_RWMechanicalDesignAndDraughtingRelationship::
RWStepRepr_RWMechanicalDesignAndDraughtingRelationship() {}
void RWStepRepr_RWMechanicalDesignAndDraughtingRelationship::ReadStep
(const Handle(StepData_StepReaderData)& theData,
const Standard_Integer theNum,
Handle(Interface_Check)& theAch,
const Handle(StepRepr_MechanicalDesignAndDraughtingRelationship)& theEnt) const
{
// Number of Parameter Control
if (!theData->CheckNbParams(theNum, 4, theAch, "mechanical_design_and_draughting_relationship")) return;
// Inherited field : name
Handle(TCollection_HAsciiString) aName;
theData->ReadString (theNum, 1, "name", theAch, aName);
// Inherited field : description
Handle(TCollection_HAsciiString) aDescription;
if (theData->IsParamDefined (theNum, 2)) {
theData->ReadString (theNum, 2, "description", theAch, aDescription);
}
// Inherited field : rep_1
Handle(StepRepr_Representation) aRep1;
theData->ReadEntity(theNum, 3, "rep_1", theAch, STANDARD_TYPE(StepRepr_Representation), aRep1);
// Inherited field : rep_2
Handle(StepRepr_Representation) aRep2;
theData->ReadEntity(theNum, 4, "rep_2", theAch, STANDARD_TYPE(StepRepr_Representation), aRep2);
// Initialisation of the read entity
theEnt->Init(aName, aDescription, aRep1, aRep2);
}
void RWStepRepr_RWMechanicalDesignAndDraughtingRelationship::WriteStep
(StepData_StepWriter& theSW,
const Handle(StepRepr_MechanicalDesignAndDraughtingRelationship)& theEnt) const
{
// Inherited field : name
theSW.Send(theEnt->Name());
// Inherited field : description
theSW.Send(theEnt->Description());
// Inherited field : rep_1
theSW.Send(theEnt->Rep1());
// Inherited field : rep_2
theSW.Send(theEnt->Rep2());
}
void RWStepRepr_RWMechanicalDesignAndDraughtingRelationship::Share
(const Handle(StepRepr_MechanicalDesignAndDraughtingRelationship)& theEnt,
Interface_EntityIterator& theIter) const
{
theIter.GetOneItem(theEnt->Rep1());
theIter.GetOneItem(theEnt->Rep2());
}

View File

@@ -1,50 +0,0 @@
// Copyright (c) 2024 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 _RWStepRepr_RWMechanicalDesignAndDraughtingRelationship_HeaderFile
#define _RWStepRepr_RWMechanicalDesignAndDraughtingRelationship_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Integer.hxx>
class StepData_StepReaderData;
class Interface_Check;
class StepRepr_MechanicalDesignAndDraughtingRelationship;
class StepData_StepWriter;
class Interface_EntityIterator;
//! Read & Write Module for MechanicalDesignAndDraughtingRelationship
class RWStepRepr_RWMechanicalDesignAndDraughtingRelationship
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT RWStepRepr_RWMechanicalDesignAndDraughtingRelationship();
Standard_EXPORT void ReadStep(const Handle(StepData_StepReaderData)& theData,
const Standard_Integer theNum,
Handle(Interface_Check)& theAch,
const Handle(StepRepr_MechanicalDesignAndDraughtingRelationship)& theEnt) const;
Standard_EXPORT void WriteStep(StepData_StepWriter& theSW,
const Handle(StepRepr_MechanicalDesignAndDraughtingRelationship)& theEnt) const;
Standard_EXPORT void Share(const Handle(StepRepr_MechanicalDesignAndDraughtingRelationship)& theEnt,
Interface_EntityIterator& theIter) const;
};
#endif // _RWStepRepr_RWMechanicalDesignAndDraughtingRelationship_HeaderFile

View File

@@ -1,50 +0,0 @@
// Copyright (c) 2024 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.
#include <RWStepRepr_RWRealRepresentationItem.hxx>
#include <StepData_StepReaderData.hxx>
#include <StepData_StepWriter.hxx>
#include <StepRepr_RealRepresentationItem.hxx>
#include <TCollection_HAsciiString.hxx>
RWStepRepr_RWRealRepresentationItem::RWStepRepr_RWRealRepresentationItem()
{
}
void RWStepRepr_RWRealRepresentationItem::ReadStep(const Handle(StepData_StepReaderData)& theData,
const Standard_Integer theNum,
Handle(Interface_Check)& theAch,
const Handle(StepRepr_RealRepresentationItem)& theEnt) const
{
// Check number of parameters
if (!theData->CheckNbParams (theNum, 2, theAch, "real_representation_item")) return;
// --- inherited field : name ---
Handle(TCollection_HAsciiString) aName;
theData->ReadString (theNum, 1, "name", theAch, aName);
// --- own field : value ---
Standard_Real aValue;
theData->ReadReal (theNum, 2, "value", theAch, aValue);
//--- Initialisation of the read entity ---
theEnt->Init(aName, aValue);
}
void RWStepRepr_RWRealRepresentationItem::WriteStep(StepData_StepWriter& theSW,
const Handle(StepRepr_RealRepresentationItem)& theEnt) const
{
theSW.Send(theEnt->Name());
theSW.Send(theEnt->Value());
}

View File

@@ -1,46 +0,0 @@
// Copyright (c) 2024 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 _RWStepRepr_RWRealRepresentationItem_HeaderFile
#define _RWStepRepr_RWRealRepresentationItem_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Real.hxx>
class StepData_StepReaderData;
class Interface_Check;
class StepRepr_RealRepresentationItem;
class StepData_StepWriter;
//! Read & Write Module for RealRepresentationItem
class RWStepRepr_RWRealRepresentationItem
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT RWStepRepr_RWRealRepresentationItem();
Standard_EXPORT void ReadStep (const Handle(StepData_StepReaderData)& theData,
const Standard_Integer theNum,
Handle(Interface_Check)& theAch,
const Handle(StepRepr_RealRepresentationItem)& theEnt) const;
Standard_EXPORT void WriteStep (StepData_StepWriter& theSW,
const Handle(StepRepr_RealRepresentationItem)& theEnt) const;
};
#endif // _RWStepRepr_RWRealRepresentationItem_HeaderFile

View File

@@ -116,8 +116,6 @@ bool STEPCAFControl_ConfigurationNode::Load(const Handle(DE_ConfigurationContext
theResource->BooleanVal("read.layer", InternalParameters.ReadLayer, aScope);
InternalParameters.ReadProps =
theResource->BooleanVal("read.props", InternalParameters.ReadProps, aScope);
InternalParameters.ReadMetadata =
theResource->BooleanVal("read.metadata", InternalParameters.ReadMetadata, aScope);
InternalParameters.WritePrecisionMode = (StepData_ConfParameters::WriteMode_PrecisionMode)
theResource->IntegerVal("write.precision.mode", InternalParameters.WritePrecisionMode, aScope);
@@ -372,12 +370,6 @@ TCollection_AsciiString STEPCAFControl_ConfigurationNode::Save() const
aResult += aScope + "read.props :\t " + InternalParameters.ReadProps + "\n";
aResult += "!\n";
aResult += "!\n";
aResult += "!Setting up the read.metadata parameter which is used to indicate read Metadata or not\n";
aResult += "!Default value: 1(\"ON\"). Available values: 0(\"OFF\"), 1(\"ON\")\n";
aResult += aScope + "read.metadata :\t " + InternalParameters.ReadMetadata + "\n";
aResult += "!\n";
aResult += "!\n";
aResult += "!Write Parameters:\n";
aResult += "!\n";

View File

@@ -73,8 +73,6 @@ bool STEPCAFControl_Provider::Read(const TCollection_AsciiString& thePath,
aReader.SetNameMode(aNode->InternalParameters.ReadName);
aReader.SetLayerMode(aNode->InternalParameters.ReadLayer);
aReader.SetPropsMode(aNode->InternalParameters.ReadProps);
aReader.SetMetaMode(aNode->InternalParameters.ReadMetadata);
IFSelect_ReturnStatus aReadStat = IFSelect_RetVoid;
StepData_ConfParameters aParams;
aReadStat = aReader.ReadFile(thePath.ToCString(), aParams);

View File

@@ -30,12 +30,9 @@
#include <StepBasic_ConversionBasedUnitAndLengthUnit.hxx>
#include <StepBasic_ConversionBasedUnitAndPlaneAngleUnit.hxx>
#include <StepBasic_ConversionBasedUnitAndMassUnit.hxx>
#include <StepBasic_ConversionBasedUnitAndTimeUnit.hxx>
#include <StepBasic_DerivedUnit.hxx>
#include <StepBasic_DerivedUnitElement.hxx>
#include <StepBasic_DocumentFile.hxx>
#include <StepBasic_GeneralProperty.hxx>
#include <StepBasic_GeneralPropertyAssociation.hxx>
#include <StepBasic_MeasureValueMember.hxx>
#include <StepBasic_NamedUnit.hxx>
#include <StepBasic_Product.hxx>
@@ -43,9 +40,6 @@
#include <StepBasic_ProductDefinitionFormation.hxx>
#include <StepBasic_ProductDefinitionWithAssociatedDocuments.hxx>
#include <StepBasic_SiUnitAndLengthUnit.hxx>
#include <StepBasic_SiUnitAndMassUnit.hxx>
#include <StepBasic_SiUnitAndThermodynamicTemperatureUnit.hxx>
#include <StepBasic_SiUnitAndTimeUnit.hxx>
#include <STEPCAFControl_Controller.hxx>
#include <STEPCAFControl_DataMapOfPDExternFile.hxx>
#include <STEPCAFControl_DataMapOfShapePD.hxx>
@@ -135,7 +129,6 @@
#include <StepShape_DimensionalLocation.hxx>
#include <StepShape_EdgeCurve.hxx>
#include <StepShape_EdgeLoop.hxx>
#include <StepShape_GeometricCurveSet.hxx>
#include <StepShape_GeometricSet.hxx>
#include <StepShape_HArray1OfFace.hxx>
#include <StepShape_HArray1OfFaceBound.hxx>
@@ -221,7 +214,6 @@
#include <XSControl_WorkSession.hxx>
#include <StepAP242_DraughtingModelItemAssociation.hxx>
#include <StepAP242_GeometricItemSpecificUsage.hxx>
#include <StepAP242_IdAttribute.hxx>
#include <StepGeom_CartesianPoint.hxx>
#include <STEPCAFControl_GDTProperty.hxx>
#include <StepVisual_TessellatedAnnotationOccurrence.hxx>
@@ -233,15 +225,7 @@
#include <StepVisual_OverRidingStyledItem.hxx>
#include <StepVisual_ContextDependentOverRidingStyledItem.hxx>
#include <StepRepr_ShapeRepresentationRelationshipWithTransformation.hxx>
#include <StepRepr_BooleanRepresentationItem.hxx>
#include <StepRepr_IntegerRepresentationItem.hxx>
#include <StepRepr_ItemDefinedTransformation.hxx>
#include <StepRepr_PropertyDefinitionRelationship.hxx>
#include <StepRepr_RealRepresentationItem.hxx>
#include <StepRepr_ValueRepresentationItem.hxx>
#include <StepRepr_ShapeAspectRelationship.hxx>
#include <TColgp_HArray1OfXYZ.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
@@ -291,7 +275,6 @@ STEPCAFControl_Reader::STEPCAFControl_Reader()
myNameMode(Standard_True),
myLayerMode(Standard_True),
myPropsMode(Standard_True),
myMetaMode(Standard_True),
mySHUOMode(Standard_False),
myGDTMode(Standard_True),
myMatMode(Standard_True),
@@ -316,7 +299,6 @@ STEPCAFControl_Reader::STEPCAFControl_Reader(const Handle(XSControl_WorkSession)
myNameMode(Standard_True),
myLayerMode(Standard_True),
myPropsMode(Standard_True),
myMetaMode(Standard_True),
mySHUOMode(Standard_False),
myGDTMode(Standard_True),
myMatMode(Standard_True),
@@ -788,10 +770,6 @@ Standard_Boolean STEPCAFControl_Reader::Transfer (STEPControl_Reader &reader,
if (GetViewMode())
ReadViews(reader.WS(), doc, aLocalFactors);
// read metadata
if (GetMetaMode())
ReadMetadata(reader.WS(), doc, aLocalFactors);
// Expand resulting CAF structure for sub-shapes (optionally with their
// names) if requested
ExpandSubShapes(STool, ShapePDMap);
@@ -1979,7 +1957,7 @@ Standard_Boolean STEPCAFControl_Reader::ReadSHUOs(const Handle(XSControl_WorkSes
//function : GetMassConversionFactor
//purpose :
//=======================================================================
static Standard_Boolean GetMassConversionFactor(const Handle(StepBasic_NamedUnit)& NU,
static Standard_Boolean GetMassConversionFactor(Handle(StepBasic_NamedUnit)& NU,
Standard_Real& afact)
{
afact = 1.;
@@ -2134,12 +2112,11 @@ Standard_Boolean readPMIPresentation(const Handle(Standard_Transient)& thePresen
return Standard_False;
}
Handle(Transfer_TransientProcess) aTP = theTR->TransientProcess();
Handle(StepVisual_StyledItem) anAO;
Handle(StepVisual_AnnotationOccurrence) anAO;
NCollection_Vector<Handle(StepVisual_StyledItem)> anAnnotations;
if (thePresentEntity->IsKind(STANDARD_TYPE(StepVisual_AnnotationOccurrence)) ||
thePresentEntity->IsKind(STANDARD_TYPE(StepVisual_TessellatedAnnotationOccurrence)))
if (thePresentEntity->IsKind(STANDARD_TYPE(StepVisual_AnnotationOccurrence)))
{
anAO = Handle(StepVisual_StyledItem)::DownCast(thePresentEntity);
anAO = Handle(StepVisual_AnnotationOccurrence)::DownCast(thePresentEntity);
if (!anAO.IsNull())
{
thePresentName = anAO->Name();
@@ -4369,8 +4346,7 @@ Standard_Boolean STEPCAFControl_Reader::ReadGDTs(const Handle(XSControl_WorkSess
}
}
else if (anEnt->IsKind(STANDARD_TYPE(StepVisual_DraughtingCallout)) ||
anEnt->IsKind(STANDARD_TYPE(StepVisual_AnnotationOccurrence)) ||
anEnt->IsKind(STANDARD_TYPE(StepVisual_TessellatedAnnotationOccurrence)))
anEnt->IsKind(STANDARD_TYPE(StepVisual_AnnotationOccurrence)))
{
// Protection against import presentation twice
Handle(StepVisual_DraughtingCallout) aDC;
@@ -5267,26 +5243,6 @@ Standard_Boolean STEPCAFControl_Reader::GetPropsMode() const
return myPropsMode;
}
//=======================================================================
//function : SetMetaMode
//purpose :
//=======================================================================
void STEPCAFControl_Reader::SetMetaMode(const Standard_Boolean theMetaMode)
{
myMetaMode = theMetaMode;
}
//=======================================================================
//function : GetMetaMode
//purpose :
//=======================================================================
Standard_Boolean STEPCAFControl_Reader::GetMetaMode() const
{
return myMetaMode;
}
//=======================================================================
//function : SetSHUOMode
//purpose :
@@ -5367,427 +5323,3 @@ Standard_Boolean STEPCAFControl_Reader::GetViewMode() const
{
return myViewMode;
}
//=======================================================================
//function : ReadMetadata
//purpose :
//=======================================================================
Standard_Boolean STEPCAFControl_Reader::ReadMetadata(const Handle(XSControl_WorkSession)& theWS,
const Handle(TDocStd_Document)& theDoc,
const StepData_Factors& theLocalFactors) const
{
const Handle(Interface_InterfaceModel)& aModel = theWS->Model();
const Handle(XSControl_TransferReader)& aTR = theWS->TransferReader();
const Handle(Transfer_TransientProcess)& aTP = aTR->TransientProcess();
Handle(XCAFDoc_ShapeTool) aSTool = XCAFDoc_DocumentTool::ShapeTool(theDoc->Main());
if (aSTool.IsNull())
{
return Standard_False;
}
Standard_Integer aNb = aModel->NbEntities();
STEPConstruct_Tool aTool(theWS);
for (Standard_Integer anEntityInd = 1; anEntityInd <= aNb; ++anEntityInd)
{
Handle(Standard_Transient) anEntity = aModel->Value(anEntityInd);
Handle(StepBasic_GeneralProperty) aGeneralProp = Handle(StepBasic_GeneralProperty)::DownCast(anEntity);
if (aGeneralProp.IsNull())
continue;
Handle(StepBasic_GeneralPropertyAssociation) aPropAssociation;
NCollection_List< Handle(StepRepr_PropertyDefinition)> aPropDefinitionList;
Interface_EntityIterator aSharingListOfGP = theWS->Graph().Sharings(aGeneralProp);
for (aSharingListOfGP.Start(); aSharingListOfGP.More(); aSharingListOfGP.Next())
{
aPropAssociation = Handle(StepBasic_GeneralPropertyAssociation)::DownCast(aSharingListOfGP.Value());
if (aPropAssociation.IsNull())
continue;
aPropDefinitionList.Append(aPropAssociation->PropertyDefinition());
}
if (aPropDefinitionList.IsEmpty())
continue;
NCollection_List< Handle(StepRepr_PropertyDefinition)>::Iterator aPropDefIter(aPropDefinitionList);
for ( ; aPropDefIter.More(); aPropDefIter.Next())
{
Handle(StepRepr_PropertyDefinition) aPropDefinition = aPropDefIter.Value();
// check group of PropertyDefinition
NCollection_List<Handle(StepRepr_PropertyDefinition)> aGroupedProperties;
Interface_EntityIterator aSharingsListOfPD = theWS->Graph().Sharings(aPropDefinition);
for (aSharingsListOfPD.Start(); aSharingsListOfPD.More(); aSharingsListOfPD.Next())
{
Handle(StepRepr_PropertyDefinitionRelationship) aRel =
Handle(StepRepr_PropertyDefinitionRelationship)::DownCast(aSharingsListOfPD.Value());
if (aRel.IsNull())
{
continue;
}
Handle(StepRepr_PropertyDefinition) aGroupedProp = aRel->RelatedPropertyDefinition();
if (!aGroupedProp.IsNull())
{
aGroupedProperties.Append(aGroupedProp);
}
}
NCollection_List<Handle(Transfer_Binder)> aBinders;
Interface_EntityIterator aSharedListOfPD = theWS->Graph().Shareds(aPropDefinition);
for (aSharedListOfPD.Start(); aSharedListOfPD.More(); aSharedListOfPD.Next())
{
Handle(Transfer_Binder) aBinder;
Handle(StepBasic_ProductDefinition) aProductDefinition =
Handle(StepBasic_ProductDefinition)::DownCast(aSharedListOfPD.Value());
if (!aProductDefinition.IsNull())
{
aBinder = aTP->Find(aProductDefinition);
if (!aBinder.IsNull())
{
aBinders.Append(aBinder);
}
continue;
}
Handle(StepRepr_ProductDefinitionShape) aProductDefinitionShape =
Handle(StepRepr_ProductDefinitionShape)::DownCast(aSharedListOfPD.Value());
if (!aProductDefinitionShape.IsNull())
{
Handle(StepBasic_ProductDefinition) aProductDef =
aProductDefinitionShape->Definition().ProductDefinition();
aBinder = aTP->Find(aProductDef);
if (!aBinder.IsNull())
{
aBinders.Append(aBinder);
}
continue;
}
Handle(StepRepr_NextAssemblyUsageOccurrence) aNextAssembUsOcc =
Handle(StepRepr_NextAssemblyUsageOccurrence)::DownCast(aSharedListOfPD.Value());
if (!aNextAssembUsOcc.IsNull())
{
aBinder = aTP->Find(aNextAssembUsOcc);
if (!aBinder.IsNull())
{
aBinders.Append(aBinder);
}
continue;
}
Handle(StepRepr_ShapeAspect) aShapeAspect =
Handle(StepRepr_ShapeAspect)::DownCast(aSharedListOfPD.Value());
if (!aShapeAspect.IsNull())
{
TDF_Label aLabel;
if (!aBinder.IsNull())
{
TopoDS_Shape aShape = TransferBRep::ShapeResult(aTP, aBinder);
if (aShape.IsNull())
continue;
if (myMap.IsBound(aShape))
{
aLabel = myMap.Find(aShape);
}
}
Interface_EntityIterator aSharedListOfSA = theWS->Graph().Sharings(aShapeAspect);
for (aSharedListOfSA.Start(); aSharedListOfSA.More(); aSharedListOfSA.Next())
{
Handle(StepAP242_DraughtingModelItemAssociation) aDMIA =
Handle(StepAP242_DraughtingModelItemAssociation)::DownCast(aSharedListOfSA.Value());
if (!aDMIA.IsNull())
break;
Handle(StepAP242_ItemIdentifiedRepresentationUsage) anItemIdentUsage =
Handle(StepAP242_ItemIdentifiedRepresentationUsage)::DownCast(aSharedListOfSA.Value());
if (!anItemIdentUsage.IsNull())
{
for (Standard_Integer anIndex = 1; anIndex <= anItemIdentUsage->NbIdentifiedItem(); ++anIndex)
{
Handle(StepRepr_RepresentationItem) aReprItem = anItemIdentUsage->IdentifiedItemValue(anIndex);
if (aReprItem.IsNull())
continue;
aBinder = aTP->Find(aReprItem);
if (!aBinder.IsNull())
{
aBinders.Append(aBinder);
}
}
continue;
}
Handle(StepRepr_PropertyDefinition) aPropDef =
Handle(StepRepr_PropertyDefinition)::DownCast(aSharedListOfSA.Value());
if (!aPropDef.IsNull() && aPropDef != aPropDefinition)
{
Interface_EntityIterator aSharingListOfPD = theWS->Graph().Sharings(aPropDef);
for (aSharingListOfPD.Start(); aSharingListOfPD.More(); aSharingListOfPD.Next())
{
Handle(StepShape_ShapeDefinitionRepresentation) aShDef =
Handle(StepShape_ShapeDefinitionRepresentation)::DownCast(aSharingListOfPD.Value());
if (aShDef.IsNull())
continue;
findReprItems(theWS, aShDef, aBinders);
}
continue;
}
Handle(StepShape_ShapeDefinitionRepresentation) aShapeDefRepr =
Handle(StepShape_ShapeDefinitionRepresentation)::DownCast(aSharedListOfSA.Value());
if (!aShapeDefRepr.IsNull())
{
findReprItems(theWS, aShapeDefRepr, aBinders);
}
}
}
}
if (aBinders.IsEmpty())
continue;
TDF_LabelSequence aLabelSeq;
NCollection_List<Handle(Transfer_Binder)>::Iterator aBindIt(aBinders);
for (; aBindIt.More(); aBindIt.Next())
{
TopoDS_Shape aShape = TransferBRep::ShapeResult(aTP, aBindIt.Value());
if (aShape.IsNull())
continue;
TDF_Label aShapeLabel;
if (myMap.IsBound(aShape))
{
aShapeLabel = myMap.Find(aShape);
}
if (!aShapeLabel.IsNull())
{
aLabelSeq.Append(aShapeLabel);
}
}
//create metadata
for (TDF_LabelSequence::Iterator aLabelIt(aLabelSeq); aLabelIt.More(); aLabelIt.Next())
{
TDF_Label aLabel = aLabelIt.Value();
Handle(TDataStd_NamedData) anAttr;
if (!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAttr))
{
anAttr = new TDataStd_NamedData;
aLabel.AddAttribute(anAttr);
}
fillAttributes(theWS, aPropDefinition, theLocalFactors, anAttr);
if (!aGroupedProperties.IsEmpty())
{
NCollection_List<Handle(StepRepr_PropertyDefinition)>::Iterator aPropIt(aGroupedProperties);
for ( ; aPropIt.More(); aPropIt.Next())
{
fillAttributes(theWS, aPropIt.Value(), theLocalFactors, anAttr);
}
}
}
}
}
return Standard_True;
}
//=======================================================================
//function : findReprItems
//purpose :
//=======================================================================
Standard_Boolean STEPCAFControl_Reader::findReprItems(const Handle(XSControl_WorkSession)& theWS,
const Handle(StepShape_ShapeDefinitionRepresentation)& theShDefRepr,
NCollection_List<Handle(Transfer_Binder)>& theBinders) const
{
Handle(StepRepr_Representation) aRepr = theShDefRepr->UsedRepresentation();
if (aRepr.IsNull())
{
return Standard_False;
}
Handle(Transfer_Binder) aBinder;
const Handle(Transfer_TransientProcess)& aTP = theWS->TransferReader()->TransientProcess();
Handle(StepRepr_HArray1OfRepresentationItem) aReprItems = aRepr->Items();
if (!aReprItems->IsEmpty())
{
for (Standard_Integer anInd = aReprItems->Lower(); anInd <= aReprItems->Upper(); anInd++)
{
Handle(StepRepr_RepresentationItem) aReprItem = aReprItems->Value(anInd);
aBinder = aTP->Find(aReprItem);
if (!aBinder.IsNull())
{
theBinders.Append(aBinder);
}
}
}
return Standard_True;
}
//=======================================================================
//function : fillAttributes
//purpose :
//=======================================================================
Standard_Boolean STEPCAFControl_Reader::fillAttributes(const Handle(XSControl_WorkSession)& theWS,
const Handle(StepRepr_PropertyDefinition)& thePropDef,
const StepData_Factors& theLocalFactors,
Handle(TDataStd_NamedData)& theAttr) const
{
// skip if key is null
if (thePropDef->Name().IsNull())
{
return Standard_False;
}
Handle(StepRepr_PropertyDefinitionRepresentation) aPropDefRepr;
Interface_EntityIterator aSharingListOfPD = theWS->Graph().Sharings(thePropDef);
for (aSharingListOfPD.Start(); aSharingListOfPD.More(); aSharingListOfPD.Next())
{
aPropDefRepr = Handle(StepRepr_PropertyDefinitionRepresentation)::DownCast(aSharingListOfPD.Value());
if (aPropDefRepr.IsNull())
continue;
Handle(StepRepr_Representation) aUsedRepr = aPropDefRepr->UsedRepresentation();
if (aUsedRepr.IsNull())
continue;
Handle(StepRepr_HArray1OfRepresentationItem) aReprItems = aUsedRepr->Items();
if (!aReprItems.IsNull())
{
for (Standard_Integer anIndex = aReprItems->Lower(); anIndex <= aReprItems->Upper(); anIndex++)
{
Handle(StepRepr_RepresentationItem) anItem = aReprItems->Value(anIndex);
if (anItem.IsNull())
continue;
if (anItem->IsKind(STANDARD_TYPE(StepRepr_DescriptiveRepresentationItem)))
{
Handle(StepRepr_DescriptiveRepresentationItem) aDescrItem = Handle(StepRepr_DescriptiveRepresentationItem)::DownCast(anItem);
Handle(TCollection_HAsciiString) aDescription = aDescrItem->Description();
theAttr->SetString(thePropDef->Name()->ToCString(), aDescription->ToCString());
}
else if (anItem->IsKind(STANDARD_TYPE(StepRepr_MeasureRepresentationItem)))
{
Handle(StepRepr_MeasureRepresentationItem) aMeasureItem = Handle(StepRepr_MeasureRepresentationItem)::DownCast(anItem);
Standard_Real aValue = aMeasureItem->Measure()->ValueComponent();
TCollection_AsciiString aValType = aMeasureItem->Measure()->ValueComponentMember()->Name();
StepBasic_Unit anUnit = aMeasureItem->Measure()->UnitComponent();
if (!anUnit.IsNull())
{
Standard_Real aParam = 1.;
if (anUnit.Type() == STANDARD_TYPE(StepBasic_DerivedUnit))
{
Handle(StepBasic_DerivedUnit) aDUnit = anUnit.DerivedUnit();
for (Standard_Integer anInd = 1; anInd <= aDUnit->NbElements(); ++anInd)
{
Handle(StepBasic_DerivedUnitElement) aDUElem = aDUnit->ElementsValue(anInd);
Standard_Real anExp = aDUElem->Exponent();
Handle(StepBasic_NamedUnit) aNUnit = aDUElem->Unit();
if (!aNUnit.IsNull())
{
if (aNUnit->IsKind(STANDARD_TYPE(StepBasic_ConversionBasedUnitAndLengthUnit)) ||
aNUnit->IsKind(STANDARD_TYPE(StepBasic_SiUnitAndLengthUnit)))
{
STEPConstruct_UnitContext anUnitCtx;
anUnitCtx.ComputeFactors(aNUnit, theLocalFactors);
if (aValType == "VOLUME_MEASURE")
{
aParam = pow(theLocalFactors.LengthFactor(), anExp);
}
else
{
aParam = aParam / pow(theLocalFactors.LengthFactor(), anExp);
}
}
else if (aNUnit->IsKind(STANDARD_TYPE(StepBasic_ConversionBasedUnitAndMassUnit))) {
Standard_Real aFact = 1.;
if (GetMassConversionFactor(aNUnit, aFact))
{
aParam = aParam * aFact;
}
}
else
{
STEPConstruct_UnitContext anUnitCtx;
anUnitCtx.ComputeFactors(aNUnit, theLocalFactors);
if (anUnitCtx.AreaDone())
aParam = anUnitCtx.AreaFactor();
if (anUnitCtx.LengthDone())
{
Standard_Real aLengthFactor = anUnitCtx.LengthFactor();
aParam *= pow(aLengthFactor, anExp);
}
}
}
}
aValue = aValue * aParam;
}
else
{
Handle(StepBasic_NamedUnit) aNUnit = anUnit.NamedUnit();
if (!aNUnit.IsNull())
{
if (aNUnit->IsKind(STANDARD_TYPE(StepBasic_ConversionBasedUnitAndMassUnit)))
{
Standard_Real aFact = 1.;
if (GetMassConversionFactor(aNUnit, aFact))
{
aValue *= aFact;
}
}
else
{
STEPConstruct_UnitContext anUnitCtx;
anUnitCtx.ComputeFactors(aNUnit, theLocalFactors);
if (anUnitCtx.AreaDone())
aParam = anUnitCtx.AreaFactor();
if (anUnitCtx.VolumeDone())
aParam = anUnitCtx.VolumeFactor();
if (anUnitCtx.LengthDone())
aParam = anUnitCtx.LengthFactor();
aValue *= aParam;
}
}
}
}
theAttr->SetReal(thePropDef->Name()->ToCString(), aValue);
}
else if (anItem->IsKind(STANDARD_TYPE(StepRepr_ValueRepresentationItem)))
{
Handle(StepRepr_ValueRepresentationItem) aValueItem = Handle(StepRepr_ValueRepresentationItem)::DownCast(anItem);
Handle(StepBasic_MeasureValueMember) aMeasureValueMem = aValueItem->ValueComponentMember();
Interface_ParamType aParamType = aMeasureValueMem->ParamType();
if (aParamType == Interface_ParamInteger)
{
theAttr->SetInteger(thePropDef->Name()->ToCString(), aMeasureValueMem->Integer());
}
else if (aParamType == Interface_ParamReal)
{
theAttr->SetReal(thePropDef->Name()->ToCString(), aMeasureValueMem->Real());
}
}
else if (anItem->IsKind(STANDARD_TYPE(StepRepr_IntegerRepresentationItem)))
{
Handle(StepRepr_IntegerRepresentationItem) anIntegerItem = Handle(StepRepr_IntegerRepresentationItem)::DownCast(anItem);
theAttr->SetInteger(thePropDef->Name()->ToCString(), anIntegerItem->Value());
}
else if (anItem->IsKind(STANDARD_TYPE(StepRepr_RealRepresentationItem)))
{
Handle(StepRepr_RealRepresentationItem) aRealItem = Handle(StepRepr_RealRepresentationItem)::DownCast(anItem);
theAttr->SetReal(thePropDef->Name()->ToCString(), aRealItem->Value());
}
else if (anItem->IsKind(STANDARD_TYPE(StepRepr_BooleanRepresentationItem)))
{
Handle(StepRepr_BooleanRepresentationItem) aBoolItem = Handle(StepRepr_BooleanRepresentationItem)::DownCast(anItem);
theAttr->SetInteger(thePropDef->Name()->ToCString(), aBoolItem->Value());
}
}
}
}
return Standard_True;
}

View File

@@ -17,7 +17,6 @@
#define _STEPCAFControl_Reader_HeaderFile
#include <STEPControl_Reader.hxx>
#include <StepData_Factors.hxx>
#include <IFSelect_ReturnStatus.hxx>
#include <TDF_LabelSequence.hxx>
#include <TopTools_MapOfShape.hxx>
@@ -29,21 +28,18 @@
#include <XCAFDimTolObjects_DatumModifWithValue.hxx>
class XSControl_WorkSession;
class TDataStd_NamedData;
class TDocStd_Document;
class STEPCAFControl_ExternFile;
class TopoDS_Shape;
class XCAFDoc_ShapeTool;
class StepRepr_RepresentationItem;
class Transfer_TransientProcess;
class StepBasic_NamedUnit;
class StepShape_ConnectedFaceSet;
class StepShape_ShapeDefinitionRepresentation;
class StepRepr_NextAssemblyUsageOccurrence;
class StepRepr_PropertyDefinition;
class STEPConstruct_Tool;
class StepDimTol_Datum;
class Transfer_Binder;
class StepData_Factors;
//! Provides a tool to read STEP file and put it into
//! DECAF document. Besides transfer of shapes (including
@@ -181,11 +177,6 @@ public:
Standard_EXPORT Standard_Boolean GetPropsMode() const;
//! MetaMode for indicate read Metadata or not.
Standard_EXPORT void SetMetaMode(const Standard_Boolean theMetaMode);
Standard_EXPORT Standard_Boolean GetMetaMode() const;
//! Set SHUO mode for indicate write SHUO or not.
Standard_EXPORT void SetSHUOMode (const Standard_Boolean shuomode);
@@ -243,7 +234,7 @@ protected:
Standard_EXPORT Standard_Boolean ReadColors
(const Handle(XSControl_WorkSession)& WS,
const Handle(TDocStd_Document)& doc,
const StepData_Factors& theLocalFactors = StepData_Factors()) const;
const StepData_Factors& theLocalFactors) const;
//! Reads names of parts defined in the STEP model and
//! assigns them to corresponding labels in the DECAF document
@@ -255,13 +246,7 @@ protected:
Standard_EXPORT Standard_Boolean ReadValProps (const Handle(XSControl_WorkSession)& WS,
const Handle(TDocStd_Document)& doc,
const STEPCAFControl_DataMapOfPDExternFile& PDFileMap,
const StepData_Factors& theLocalFactors = StepData_Factors()) const;
//! Reads metadata assigned to shapes in the STEP model and
//! assigns them to corresponding labels in the DECAF document
Standard_EXPORT Standard_Boolean ReadMetadata(const Handle(XSControl_WorkSession)& theWS,
const Handle(TDocStd_Document)& theDoc,
const StepData_Factors& theLocalFactors = StepData_Factors()) const;
const StepData_Factors& theLocalFactors) const;
//! Reads layers of parts defined in the STEP model and
//! set reference between shape and layers in the DECAF document
@@ -275,19 +260,19 @@ protected:
//! set reference between shape instances from different assemblyes
Standard_EXPORT Standard_Boolean ReadGDTs (const Handle(XSControl_WorkSession)& WS,
const Handle(TDocStd_Document)& doc,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
//! Reads materials for instances defined in the STEP model and
//! set reference between shape instances from different assemblyes
Standard_EXPORT Standard_Boolean ReadMaterials (const Handle(XSControl_WorkSession)& WS,
const Handle(TDocStd_Document)& doc,
const Handle(TColStd_HSequenceOfTransient)& SeqPDS,
const StepData_Factors& theLocalFactors = StepData_Factors()) const;
const StepData_Factors& theLocalFactors) const;
//! Reads Views for instances defined in the STEP model
Standard_EXPORT Standard_Boolean ReadViews(const Handle(XSControl_WorkSession)& theWS,
const Handle(TDocStd_Document)& theDoc,
const StepData_Factors& theLocalFactors = StepData_Factors()) const;
const StepData_Factors& theLocalFactors) const;
//! Populates the sub-Label of the passed TDF Label with shape
//! data associated with the given STEP Representation Item,
@@ -329,37 +314,26 @@ private:
const Standard_Real theModifValue,
const Handle(TDocStd_Document)& theDoc,
const Handle(XSControl_WorkSession)& theWS,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
//! Internal method. Read Datums, connected to GeomTolerance theGDTL.
Standard_Boolean readDatumsAP242(const Handle(Standard_Transient)& theEnt,
const TDF_Label theGDTL,
const Handle(TDocStd_Document)& theDoc,
const Handle(XSControl_WorkSession)& theWS,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
//! Internal method. Read Dimension or GeomTolerance.
TDF_Label createGDTObjectInXCAF(const Handle(Standard_Transient)& theEnt,
const Handle(TDocStd_Document)& theDoc,
const Handle(XSControl_WorkSession)& theWS,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
//! Prepares units for transfer
void prepareUnits(const Handle(StepData_StepModel)& theModel,
const Handle(TDocStd_Document)& theDoc,
StepData_Factors& theLocalFactors) const;
//! Find RepresentationItems
Standard_Boolean findReprItems(const Handle(XSControl_WorkSession) & theWS,
const Handle(StepShape_ShapeDefinitionRepresentation) & theShDefRepr,
NCollection_List<Handle(Transfer_Binder)>& theBinders) const;
//! Fill metadata
Standard_Boolean fillAttributes(const Handle(XSControl_WorkSession)& theWS,
const Handle(StepRepr_PropertyDefinition)& thePropDef,
const StepData_Factors& theLocalFactors,
Handle(TDataStd_NamedData)& theAttr) const;
private:
STEPControl_Reader myReader;
@@ -369,7 +343,6 @@ private:
Standard_Boolean myNameMode;
Standard_Boolean myLayerMode;
Standard_Boolean myPropsMode;
Standard_Boolean myMetaMode;
Standard_Boolean mySHUOMode;
Standard_Boolean myGDTMode;
Standard_Boolean myMatMode;

View File

@@ -25,7 +25,6 @@
#include <STEPControl_Writer.hxx>
#include <StepAP242_GeometricItemSpecificUsage.hxx>
#include <StepData_ConfParameters.hxx>
#include <StepData_Factors.hxx>
#include <StepDimTol_Datum.hxx>
#include <StepDimTol_GeometricTolerance.hxx>
#include <StepDimTol_HArray1OfDatumSystemOrReference.hxx>
@@ -40,6 +39,7 @@ class XSControl_WorkSession;
class TDocStd_Document;
class STEPCAFControl_ExternFile;
class TopoDS_Shape;
class StepData_Factors;
//! Provides a tool to write DECAF document to the
//! STEP file. Besides transfer of shapes (including
@@ -233,7 +233,7 @@ protected:
TopoDS_Shape transferExternFiles(const TDF_Label& theLabel,
const STEPControl_StepModelType theMode,
TDF_LabelSequence& theLabelSeq,
const StepData_Factors& theLocalFactors = StepData_Factors(),
const StepData_Factors& theLocalFactors,
const Standard_CString thePrefix = "",
const Message_ProgressRange& theProgress = Message_ProgressRange());
@@ -256,7 +256,7 @@ protected:
//! Write D&GTs assigned to specified labels, to STEP model, according AP242
Standard_Boolean writeDGTsAP242(const Handle(XSControl_WorkSession)& theWS,
const TDF_LabelSequence& theLabels,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
//! Write materials assigned to specified labels, to STEP model
Standard_Boolean writeMaterials(const Handle(XSControl_WorkSession)& theWS,
@@ -297,14 +297,14 @@ protected:
const gp_Ax2& theAnnotationPlane,
const gp_Pnt& theTextPosition,
const Handle(Standard_Transient)& theDimension,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Handle(StepDimTol_Datum) writeDatumAP242(const Handle(XSControl_WorkSession)& theWS,
const TDF_LabelSequence& theShapeL,
const TDF_Label& theDatumL,
const Standard_Boolean isFirstDTarget,
const Handle(StepDimTol_Datum)& theWrittenDatum,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
void writeToleranceZone(const Handle(XSControl_WorkSession)& theWS,
const Handle(XCAFDimTolObjects_GeomToleranceObject)& theObject,
@@ -316,7 +316,7 @@ protected:
const TDF_Label& theGeomTolL,
const Handle(StepDimTol_HArray1OfDatumSystemOrReference)& theDatumSystem,
const Handle(StepRepr_RepresentationContext)& theRC,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
private:

View File

@@ -23,8 +23,8 @@
#include <Standard_Integer.hxx>
#include <Standard_CString.hxx>
#include <StepData_Factors.hxx>
#include <StepBasic_SiPrefix.hxx>
class StepData_Factors;
class StepData_StepModel;
class StepGeom_GeomRepContextAndGlobUnitAssCtxAndGlobUncertaintyAssCtx;
class StepRepr_GlobalUnitAssignedContext;
@@ -49,7 +49,7 @@ public:
//! uncertainty equal to Tol3d)
Standard_EXPORT void Init (const Standard_Real Tol3d,
const Handle(StepData_StepModel)& theModel,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
//! Returns True if Init was called successfully
Standard_EXPORT Standard_Boolean IsDone() const;
@@ -60,10 +60,10 @@ public:
//! Computes the length, plane angle and solid angle conversion
//! factor . Returns a status, 0 if OK
Standard_EXPORT Standard_Integer ComputeFactors (const Handle(StepRepr_GlobalUnitAssignedContext)& aContext,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
Standard_EXPORT Standard_Integer ComputeFactors (const Handle(StepBasic_NamedUnit)& aUnit,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
//! Computes the uncertainty value (for length)
Standard_EXPORT Standard_Integer ComputeTolerance (const Handle(StepRepr_GlobalUncertaintyAssignedContext)& aContext);

View File

@@ -26,6 +26,7 @@
#include <Standard_CString.hxx>
#include <TColStd_SequenceOfTransient.hxx>
class StepBasic_ProductDefinition;
class StepData_Factors;
class XSControl_WorkSession;
class TopoDS_Shape;
class StepRepr_RepresentationItem;
@@ -114,13 +115,13 @@ public:
Standard_EXPORT Standard_Boolean GetPropReal (const Handle(StepRepr_RepresentationItem)& item,
Standard_Real& Val,
Standard_Boolean& isArea,
const StepData_Factors& theLocalFactors = StepData_Factors()) const;
const StepData_Factors& theLocalFactors) const;
//! Returns value of Centriod property (or False if it is not)
Standard_EXPORT Standard_Boolean GetPropPnt (const Handle(StepRepr_RepresentationItem)& item,
const Handle(StepRepr_RepresentationContext)& Context,
gp_Pnt& Pnt,
const StepData_Factors& theLocalFactors = StepData_Factors()) const;
const StepData_Factors& theLocalFactors) const;
//! Sets current assembly shape SDR (for FindCDSR calls)
Standard_EXPORT void SetAssemblyShape (const TopoDS_Shape& shape);

View File

@@ -122,7 +122,6 @@
#include <XSAlgo_AlgoContainer.hxx>
#include <StepRepr_ConstructiveGeometryRepresentationRelationship.hxx>
#include <StepRepr_ConstructiveGeometryRepresentation.hxx>
#include <StepRepr_MechanicalDesignAndDraughtingRelationship.hxx>
#include <Geom_Plane.hxx>
IMPLEMENT_STANDARD_RTTIEXT(STEPControl_ActorRead,Transfer_ActorOfTransientProcess)
@@ -1225,72 +1224,6 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity(
}
//=======================================================================
//function : TransferEntity
//purpose :
//=======================================================================
Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity(
const Handle(StepRepr_MechanicalDesignAndDraughtingRelationship)& theMDADR,
const Handle(Transfer_TransientProcess)& theTP,
const StepData_Factors& theLocalFactors,
const Message_ProgressRange& theProgress)
{
Handle(TransferBRep_ShapeBinder) aShBinder;
if (theMDADR.IsNull())
return aShBinder;
Standard_Boolean aResetUnits = Standard_False;
Handle(StepRepr_Representation) anOldSRContext = mySRContext;
StepData_Factors aLocalFactors = theLocalFactors;
TopoDS_Compound aComp;
BRep_Builder aBuilder;
aBuilder.MakeCompound(aComp);
Message_ProgressScope aPS(theProgress, NULL, 2);
for (Standard_Integer anIndex = 1; anIndex <= 2; anIndex++)
{
Message_ProgressRange aRange = aPS.Next();
Handle(StepRepr_Representation) aRepr = (anIndex == 1) ? theMDADR->Rep1() : theMDADR->Rep2();
if (aRepr.IsNull())
continue;
if (mySRContext.IsNull() || aRepr->ContextOfItems() != mySRContext->ContextOfItems())
{
PrepareUnits(aRepr, theTP, aLocalFactors);
aResetUnits = Standard_True;
}
Handle(Transfer_Binder) aBinder;
if (aRepr->IsKind(STANDARD_TYPE(StepShape_ShapeRepresentation)))
{
Handle(StepShape_ShapeRepresentation) aShapeRepr = Handle(StepShape_ShapeRepresentation)::DownCast(aRepr);
Standard_Boolean isBound = Standard_False;
if (!theTP->IsBound(aShapeRepr))
{
aBinder = TransferEntity(aShapeRepr, theTP, theLocalFactors, isBound, false, aRange);
}
else
{
aBinder = theTP->Find(aShapeRepr);
}
}
TopoDS_Shape aResult = TransferBRep::ShapeResult(aBinder);
if (!aResult.IsNull())
{
aBuilder.Add(aComp, aResult);
}
}
aShBinder = new TransferBRep_ShapeBinder(aComp);
mySRContext = anOldSRContext;
if (anOldSRContext.IsNull() || aResetUnits)
{
PrepareUnits(anOldSRContext, theTP, aLocalFactors);
}
theTP->Bind(theMDADR, aShBinder);
return aShBinder;
}
//=======================================================================
//function : IsNeedRepresentation
//purpose :
@@ -1536,7 +1469,7 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity
}
else if (start->IsKind(STANDARD_TYPE(StepVisual_TessellatedSurfaceSet)))
{
myShapeBuilder.Init(GetCasted(StepVisual_TessellatedSurfaceSet, start), TP, aHasGeom, aLocalFactors);
myShapeBuilder.Init(GetCasted(StepVisual_TessellatedSurfaceSet, start), TP, aLocalFactors, aHasGeom);
found = Standard_True;
}
}
@@ -2189,12 +2122,6 @@ TopoDS_Shape STEPControl_ActorRead::TransferRelatedSRR(const Handle(Transfer_Tra
Standard_Integer aNbRep = (theRep == aSRR->Rep1() ? 2 : 1);
aBinder = TransferEntity(aSRR, theTP, theLocalFactors, aNbRep, theUseTrsf, thePS.Next());
}
else if (anItem->DynamicType() == STANDARD_TYPE(StepRepr_MechanicalDesignAndDraughtingRelationship))
{
Handle(StepRepr_MechanicalDesignAndDraughtingRelationship) aMDADR =
Handle(StepRepr_MechanicalDesignAndDraughtingRelationship)::DownCast(anItem);
aBinder = TransferEntity(aMDADR, theTP, theLocalFactors, thePS.Next());
}
else if (theReadConstructiveGeomRR &&
anItem->DynamicType() == STANDARD_TYPE(StepRepr_ConstructiveGeometryRepresentationRelationship))
{

View File

@@ -20,7 +20,6 @@
#include <Standard.hxx>
#include <Standard_Type.hxx>
#include <StepData_Factors.hxx>
#include <StepToTopoDS_NMTool.hxx>
#include <Transfer_ActorOfTransientProcess.hxx>
#include <Standard_Integer.hxx>
@@ -48,7 +47,7 @@ class StepShape_FaceSurface;
class TopoDS_Shell;
class TopoDS_Compound;
class StepRepr_ConstructiveGeometryRepresentationRelationship;
class StepRepr_MechanicalDesignAndDraughtingRelationship;
class StepData_Factors;
class StepData_StepModel;
@@ -78,7 +77,7 @@ public:
Standard_EXPORT Handle(Transfer_Binder) TransferShape (
const Handle(Standard_Transient)& start,
const Handle(Transfer_TransientProcess)& TP,
const StepData_Factors& theLocalFactors = StepData_Factors(),
const StepData_Factors& theLocalFactors,
const Standard_Boolean isManifold = Standard_True,
const Standard_Boolean theUseTrsf = Standard_False,
const Message_ProgressRange& theProgress = Message_ProgressRange());
@@ -106,14 +105,14 @@ public:
const Handle(StepRepr_Representation)& TargContext,
const Handle(Transfer_TransientProcess)& TP,
gp_Trsf& Trsf,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
//! Computes transformation defined by given
//! REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION
Standard_EXPORT Standard_Boolean ComputeSRRWT (const Handle(StepRepr_RepresentationRelationship)& SRR,
const Handle(Transfer_TransientProcess)& TP,
gp_Trsf& Trsf,
const StepData_Factors& theLocalFactors = StepData_Factors());
const StepData_Factors& theLocalFactors);
@@ -128,7 +127,7 @@ protected:
Standard_EXPORT Handle(TransferBRep_ShapeBinder) TransferEntity (
const Handle(StepBasic_ProductDefinition)& PD,
const Handle(Transfer_TransientProcess)& TP,
const StepData_Factors& theLocalFactors = StepData_Factors(),
const StepData_Factors& theLocalFactors,
const Standard_Boolean theUseTrsf = Standard_False,
const Message_ProgressRange& theProgress = Message_ProgressRange());
@@ -136,7 +135,7 @@ protected:
Standard_EXPORT Handle(TransferBRep_ShapeBinder) TransferEntity
(const Handle(StepRepr_NextAssemblyUsageOccurrence)& NAUO,
const Handle(Transfer_TransientProcess)& TP,
const StepData_Factors& theLocalFactors = StepData_Factors(),
const StepData_Factors& theLocalFactors,
const Message_ProgressRange& theProgress = Message_ProgressRange());
//! Transfers shape representation entity
@@ -153,7 +152,7 @@ protected:
Standard_EXPORT Handle(TransferBRep_ShapeBinder) TransferEntity
(const Handle(StepShape_ContextDependentShapeRepresentation)& CDSR,
const Handle(Transfer_TransientProcess)& TP,
const StepData_Factors& theLocalFactors = StepData_Factors(),
const StepData_Factors& theLocalFactors,
const Message_ProgressRange& theProgress = Message_ProgressRange());
//! Transfers shape representation relationship entity
@@ -190,13 +189,7 @@ protected:
Handle(TransferBRep_ShapeBinder) TransferEntity( const Handle(StepRepr_ConstructiveGeometryRepresentationRelationship)& theCGRR,
const Handle(Transfer_TransientProcess)& theTP,
const StepData_Factors& theLocalFactors = StepData_Factors());
//! Transfers MechanicalDesignAndDraughtingRelationship entity
Handle(TransferBRep_ShapeBinder) TransferEntity(const Handle(StepRepr_MechanicalDesignAndDraughtingRelationship)& theMDADR,
const Handle(Transfer_TransientProcess)& theTP,
const StepData_Factors& theLocalFactors,
const Message_ProgressRange& theProgress);
const StepData_Factors& theLocalFactors);
//! Translates file by old way when CDSR are roots . Acts only if "read.step.product_mode" is equal Off.
Standard_EXPORT Handle(TransferBRep_ShapeBinder) OldWay

View File

@@ -28,6 +28,7 @@
class Transfer_Finder;
class Transfer_Binder;
class Transfer_FinderProcess;
class StepData_Factors;
class StepShape_ShapeDefinitionRepresentation;
class StepGeom_Axis2Placement3d;
class TopoDS_Shape;
@@ -59,7 +60,7 @@ public:
const Handle(StepShape_ShapeDefinitionRepresentation)& SDR,
Handle(StepGeom_Axis2Placement3d)& AX1,
const Handle(Transfer_FinderProcess)& FP,
const StepData_Factors& theLocalFactors = StepData_Factors(),
const StepData_Factors& theLocalFactors,
const Handle(TopTools_HSequenceOfShape)& shapeGroup = NULL,
const Standard_Boolean isManifold = Standard_True,
const Message_ProgressRange& theProgress = Message_ProgressRange());
@@ -68,7 +69,7 @@ public:
(const Handle(Transfer_Finder)& start,
const Handle(StepShape_ShapeDefinitionRepresentation)& SDR,
const Handle(Transfer_FinderProcess)& FP,
const StepData_Factors& theLocalFactors = StepData_Factors(),
const StepData_Factors& theLocalFactors,
const Handle(TopTools_HSequenceOfShape)& shapeGroup = NULL,
const Standard_Boolean isManifold = Standard_True,
const Message_ProgressRange& theProgress = Message_ProgressRange());
@@ -77,7 +78,7 @@ public:
(const Handle(Transfer_Finder)& start,
const Handle(StepShape_ShapeDefinitionRepresentation)& SDR,
const Handle(Transfer_FinderProcess)& FP,
const StepData_Factors& theLocalFactors = StepData_Factors(),
const StepData_Factors& theLocalFactors,
const Message_ProgressRange& theProgress = Message_ProgressRange());
Standard_EXPORT void SetMode (const STEPControl_StepModelType M);

View File

@@ -93,24 +93,6 @@ Handle(SelectMgr_BaseIntersector) SelectMgr_AxisIntersector::ScaleAndTransform (
return aRes;
}
//=======================================================================
// function : CopyWithBuilder
// purpose : Returns a copy of the frustum using the given frustum builder configuration.
// Returned frustum should be re-constructed before being used.
//=======================================================================
Handle(SelectMgr_BaseIntersector) SelectMgr_AxisIntersector::CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const
{
(void )theBuilder;
Standard_ASSERT_RAISE(mySelectionType == SelectMgr_SelectionType_Point,
"Error! SelectMgr_AxisIntersector::CopyWithBuilder() should be called after selection axis initialization");
Handle(SelectMgr_AxisIntersector) aRes = new SelectMgr_AxisIntersector();
aRes->myAxis = myAxis;
aRes->mySelectionType = mySelectionType;
return aRes;
}
// =======================================================================
// function : hasIntersection
// purpose :

View File

@@ -52,11 +52,6 @@ public:
const gp_GTrsf& theTrsf,
const Handle(SelectMgr_FrustumBuilder)& theBuilder) const Standard_OVERRIDE;
//! Returns a copy of the intersector transformed using the builder configuration given.
//! Builder is an argument that represents corresponding settings for re-constructing transformed frustum from scratch.
//! In this class, builder is not used and theBuilder parameter is ignored.
Standard_EXPORT virtual Handle(SelectMgr_BaseIntersector) CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const Standard_OVERRIDE;
public:
//! Intersection test between defined axis and given axis-aligned box

View File

@@ -71,11 +71,6 @@ public:
const gp_GTrsf& theTrsf,
const Handle(SelectMgr_FrustumBuilder)& theBuilder) const = 0;
//! @param theBuilder [in] argument that represents corresponding settings for re-constructing transformed frustum from scratch;
//! should NOT be NULL.
//! @return a copy of the frustum with the input builder assigned
virtual Handle(SelectMgr_BaseIntersector) CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const = 0;
public:
//! Return camera definition.

View File

@@ -449,28 +449,6 @@ Handle(SelectMgr_BaseIntersector) SelectMgr_RectangularFrustum::ScaleAndTransfor
return aRes;
}
// =======================================================================
// function : CopyWithBuilder
// purpose : Returns a copy of the frustum using the given frustum builder configuration.
// Returned frustum should be re-constructed before being used.
// =======================================================================
Handle(SelectMgr_BaseIntersector) SelectMgr_RectangularFrustum::CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const
{
Standard_ASSERT_RAISE (mySelectionType == SelectMgr_SelectionType_Point || mySelectionType == SelectMgr_SelectionType_Box,
"Error! SelectMgr_RectangularFrustum::CopyWithBuilder() should be called after selection frustum initialization");
Standard_ASSERT_RAISE (!theBuilder.IsNull(),
"Error! SelectMgr_RectangularFrustum::CopyWithBuilder() should be called with valid builder");
Handle(SelectMgr_RectangularFrustum) aRes = new SelectMgr_RectangularFrustum();
aRes->mySelectionType = mySelectionType;
aRes->mySelRectangle = mySelRectangle;
aRes->myPixelTolerance = myPixelTolerance;
aRes->SetBuilder (theBuilder);
return aRes;
}
// =======================================================================
// function : IsScalable
// purpose :

View File

@@ -99,13 +99,6 @@ public:
const gp_GTrsf& theTrsf,
const Handle(SelectMgr_FrustumBuilder)& theBuilder) const Standard_OVERRIDE;
//! Returns a copy of the frustum using the given frustum builder configuration.
//! Returned frustum should be re-constructed before being used.
//! @param theBuilder [in] argument that represents corresponding settings for re-constructing transformed frustum from scratch;
//! should NOT be NULL.
//! @return a copy of the frustum with the input builder assigned
Standard_EXPORT virtual Handle(SelectMgr_BaseIntersector) CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const Standard_OVERRIDE;
// SAT Tests for different objects
//! SAT intersection test between defined volume and given axis-aligned box

View File

@@ -241,20 +241,14 @@ namespace
//=============================================================================
SelectMgr_SelectableObjectSet::SelectMgr_SelectableObjectSet()
{
myBVH[BVHSubset_ortho2dPersistent] = new BVH_Tree<Standard_Real, 3>();
myBVH[BVHSubset_ortho3dPersistent] = new BVH_Tree<Standard_Real, 3>();
myBVH[BVHSubset_2dPersistent] = new BVH_Tree<Standard_Real, 3>();
myBVH[BVHSubset_3dPersistent] = new BVH_Tree<Standard_Real, 3>();
myBVH[BVHSubset_3d] = new BVH_Tree<Standard_Real, 3>();
myBuilder[BVHSubset_ortho2dPersistent] = new BVH_LinearBuilder<Standard_Real, 3> (BVH_Constants_LeafNodeSizeSingle, BVH_Constants_MaxTreeDepth);
myBuilder[BVHSubset_ortho3dPersistent] = new BVH_LinearBuilder<Standard_Real, 3> (BVH_Constants_LeafNodeSizeSingle, BVH_Constants_MaxTreeDepth);
myBuilder[BVHSubset_2dPersistent] = new BVH_LinearBuilder<Standard_Real, 3> (BVH_Constants_LeafNodeSizeSingle, BVH_Constants_MaxTreeDepth);
myBuilder[BVHSubset_3dPersistent] = new BVH_LinearBuilder<Standard_Real, 3> (BVH_Constants_LeafNodeSizeSingle, BVH_Constants_MaxTreeDepth);
myBuilder[BVHSubset_3d] = new BVH_BinnedBuilder<Standard_Real, 3, 4> (BVH_Constants_LeafNodeSizeSingle, BVH_Constants_MaxTreeDepth, Standard_True);
myIsDirty[BVHSubset_ortho2dPersistent] = Standard_False;
myIsDirty[BVHSubset_ortho3dPersistent] = Standard_False;
myIsDirty[BVHSubset_2dPersistent] = Standard_False;
myIsDirty[BVHSubset_3dPersistent] = Standard_False;
myIsDirty[BVHSubset_3d] = Standard_False;
@@ -270,7 +264,8 @@ Standard_Boolean SelectMgr_SelectableObjectSet::Append (const Handle(SelectMgr_S
const Standard_Integer aSubsetIdx = appropriateSubset (theObject);
// check that the object is excluded from other subsets
if (currentSubset (theObject) != -1)
if (myObjects[(aSubsetIdx + 1) % BVHSubsetNb].Contains (theObject)
|| myObjects[(aSubsetIdx + 2) % BVHSubsetNb].Contains (theObject))
{
return Standard_False;
}
@@ -406,51 +401,9 @@ void SelectMgr_SelectableObjectSet::UpdateBVH (const Handle(Graphic3d_Camera)& t
myBuilder[BVHSubset_2dPersistent]->Build (&anAdaptor, myBVH[BVHSubset_2dPersistent].get(), anAdaptor.Box());
}
// -------------------------------------------------------------------
// check and update 3D orthographic persistence BVH tree if necessary
// -------------------------------------------------------------------
if (!IsEmpty (BVHSubset_ortho3dPersistent)
&& (myIsDirty[BVHSubset_ortho3dPersistent]
|| myLastViewState.IsChanged (aViewState)
|| isWinSizeChanged))
{
Handle(Graphic3d_Camera) aNewOrthoCam = new Graphic3d_Camera (*theCam); // If OrthoPers, copy camera and set to orthographic projection
aNewOrthoCam->SetProjectionType (Graphic3d_Camera::Projection_Orthographic);
// construct adaptor over private fields to provide direct access for the BVH builder
BVHBuilderAdaptorPersistent anAdaptor (myObjects[BVHSubset_ortho3dPersistent],
aNewOrthoCam, aNewOrthoCam->ProjectionMatrix(),
aNewOrthoCam->OrientationMatrix(), theWinSize);
// update corresponding BVH tree data structure
myBuilder[BVHSubset_ortho3dPersistent]->Build (&anAdaptor, myBVH[BVHSubset_ortho3dPersistent].get(), anAdaptor.Box());
}
// -------------------------------------------------------------------
// check and update 2D orthographic persistence BVH tree if necessary
// -------------------------------------------------------------------
if (!IsEmpty (BVHSubset_ortho2dPersistent)
&& (myIsDirty[BVHSubset_ortho2dPersistent]
|| myLastViewState.IsProjectionChanged (aViewState)
|| isWinSizeChanged))
{
Handle(Graphic3d_Camera) aNewOrthoCam = new Graphic3d_Camera (*theCam); // If OrthoPers, copy camera and set to orthographic projection
aNewOrthoCam->SetProjectionType (Graphic3d_Camera::Projection_Orthographic);
// construct adaptor over private fields to provide direct access for the BVH builder
BVHBuilderAdaptorPersistent anAdaptor (myObjects[BVHSubset_ortho2dPersistent],
aNewOrthoCam, aNewOrthoCam->ProjectionMatrix(),
SelectMgr_SelectableObjectSet_THE_IDENTITY_MAT, theWinSize);
// update corresponding BVH tree data structure
myBuilder[BVHSubset_ortho2dPersistent]->Build (&anAdaptor, myBVH[BVHSubset_ortho2dPersistent].get(), anAdaptor.Box());
}
// release dirty state for every subset
myIsDirty[BVHSubset_3dPersistent] = Standard_False;
myIsDirty[BVHSubset_2dPersistent] = Standard_False;
myIsDirty[BVHSubset_ortho3dPersistent] = Standard_False;
myIsDirty[BVHSubset_ortho2dPersistent] = Standard_False;
// keep last view state
myLastViewState = aViewState;
@@ -469,8 +422,6 @@ void SelectMgr_SelectableObjectSet::MarkDirty()
myIsDirty[BVHSubset_3d] = Standard_True;
myIsDirty[BVHSubset_3dPersistent] = Standard_True;
myIsDirty[BVHSubset_2dPersistent] = Standard_True;
myIsDirty[BVHSubset_ortho3dPersistent] = Standard_True;
myIsDirty[BVHSubset_ortho2dPersistent] = Standard_True;
}
//=======================================================================
//function : DumpJson

View File

@@ -42,22 +42,11 @@ public:
//! needs to be updated only when camera's projection changes. Bounding volumes for this object subclass
//! is represented directly in eye space coordinates.
//! This subset uses linear BVH builder with 32 levels of depth and 1 element per leaf.
//! - BVHSubset_ortho3dPersistent refers to the subset of 3D persistent selectable objects (rotate, pan, zoom persistence)
//! that contains `Graphic3d_TMF_OrthoPers` persistence mode.
//! Associated BVH tree needs to be updated when either the camera's projection and position change.
//! This subset uses linear BVH builder with 32 levels of depth and 1 element per leaf.
//! - BVHSubset_ortho2dPersistent refers to the subset of 2D persistent selectable objects
//! that contains `Graphic3d_TMF_OrthoPers` persistence mode. Associated BVH tree
//! needs to be updated only when camera's projection changes. Bounding volumes for this object subclass
//! is represented directly in eye space coordinates.
//! This subset uses linear BVH builder with 32 levels of depth and 1 element per leaf.
enum BVHSubset
{
BVHSubset_3d,
BVHSubset_3dPersistent,
BVHSubset_2dPersistent,
BVHSubset_ortho3dPersistent,
BVHSubset_ortho2dPersistent,
BVHSubsetNb
};
@@ -151,9 +140,7 @@ public:
{
return myObjects[BVHSubset_3d].Contains (theObject)
|| myObjects[BVHSubset_3dPersistent].Contains (theObject)
|| myObjects[BVHSubset_2dPersistent].Contains (theObject)
|| myObjects[BVHSubset_ortho3dPersistent].Contains (theObject)
|| myObjects[BVHSubset_ortho2dPersistent].Contains (theObject);
|| myObjects[BVHSubset_2dPersistent].Contains (theObject);
}
//! Returns true if the object set does not contain any selectable objects.
@@ -161,9 +148,7 @@ public:
{
return myObjects[BVHSubset_3d].IsEmpty()
&& myObjects[BVHSubset_3dPersistent].IsEmpty()
&& myObjects[BVHSubset_2dPersistent].IsEmpty()
&& myObjects[BVHSubset_ortho3dPersistent].IsEmpty()
&& myObjects[BVHSubset_ortho2dPersistent].IsEmpty();
&& myObjects[BVHSubset_2dPersistent].IsEmpty();
}
//! Returns true if the specified object subset is empty.
@@ -207,18 +192,10 @@ private:
}
return SelectMgr_SelectableObjectSet::BVHSubset_3d;
}
else if ((theObject->TransformPersistence()->Mode() & Graphic3d_TMF_2d) != 0)
else if (theObject->TransformPersistence()->Mode() == Graphic3d_TMF_2d)
{
if (theObject->TransformPersistence()->IsOrthoPers())
{
return SelectMgr_SelectableObjectSet::BVHSubset_ortho2dPersistent;
}
return SelectMgr_SelectableObjectSet::BVHSubset_2dPersistent;
}
else if (theObject->TransformPersistence()->IsOrthoPers())
{
return SelectMgr_SelectableObjectSet::BVHSubset_ortho3dPersistent;
}
else
{
return SelectMgr_SelectableObjectSet::BVHSubset_3dPersistent;

View File

@@ -67,28 +67,6 @@ SelectMgr_SelectingVolumeManager SelectMgr_SelectingVolumeManager::ScaleAndTrans
return aMgr;
}
//=======================================================================
// function : CopyWithBuilder
// purpose : Returns a copy of the selecting volume manager and its active frustum re-constructed using the passed builder.
// Builder is an argument that represents corresponding settings for re-constructing transformed
// frustum from scratch.
//=======================================================================
SelectMgr_SelectingVolumeManager SelectMgr_SelectingVolumeManager::CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const
{
SelectMgr_SelectingVolumeManager aMgr;
aMgr.myToAllowOverlap = myToAllowOverlap;
aMgr.myViewClipPlanes = myViewClipPlanes;
aMgr.myObjectClipPlanes = myObjectClipPlanes;
aMgr.myViewClipRange = myViewClipRange;
if (!myActiveSelectingVolume.IsNull())
{
aMgr.myActiveSelectingVolume = myActiveSelectingVolume->CopyWithBuilder (theBuilder);
aMgr.BuildSelectingVolume();
}
return aMgr;
}
//=======================================================================
// function : GetActiveSelectionType
// purpose :

View File

@@ -81,11 +81,6 @@ public:
const gp_GTrsf& theTrsf,
const Handle(SelectMgr_FrustumBuilder)& theBuilder) const;
//! Returns a copy of the selecting volume manager and its active frustum re-constructed using the passed builder.
//! Builder is an argument that represents corresponding settings for re-constructing transformed
//! frustum from scratch.
Standard_EXPORT virtual SelectMgr_SelectingVolumeManager CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const;
public:
//! Returns current camera definition.

View File

@@ -28,7 +28,7 @@ IMPLEMENT_STANDARD_RTTIEXT(SelectMgr_SensitiveEntitySet, BVH_PrimitiveSet3d)
SelectMgr_SensitiveEntitySet::SelectMgr_SensitiveEntitySet (const Handle(Select3D_BVHBuilder3d)& theBuilder)
: BVH_PrimitiveSet3d (theBuilder)
{
myNbEntityWithPersistence = 0;
//
}
//=======================================================================
@@ -42,6 +42,7 @@ void SelectMgr_SensitiveEntitySet::Append (const Handle(SelectMgr_SensitiveEntit
theEntity->ResetSelectionActiveStatus();
return;
}
const Standard_Integer anExtent = mySensitives.Extent();
if (mySensitives.Add (theEntity) > anExtent)
{
@@ -49,7 +50,7 @@ void SelectMgr_SensitiveEntitySet::Append (const Handle(SelectMgr_SensitiveEntit
}
if (!theEntity->BaseSensitive()->TransformPersistence().IsNull())
{
++myNbEntityWithPersistence;
myHasEntityWithPersistence = Standard_True;
}
MarkDirty();
}
@@ -77,7 +78,7 @@ void SelectMgr_SensitiveEntitySet::Append (const Handle(SelectMgr_Selection)& th
}
if (!aSensEnt->BaseSensitive()->TransformPersistence().IsNull())
{
++myNbEntityWithPersistence;
myHasEntityWithPersistence = Standard_True;
}
}
MarkDirty();
@@ -92,8 +93,7 @@ void SelectMgr_SensitiveEntitySet::Remove (const Handle(SelectMgr_Selection)& th
{
for (NCollection_Vector<Handle(SelectMgr_SensitiveEntity)>::Iterator aSelEntIter (theSelection->Entities()); aSelEntIter.More(); aSelEntIter.Next())
{
const Handle(SelectMgr_SensitiveEntity)& aSensEnt = aSelEntIter.Value();
const Standard_Integer anEntIdx = mySensitives.FindIndex (aSensEnt);
const Standard_Integer anEntIdx = mySensitives.FindIndex (aSelEntIter.Value());
if (anEntIdx == 0)
{
continue;
@@ -103,13 +103,9 @@ void SelectMgr_SensitiveEntitySet::Remove (const Handle(SelectMgr_Selection)& th
{
Swap (anEntIdx - 1, mySensitives.Size() - 1);
}
if (!aSensEnt->BaseSensitive()->TransformPersistence().IsNull())
{
--myNbEntityWithPersistence;
}
mySensitives.RemoveLast();
removeOwner (aSensEnt->BaseSensitive()->OwnerId());
removeOwner (aSelEntIter.Value()->BaseSensitive()->OwnerId());
}
MarkDirty();

View File

@@ -77,7 +77,7 @@ public:
const SelectMgr_MapOfOwners& Owners() const { return myOwnersMap; }
//! Returns map of entities.
Standard_Boolean HasEntityWithPersistence() const { return myNbEntityWithPersistence > 0; }
Standard_Boolean HasEntityWithPersistence() const { return myHasEntityWithPersistence; }
protected:
@@ -91,7 +91,7 @@ private:
SelectMgr_IndexedMapOfHSensitive mySensitives; //!< Map of entities and its corresponding index in BVH
SelectMgr_MapOfOwners myOwnersMap; //!< Map of entity owners and its corresponding number of sensitives
Standard_Integer myNbEntityWithPersistence; //!< number of sensitive entities that have own transform persistence
Standard_Boolean myHasEntityWithPersistence; //!< flag if some of sensitive entity has own transform persistence
};
#endif // _SelectMgr_SensitiveEntitySet_HeaderFile

View File

@@ -33,11 +33,9 @@ public:
Standard_Real Depth; //!< distance from the view plane to the entity
Standard_Real MinDist; //!< distance from the clicked point to the entity on the view plane
Standard_Real Tolerance; //!< tolerance used for selecting candidates
Standard_Integer SelectionPriority; //!< selection priority
Standard_Integer DisplayPriority; //!< display priority
Standard_Integer Priority; //!< selection priority
Standard_Integer ZLayerPosition; //!< ZLayer rendering order index, stronger than a depth
Standard_Integer NbOwnerMatches; //!< overall number of entities collected for the same owner
Standard_Boolean IsPreferPriority; //!< flag to signal comparison to be done over priority
public:
DEFINE_STANDARD_ALLOC
@@ -47,11 +45,9 @@ public:
: Depth (0.0),
MinDist (0.0),
Tolerance(0.0),
SelectionPriority (0),
DisplayPriority(0),
Priority (0),
ZLayerPosition (0),
NbOwnerMatches (0),
IsPreferPriority (Standard_False) {}
NbOwnerMatches (0) {}
//! Compare with another item by depth, priority and minDist.
bool IsCloserDepth (const SelectMgr_SortCriterion& theOther) const
@@ -90,18 +86,13 @@ public:
}
// if two objects have similar depth, select the one with higher priority
if (SelectionPriority > theOther.SelectionPriority)
{
return true;
}
if (DisplayPriority > theOther.DisplayPriority)
if (Priority > theOther.Priority)
{
return true;
}
// if priorities are equal, one closest to the mouse
return SelectionPriority == theOther.SelectionPriority
return Priority == theOther.Priority
&& MinDist < theOther.MinDist;
}
@@ -114,14 +105,13 @@ public:
return ZLayerPosition > theOther.ZLayerPosition;
}
if (SelectionPriority != theOther.SelectionPriority)
if (Priority > theOther.Priority)
{
return SelectionPriority > theOther.SelectionPriority;
return true;
}
if (DisplayPriority != theOther.DisplayPriority)
else if (Priority != theOther.Priority)
{
return DisplayPriority > theOther.DisplayPriority;
return false;
}
//if (Abs (Depth - theOther.Depth) <= (Tolerance + theOther.Tolerance))

View File

@@ -189,20 +189,6 @@ Handle(SelectMgr_BaseIntersector) SelectMgr_TriangularFrustum::ScaleAndTransform
return aRes;
}
//=======================================================================
// function : CopyWithBuilder
// purpose : Returns a copy of the frustum using the given frustum builder configuration.
// Returned frustum should be re-constructed before being used.
//=======================================================================
Handle(SelectMgr_BaseIntersector) SelectMgr_TriangularFrustum::CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const
{
Handle(SelectMgr_TriangularFrustum) aRes = new SelectMgr_TriangularFrustum();
aRes->mySelTriangle = mySelTriangle;
aRes->SetBuilder (theBuilder);
return aRes;
}
//=======================================================================
// function : OverlapsBox
// purpose : SAT intersection test between defined volume and

View File

@@ -55,13 +55,6 @@ public:
const gp_GTrsf& theTrsf,
const Handle(SelectMgr_FrustumBuilder)& theBuilder) const Standard_OVERRIDE;
//! Returns a copy of the frustum using the given frustum builder configuration.
//! Returned frustum should be re-constructed before being used.
//! @param theBuilder [in] argument that represents corresponding settings for re-constructing transformed frustum from scratch;
//! should NOT be NULL.
//! @return a copy of the frustum with the input builder assigned
Standard_EXPORT virtual Handle(SelectMgr_BaseIntersector) CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const Standard_OVERRIDE;
public: //! @name SAT Tests for different objects
//! SAT intersection test between defined volume and given axis-aligned box

View File

@@ -186,32 +186,6 @@ Handle(SelectMgr_BaseIntersector) SelectMgr_TriangularFrustumSet::ScaleAndTransf
return aRes;
}
//=======================================================================
// function : CopyWithBuilder
// purpose : Returns a copy of the frustum using the given frustum builder configuration.
// Returned frustum should be re-constructed before being used.
//=======================================================================
Handle(SelectMgr_BaseIntersector) SelectMgr_TriangularFrustumSet::CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const
{
Standard_ASSERT_RAISE (mySelectionType == SelectMgr_SelectionType_Polyline,
"Error! SelectMgr_TriangularFrustumSet::CopyWithBuilder() should be called after selection frustum initialization");
Standard_ASSERT_RAISE (!theBuilder.IsNull(),
"Error! SelectMgr_TriangularFrustumSet::CopyWithBuilder() should be called with valid builder");
Handle(SelectMgr_TriangularFrustumSet) aRes = new SelectMgr_TriangularFrustumSet();
aRes->SetCamera (myCamera);
for (SelectMgr_TriangFrustums::Iterator anIter (myFrustums); anIter.More(); anIter.Next())
{
aRes->myFrustums.Append (Handle(SelectMgr_TriangularFrustum)::DownCast (anIter.Value()->CopyWithBuilder (theBuilder)));
}
aRes->mySelectionType = mySelectionType;
aRes->mySelPolyline = mySelPolyline;
aRes->myToAllowOverlap = myToAllowOverlap;
aRes->SetBuilder (theBuilder);
return aRes;
}
// =======================================================================
// function : OverlapsBox
// purpose :

View File

@@ -62,13 +62,6 @@ public:
const gp_GTrsf& theTrsf,
const Handle(SelectMgr_FrustumBuilder)& theBuilder) const Standard_OVERRIDE;
//! Returns a copy of the frustum using the given frustum builder configuration.
//! Returned frustum should be re-constructed before being used.
//! @param theBuilder [in] argument that represents corresponding settings for re-constructing transformed frustum from scratch;
//! should NOT be NULL.
//! @return a copy of the frustum with the input builder assigned
Standard_EXPORT virtual Handle(SelectMgr_BaseIntersector) CopyWithBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder) const Standard_OVERRIDE;
public:
Standard_EXPORT virtual Standard_Boolean OverlapsBox (const SelectMgr_Vec3& theMinPnt,

View File

@@ -16,7 +16,6 @@
#include <SelectMgr_ViewerSelector.hxx>
#include <AIS_InteractiveObject.hxx>
#include <BVH_Tree.hxx>
#include <gp_GTrsf.hxx>
#include <gp_Pnt.hxx>
@@ -55,13 +54,13 @@ namespace
{
const SelectMgr_SortCriterion& anElemLeft = myMapOfCriterion->FindFromIndex (theLeft);
const SelectMgr_SortCriterion& anElemRight = myMapOfCriterion->FindFromIndex (theRight);
if ((anElemLeft.IsPreferPriority && anElemRight.IsPreferPriority) || !myToPreferClosest)
if (myToPreferClosest)
{
return anElemLeft.IsHigherPriority (anElemRight);
return anElemLeft.IsCloserDepth (anElemRight);
}
else
{
return anElemLeft.IsCloserDepth (anElemRight);
return anElemLeft.IsHigherPriority (anElemRight);
}
}
@@ -139,12 +138,12 @@ void SelectMgr_ViewerSelector::updatePoint3d (SelectMgr_SortCriterion& theCriter
case SelectMgr_TypeOfDepthTolerance_UniformPixels:
case SelectMgr_TypeOfDepthTolerance_SensitivityFactor:
{
if (theMgr.Camera().IsNull())
if (mySelectingVolumeMgr.Camera().IsNull())
{
// fallback for an arbitrary projection matrix
theCriterion.Tolerance = aSensFactor / 33.0;
}
else if (theMgr.Camera()->IsOrthographic())
else if (mySelectingVolumeMgr.Camera()->IsOrthographic())
{
theCriterion.Tolerance = myCameraScale * aSensFactor;
}
@@ -271,32 +270,13 @@ void SelectMgr_ViewerSelector::checkOverlap (const Handle(Select3D_SensitiveEnti
{
return;
}
SelectMgr_SortCriterion aCriterion;
myZLayerOrderMap.Find (!aSelectable.IsNull() ? aSelectable->ZLayer() : Graphic3d_ZLayerId_Default, aCriterion.ZLayerPosition);
aCriterion.Entity = theEntity;
aCriterion.SelectionPriority = anOwner->Priority();
aCriterion.Priority = anOwner->Priority();
aCriterion.Depth = aPickResult.Depth();
aCriterion.MinDist = aPickResult.DistToGeomCenter();
Handle(AIS_InteractiveObject) anObj = Handle(AIS_InteractiveObject)::DownCast (aSelectable);
if (!aSelectable.IsNull())
{
if (aSelectable->Presentations().Size() > 0 && !aSelectable->TransformPersistence().IsNull())
{
if (aSelectable->TransformPersistence()->Mode() == Graphic3d_TMF_2d)
{
aCriterion.IsPreferPriority = Standard_True;
aCriterion.DisplayPriority = Graphic3d_DisplayPriority_INVALID;
if (!anObj.IsNull())
{
Handle(Prs3d_Presentation) aPrs = anObj->Presentation();
if (!aPrs.IsNull())
{
aCriterion.DisplayPriority = aPrs->DisplayPriority();
}
}
}
}
}
if (SelectMgr_SortCriterion* aPrevCriterion = mystored.ChangeSeek (anOwner))
{
@@ -654,9 +634,6 @@ void SelectMgr_ViewerSelector::TraverseSensitives (const Standard_Integer theVie
Graphic3d_Vec2i aWinSize;
mySelectingVolumeMgr.WindowSize (aWinSize.x(), aWinSize.y());
const double aPixelSize = aWinSize.x() > 0 && aWinSize.y() > 0
? Max (1.0 / aWinSize.x(), 1.0 / aWinSize.y())
: 1.0;
const Handle(Graphic3d_Camera)& aCamera = mySelectingVolumeMgr.Camera();
Graphic3d_Mat4d aProjectionMat, aWorldViewMat;
@@ -669,6 +646,11 @@ void SelectMgr_ViewerSelector::TraverseSensitives (const Standard_Integer theVie
myCameraEye = aCamera->Eye().XYZ();
myCameraDir = aCamera->Direction().XYZ();
myCameraScale = aCamera->IsOrthographic()
? aCamera->Scale()
: 2.0 * Tan (aCamera->FOVy() * M_PI / 360.0);
const double aPixelSize = Max (1.0 / aWinSize.x(), 1.0 / aWinSize.y());
myCameraScale *= aPixelSize;
}
mySelectableObjects.UpdateBVH (aCamera, aWinSize);
@@ -690,8 +672,7 @@ void SelectMgr_ViewerSelector::TraverseSensitives (const Standard_Integer theVie
// for 2D space selection transform selecting volumes to perform overlap testing
// directly in camera's eye space omitting the camera position, which is not
// needed there at all
if (aBVHSubset == SelectMgr_SelectableObjectSet::BVHSubset_2dPersistent
|| aBVHSubset == SelectMgr_SelectableObjectSet::BVHSubset_ortho2dPersistent)
if (aBVHSubset == SelectMgr_SelectableObjectSet::BVHSubset_2dPersistent)
{
gp_GTrsf aTFrustum;
aTFrustum.SetValue (1, 1, aWorldViewMat.GetValue (0, 0));
@@ -707,46 +688,22 @@ void SelectMgr_ViewerSelector::TraverseSensitives (const Standard_Integer theVie
aWorldViewMat.GetValue (1, 3),
aWorldViewMat.GetValue (2, 3)));
// define corresponding frustum builder parameters for 2d persistence.
// define corresponding frustum builder parameters
Handle(SelectMgr_FrustumBuilder) aBuilder = new SelectMgr_FrustumBuilder();
Handle(Graphic3d_Camera) aNewCamera = new Graphic3d_Camera();
aNewCamera->CopyMappingData (aCamera);
aNewCamera->SetIdentityOrientation();
if (aBVHSubset == SelectMgr_SelectableObjectSet::BVHSubset_ortho2dPersistent)
{
aNewCamera->SetProjectionType (Graphic3d_Camera::Projection_Orthographic);
}
aWorldViewMat = aNewCamera->OrientationMatrix(); // should be identity matrix
aProjectionMat = aNewCamera->ProjectionMatrix(); // should be the same to aProjectionMat
aBuilder->SetCamera (aNewCamera);
aBuilder->SetWindowSize (aWinSize.x(), aWinSize.y());
aMgr = mySelectingVolumeMgr.ScaleAndTransform (1, aTFrustum, aBuilder);
}
else if (aBVHSubset == SelectMgr_SelectableObjectSet::BVHSubset_ortho3dPersistent)
{
// define corresponding frustum builder parameters for 3d orthographic persistence.
Handle(SelectMgr_FrustumBuilder) aBuilder = new SelectMgr_FrustumBuilder();
Handle(Graphic3d_Camera) aNewCamera = new Graphic3d_Camera (*aCamera);
aNewCamera->SetProjectionType (Graphic3d_Camera::Projection_Orthographic);
aWorldViewMat = aNewCamera->OrientationMatrix(); // should be the same to aWorldViewMat
aProjectionMat = aNewCamera->ProjectionMatrix(); // should be orthographic projection
aBuilder->SetCamera (aNewCamera);
aBuilder->SetWindowSize (aWinSize.x(), aWinSize.y());
aMgr = mySelectingVolumeMgr.CopyWithBuilder (aBuilder);
}
else
{
aMgr = mySelectingVolumeMgr;
}
if (!aMgr.Camera().IsNull())
{
myCameraScale = aMgr.Camera()->IsOrthographic()
? aMgr.Camera()->Scale()
: 2.0 * Tan (aMgr.Camera()->FOVy() * M_PI / 360.0);
myCameraScale *= aPixelSize;
}
const opencascade::handle<BVH_Tree<Standard_Real, 3> >& aBVHTree = mySelectableObjects.BVH (aBVHSubset);
Standard_Integer aNode = 0;

View File

@@ -328,7 +328,7 @@ protected:
//! @param theObject [in] the selectable object for traversal.
//! @param theMgr [in] the (un)transformed copy of the selecting volume manager representing active selection frustum.
//! @param theCamera, theProjectionMat, theWorldViewMat [in] the source camera and matrices for theMgr given.
//! @param theWinSize [in] viewport (window) dimensions for evaluating
//! @param theViewportWidth, theViewportHeight [in] viewport (window) dimensions for evaluating
//! object's transformation persistence.
Standard_EXPORT void traverseObject (const Handle(SelectMgr_SelectableObject)& theObject,
const SelectMgr_SelectingVolumeManager& theMgr,

View File

@@ -14,8 +14,10 @@
#include <Standard_Type.hxx>
#include <Standard_Mutex.hxx>
#include <Standard_Assert.hxx>
#include <Standard_CStringHasher.hxx>
#include <Standard_Mutex.hxx>
#include <unordered_map>
@@ -23,12 +25,23 @@ IMPLEMENT_STANDARD_RTTIEXT(Standard_Type,Standard_Transient)
//============================================================================
namespace
{
static Standard_CString copy_string (const char* theString)
{
size_t aLength = strlen (theString);
char* aResult = static_cast<char*> (Standard::Allocate (aLength + 1));
strncpy (aResult, theString, aLength + 1); //including null-character
return aResult;
}
}
Standard_Type::Standard_Type (const std::type_info& theInfo,
const char* theName,
Standard_Size theSize,
const Handle(Standard_Type)& theParent) :
myInfo(theInfo),
myName(theName),
myName(copy_string (theName)),
mySize(theSize),
myParent(theParent)
{
@@ -62,7 +75,7 @@ void Standard_Type::Print (Standard_OStream& AStream) const
namespace {
// Map of string to type
typedef std::unordered_map<std::type_index, Standard_Type*> registry_type;
typedef std::unordered_map<Standard_CString, Standard_Type*, Standard_CStringHasher, Standard_CStringHasher> registry_type;
// Registry is made static in the function to ensure that it gets
// initialized by the time of first access
@@ -87,7 +100,7 @@ Standard_Type* Standard_Type::Register (const std::type_info& theInfo, const cha
// return existing descriptor if already in the registry
registry_type& aRegistry = GetRegistry();
Standard_Type* aType = 0;
auto anIter = aRegistry.find(theInfo);
auto anIter = aRegistry.find(theName);
if (anIter != aRegistry.end())
return anIter->second;
@@ -95,7 +108,7 @@ Standard_Type* Standard_Type::Register (const std::type_info& theInfo, const cha
aType = new Standard_Type (theInfo, theName, theSize, theParent);
// then add it to registry and return (the reference to the handle stored in the registry)
aRegistry.emplace(theInfo, aType);
aRegistry.emplace(theName, aType);
return aType;
}
@@ -103,5 +116,6 @@ Standard_Type::~Standard_Type ()
{
// remove descriptor from the registry
registry_type& aRegistry = GetRegistry();
Standard_ASSERT(aRegistry.erase(myInfo) > 0, "Standard_Type::~Standard_Type() cannot find itself in registry",);
Standard_ASSERT(aRegistry.erase(myName) > 0, "Standard_Type::~Standard_Type() cannot find itself in registry",);
Standard::Free (myName);
}

View File

@@ -35,19 +35,19 @@
// Primary definitions
#define OCC_VERSION_MAJOR 7
#define OCC_VERSION_MINOR 8
#define OCC_VERSION_MAINTENANCE 2
#define OCC_VERSION_MAINTENANCE 1
//! This macro must be commented in official release, and set to non-empty
//! string in other situations, to identify specifics of the version, e.g.:
//! - "dev" for development version between releases
//! - "beta..." or "rc..." for beta releases or release candidates
//! - "project..." for version containing project-specific fixes
#define OCC_VERSION_DEVELOPMENT "dev"
//#define OCC_VERSION_DEVELOPMENT "dev"
// Derived (manually): version as real and string (major.minor)
#define OCC_VERSION 7.8
#define OCC_VERSION_STRING "7.8"
#define OCC_VERSION_COMPLETE "7.8.2"
#define OCC_VERSION_COMPLETE "7.8.1"
//! Derived: extended version as string ("major.minor.maintenance.dev")
#ifdef OCC_VERSION_DEVELOPMENT

View File

@@ -158,8 +158,6 @@ static Standard_CString schemaAP242DIS = "AP242_MANAGED_MODEL_BASED_3D_ENGINEERI
#include <StepShape_GeometricallyBoundedWireframeShapeRepresentation.hxx>
#include <StepRepr_GlobalUncertaintyAssignedContext.hxx>
#include <StepRepr_GlobalUnitAssignedContext.hxx>
#include <StepBasic_GeneralPropertyAssociation.hxx>
#include <StepBasic_GeneralPropertyRelationship.hxx>
#include <StepBasic_GroupRelationship.hxx>
#include <StepShape_HalfSpaceSolid.hxx>
#include <StepGeom_Hyperbola.hxx>
@@ -641,9 +639,7 @@ static Standard_CString schemaAP242DIS = "AP242_MANAGED_MODEL_BASED_3D_ENGINEERI
#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndUneqDisGeoTol.hxx>
#include <StepRepr_CompGroupShAspAndCompShAspAndDatumFeatAndShAsp.hxx>
#include <StepRepr_CompShAspAndDatumFeatAndShAsp.hxx>
#include <StepRepr_BooleanRepresentationItem.hxx>
#include <StepRepr_IntegerRepresentationItem.hxx>
#include <StepRepr_RealRepresentationItem.hxx>
#include <StepRepr_ValueRepresentationItem.hxx>
#include <StepAP242_DraughtingModelItemAssociation.hxx>
#include <StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMaxTol.hxx>
@@ -661,7 +657,6 @@ static Standard_CString schemaAP242DIS = "AP242_MANAGED_MODEL_BASED_3D_ENGINEERI
#include <StepRepr_CharacterizedRepresentation.hxx>
#include <StepRepr_ConstructiveGeometryRepresentation.hxx>
#include <StepRepr_ConstructiveGeometryRepresentationRelationship.hxx>
#include <StepRepr_MechanicalDesignAndDraughtingRelationship.hxx>
#include <StepVisual_CharacterizedObjAndRepresentationAndDraughtingModel.hxx>
#include <StepVisual_AnnotationFillArea.hxx>
#include <StepVisual_AnnotationFillAreaOccurrence.hxx>
@@ -1565,11 +1560,6 @@ StepAP214_Protocol::StepAP214_Protocol ()
types.Bind(STANDARD_TYPE(StepVisual_CubicBezierTessellatedEdge), 817);
types.Bind(STANDARD_TYPE(StepVisual_CubicBezierTriangulatedFace), 818);
types.Bind(STANDARD_TYPE(StepVisual_TriangulatedSurfaceSet), 819);
types.Bind(STANDARD_TYPE(StepBasic_GeneralPropertyAssociation), 820);
types.Bind(STANDARD_TYPE(StepBasic_GeneralPropertyRelationship), 821);
types.Bind(STANDARD_TYPE(StepRepr_BooleanRepresentationItem), 822);
types.Bind(STANDARD_TYPE(StepRepr_RealRepresentationItem), 823);
types.Bind(STANDARD_TYPE(StepRepr_MechanicalDesignAndDraughtingRelationship), 824);
}

View File

@@ -135,10 +135,6 @@ StepBasic_ExternalSource.cxx
StepBasic_ExternalSource.hxx
StepBasic_GeneralProperty.cxx
StepBasic_GeneralProperty.hxx
StepBasic_GeneralPropertyAssociation.cxx
StepBasic_GeneralPropertyAssociation.hxx
StepBasic_GeneralPropertyRelationship.cxx
StepBasic_GeneralPropertyRelationship.hxx
StepBasic_Group.cxx
StepBasic_Group.hxx
StepBasic_GroupAssignment.cxx

View File

@@ -1,117 +0,0 @@
// Copyright (c) 2024 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.
#include <StepBasic_GeneralPropertyAssociation.hxx>
#include <TCollection_HAsciiString.hxx>
IMPLEMENT_STANDARD_RTTIEXT(StepBasic_GeneralPropertyAssociation, Standard_Transient)
//=======================================================================
//function : StepBasic_GeneralPropertyAssociation
//purpose :
//=======================================================================
StepBasic_GeneralPropertyAssociation::StepBasic_GeneralPropertyAssociation ()
{
}
//=======================================================================
//function : Init
//purpose :
//=======================================================================
void StepBasic_GeneralPropertyAssociation::Init (const Handle(TCollection_HAsciiString)& aName,
const Handle(TCollection_HAsciiString)& aDescription,
const Handle(StepBasic_GeneralProperty)& aGeneralProperty,
const Handle(StepRepr_PropertyDefinition)& aPropertyDefinition)
{
theName = aName;
theDescription = aDescription;
theGeneralProperty = aGeneralProperty;
thePropertyDefinition = aPropertyDefinition;
}
//=======================================================================
//function : Name
//purpose :
//=======================================================================
Handle(TCollection_HAsciiString) StepBasic_GeneralPropertyAssociation::Name() const
{
return theName;
}
//=======================================================================
//function : SetName
//purpose :
//=======================================================================
void StepBasic_GeneralPropertyAssociation::SetName(const Handle(TCollection_HAsciiString)& aName)
{
theName = aName;
}
//=======================================================================
//function : Description
//purpose :
//=======================================================================
Handle(TCollection_HAsciiString) StepBasic_GeneralPropertyAssociation::Description() const
{
return theDescription;
}
//=======================================================================
//function : SetDescription
//purpose :
//=======================================================================
void StepBasic_GeneralPropertyAssociation::SetDescription (const Handle(TCollection_HAsciiString)& aDescription)
{
theDescription = aDescription;
}
//=======================================================================
//function : GeneralProperty
//purpose :
//=======================================================================
Handle(StepBasic_GeneralProperty) StepBasic_GeneralPropertyAssociation::GeneralProperty() const
{
return theGeneralProperty;
}
//=======================================================================
//function : SetGeneralProperty
//purpose :
//=======================================================================
void StepBasic_GeneralPropertyAssociation::SetGeneralProperty(const Handle(StepBasic_GeneralProperty)& aGeneralProperty)
{
theGeneralProperty = aGeneralProperty;
}
//=======================================================================
//function : PropertyDefinition
//purpose :
//=======================================================================
Handle(StepRepr_PropertyDefinition) StepBasic_GeneralPropertyAssociation::PropertyDefinition() const
{
return thePropertyDefinition;
}
//=======================================================================
//function : SetPropertyDefinition
//purpose :
//=======================================================================
void StepBasic_GeneralPropertyAssociation::SetPropertyDefinition(const Handle(StepRepr_PropertyDefinition)& aPropertyDefinition)
{
thePropertyDefinition = aPropertyDefinition;
}

View File

@@ -1,84 +0,0 @@
// Copyright (c) 2024 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 _StepBasic_GeneralPropertyAssociation_HeaderFile
#define _StepBasic_GeneralPropertyAssociation_HeaderFile
#include <Standard.hxx>
#include <Standard_Type.hxx>
#include <Standard_Transient.hxx>
class TCollection_HAsciiString;
class StepBasic_GeneralProperty;
class StepRepr_PropertyDefinition;
DEFINE_STANDARD_HANDLE(StepBasic_GeneralPropertyAssociation, Standard_Transient)
//! Representation of STEP entity GeneralPropertyAssociation
class StepBasic_GeneralPropertyAssociation : public Standard_Transient
{
public:
//! Empty constructor
Standard_EXPORT StepBasic_GeneralPropertyAssociation();
//! Initialize all fields (own and inherited)
Standard_EXPORT void Init(const Handle(TCollection_HAsciiString)& aName,
const Handle(TCollection_HAsciiString)& aDescription,
const Handle(StepBasic_GeneralProperty)& aGeneralProperty,
const Handle(StepRepr_PropertyDefinition)& aPropertyDefinition);
//! Returns field Name
Standard_EXPORT Handle(TCollection_HAsciiString) Name() const;
//! Set field Name
Standard_EXPORT void SetName(const Handle(TCollection_HAsciiString)& Name);
//! Returns field Description
Standard_EXPORT Handle(TCollection_HAsciiString) Description() const;
//! Set field Description
Standard_EXPORT void SetDescription(const Handle(TCollection_HAsciiString)& Description);
//! Returns field GeneralProperty
Standard_EXPORT Handle(StepBasic_GeneralProperty) GeneralProperty() const;
//! Set field GeneralProperty
Standard_EXPORT void SetGeneralProperty(const Handle(StepBasic_GeneralProperty)& GeneralProperty);
//! Returns field PropertyDefinition
Standard_EXPORT Handle(StepRepr_PropertyDefinition) PropertyDefinition() const;
//! Set field PropertyDefinition
Standard_EXPORT void SetPropertyDefinition(const Handle(StepRepr_PropertyDefinition)& PropertyDefinition);
DEFINE_STANDARD_RTTIEXT(StepBasic_GeneralPropertyAssociation, Standard_Transient)
protected:
private:
Handle(TCollection_HAsciiString) theName;
Handle(TCollection_HAsciiString) theDescription;
Handle(StepBasic_GeneralProperty) theGeneralProperty;
Handle(StepRepr_PropertyDefinition) thePropertyDefinition;
};
#endif // _StepBasic_GeneralPropertyAssociation_HeaderFile

Some files were not shown because too many files have changed in this diff Show More