1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

Compare commits

..

9 Commits

Author SHA1 Message Date
dorlov
f501c6ffe2 0033338: Coding - IGESToBRep_CurveAndSurface's method has unreachable code
Applied minor changes in Error Message descriptions and code formatting
2023-03-27 15:40:30 +01:00
dorlov
4c8350dd52 0033338: Coding - IGESToBRep_CurveAndSurface's method has unreachable code
Fixed unreachable code in IGESToBRep_CurveAndSurface::TransferGeometry method
2023-03-27 15:36:24 +01:00
dpasukhi
c51df6bfd2 0033327: Data Exchange, IGES Import - SubfigureDef can't read string
Fixed problem with texted types
Added checking for null string for subfigure via XCAF transferring
2023-03-20 23:11:36 +00:00
dpasukhi
5e43274280 0033337: DRAW - Can't load plugins on Linux OS
WSL 2 have windows FileSystem and as a result we have \r symbols before \n
For this cases we can just remove \r\n (\n is a last symbol) for the node value.
2023-03-20 23:11:35 +00:00
dpasukhi
efe960751c 0033331: Data Exchange, Step Import - Unsupported Representation Items
Fixed problem with iteration on Null RI
2023-03-20 23:11:27 +00:00
anv
6b9e0dc3f8 0033345: Coding - Memory allocation operators got inaccessible
Macros was moved back to public.
2023-03-19 20:53:54 +00:00
akaftasev
2ef94c994e 0033340: Modeling Algorithm - Improve memory management performance in the PaveFiller
Changed NCollection_BaseAllocator to NCollection_IncAllocator in BOPAlgo_PaveFiller::MakeBlocks()
2023-03-19 20:53:53 +00:00
dpasukhi
1dd4b902c0 0033092: Data Exchange, Documentation - Implementation of DE_Wrapper documentation
Implement new user-guide documentation for DE Wrapper
2023-03-19 20:53:53 +00:00
akaftasev
a846d36326 0033264: Modeling Algorithms - Result of section operation is incomplete
Test case added.
2023-03-19 20:53:53 +00:00
12 changed files with 348 additions and 302 deletions

View File

@@ -62,6 +62,7 @@
#include <IntTools_SequenceOfCurves.hxx>
#include <IntTools_SequenceOfPntOn2Faces.hxx>
#include <IntTools_Tools.hxx>
#include <NCollection_IncAllocator.hxx>
#include <NCollection_Vector.hxx>
#include <Precision.hxx>
#include <TColStd_ListOfInteger.hxx>
@@ -578,14 +579,12 @@ void BOPAlgo_PaveFiller::MakeBlocks(const Message_ProgressRange& theRange)
Standard_Integer i, nF1, nF2, aNbC, aNbP, j;
Standard_Integer nV1, nV2;
Standard_Real aT1, aT2;
Handle(NCollection_BaseAllocator) aAllocator;
Handle(NCollection_BaseAllocator) aAllocator = new NCollection_IncAllocator;
BOPDS_ListIteratorOfListOfPaveBlock aItLPB;
TopoDS_Edge aES;
Handle(BOPDS_PaveBlock) aPBOut;
//
//-----------------------------------------------------scope f
aAllocator=
NCollection_BaseAllocator::CommonBaseAllocator();
//
TColStd_ListOfInteger aLSE(aAllocator), aLBV(aAllocator);
TColStd_MapOfInteger aMVOnIn(100, aAllocator), aMVCommon(100, aAllocator),

View File

@@ -322,7 +322,8 @@ Standard_Boolean IGESCAFControl_Reader::Transfer (const Handle(TDocStd_Document)
//Checks that current entity is a subfigure
Handle(IGESBasic_SubfigureDef) aSubfigure = Handle(IGESBasic_SubfigureDef)::DownCast (ent);
if (GetNameMode() && !aSubfigure.IsNull() && STool->Search (S, L, Standard_True, Standard_True))
if (GetNameMode() && !aSubfigure.IsNull() && !aSubfigure->Name().IsNull() &&
STool->Search(S, L, Standard_True, Standard_True))
{
//In this case we attach subfigure name to the label, instead of default "COMPOUND"
Handle(TCollection_HAsciiString) aName = aSubfigure->Name();

View File

@@ -633,34 +633,55 @@ Standard_Boolean IGESData_ParamReader::ReadXYZ
//=======================================================================
//function : ReadText
//purpose :
//purpose :
//=======================================================================
Standard_Boolean IGESData_ParamReader::ReadText
(const IGESData_ParamCursor& PC, const Message_Msg& amsg,
Handle(TCollection_HAsciiString)& val)
Standard_Boolean IGESData_ParamReader::ReadText(const IGESData_ParamCursor& thePC,
const Message_Msg& theMsg,
Handle(TCollection_HAsciiString)& theVal)
{
if (!PrepareRead(PC,Standard_False)) return Standard_False;
const Interface_FileParameter& FP = theparams->Value(theindex+thebase);
if (FP.ParamType() != Interface_ParamText) {
if (FP.ParamType() == Interface_ParamVoid) {
val = new TCollection_HAsciiString("");
if (!PrepareRead(thePC, Standard_False))
{
return Standard_False;
}
const Interface_FileParameter& aFP = theparams->Value(theindex + thebase);
if (aFP.ParamType() != Interface_ParamText)
{
theVal = new TCollection_HAsciiString("");
if (aFP.ParamType() == Interface_ParamVoid)
{
return Standard_True;
}
SendFail (amsg);
SendFail(theMsg);
return Standard_False;
}
Handle(TCollection_HAsciiString) tval = new TCollection_HAsciiString (FP.CValue());
Standard_Integer lnt = tval->Length();
Standard_Integer lnh = tval->Location(1,'H',1,lnt);
if (lnh <= 1 || lnh >= lnt) {
SendFail (amsg);
const Handle(TCollection_HAsciiString) aBaseValue = new TCollection_HAsciiString(aFP.CValue());
const Standard_Integer aBaseLength = aBaseValue->Length();
const Standard_Integer aSymbolLocation = aBaseValue->Location(1, 'H', 1, aBaseLength);
if (aSymbolLocation <= 1 || aSymbolLocation > aBaseLength)
{
theVal = new TCollection_HAsciiString("");
SendFail(theMsg);
return Standard_False;
} else {
Standard_Integer hol = atoi (tval->SubString(1,lnh-1)->ToCString());
if (hol != (lnt-lnh)) SendWarning (amsg);
}
val = new TCollection_HAsciiString(tval->SubString(lnh+1,lnt)->ToCString());
const TCollection_AsciiString aSpecialSubString = aBaseValue->String().SubString(1, aSymbolLocation - 1);
if (!aSpecialSubString.IsIntegerValue())
{
theVal = new TCollection_HAsciiString("");
SendFail(theMsg);
return Standard_False;
}
Standard_Integer aResLength = aSpecialSubString.IntegerValue();
if (aResLength != (aBaseLength - aSymbolLocation))
{
SendWarning(theMsg);
aResLength = aBaseLength - aSymbolLocation;
}
TCollection_AsciiString aResString;
if (aResLength > 0)
{
aResString = aBaseValue->String().SubString(aSymbolLocation + 1, aBaseLength);
}
theVal = new TCollection_HAsciiString(aResString);
return Standard_True;
}

View File

@@ -200,7 +200,7 @@ public:
//! For Message
Standard_EXPORT Standard_Boolean ReadXYZ (const IGESData_ParamCursor& PC, const Standard_CString mess, gp_XYZ& val);
Standard_EXPORT Standard_Boolean ReadText (const IGESData_ParamCursor& PC, const Message_Msg& amsg, Handle(TCollection_HAsciiString)& val);
Standard_EXPORT Standard_Boolean ReadText (const IGESData_ParamCursor& thePC, const Message_Msg& theMsg, Handle(TCollection_HAsciiString)& theVal);
//! Reads a Text value from parameter "num", as a String from
//! Collection, that is, Hollerith text without leading "nnnH"

View File

@@ -226,304 +226,270 @@ TopoDS_Shape IGESToBRep_CurveAndSurface::TransferCurveAndSurface
//function : TransferGeometry
//purpose :
//=======================================================================
TopoDS_Shape IGESToBRep_CurveAndSurface::TransferGeometry
(const Handle(IGESData_IGESEntity)& start,
(const Handle(IGESData_IGESEntity)& theStart,
const Message_ProgressRange& theProgress)
{
// Declaration of messages//
// DCE 22/12/98
//Message_Msg msg1005("IGES_1005"); // Software error : start IsNull.
//Message_Msg msg1015("IGES_1015"); // invalid type or exception raising (software error).
//Message_Msg msg1010("IGES_1010"); // Not sameparameter.
// Message_Msg msg1015("IGES_1015");
//Message_Msg msg210 ("XSTEP_210");
//Message_Msg msg202 ("XSTEP_202");
////////////////////////////
TopoDS_Shape res;
gp_Trsf T408;
if (start.IsNull()) {
Message_Msg msg1005("IGES_1005"); // Software error : start IsNull.
SendFail(start, msg1005);
return res;
// Declaration of messages//
// DCE 22/12/98
//Message_Msg aMsg1005("IGES_1001"); // The type of the Start is not recognized
//Message_Msg aMsg1005("IGES_1005"); // Software error : the Start IsNull.
//Message_Msg aMsg1015("IGES_1015"); // invalid type or exception raising (software error).
//Message_Msg aMsg1010("IGES_1010"); // Not sameparameter.
//Message_Msg aMsg1015("IGES_1020"); // Associated entity IsNull
//Message_Msg aMsg1015("IGES_1025"); // No shape is found for the associated entity for the type 308
//Message_Msg aMsg1015("IGES_1030"); // No shape is found for the associated entity for the type 402
//Message_Msg aMsg1015("IGES_1035"); // The conversion of a Location is not possible
//Message_Msg aMsg210 ("XSTEP_210"); // No associated entities for the type 308
//Message_Msg aMsg202 ("XSTEP_202"); // No associated entities for the type 402
////////////////////////////
TopoDS_Shape aRes;
gp_Trsf aT408;
if (theStart.IsNull())
{
const Message_Msg aMsg1005("IGES_1005"); // Software error : start IsNull.
SendFail(theStart, aMsg1005);
return aRes;
}
// Read of the DE number and the type number of the entity
Handle(TCollection_HAsciiString) label = GetModel()->StringLabel(start);
//Standard_Integer typeNumber = start->TypeNumber();
// sln 13.06.2002 OCC448: Avoid transferring invisible sub entities which
// logically depend on the one
Standard_Integer onlyvisible = Interface_Static::IVal("read.iges.onlyvisible");
if (IGESToBRep::IsCurveAndSurface(start)) {
if(onlyvisible && start->BlankStatus() == 1)
return res;
try {
const Standard_Integer anOnlyvisible = Interface_Static::IVal("read.iges.onlyvisible");
if (IGESToBRep::IsCurveAndSurface(theStart))
{
if(anOnlyvisible && theStart->BlankStatus() == 1)
return aRes;
try
{
OCC_CATCH_SIGNALS
res = TransferCurveAndSurface(start, theProgress);
aRes = TransferCurveAndSurface(theStart, theProgress);
}
catch(Standard_Failure const&) {
Message_Msg msg1015("IGES_1015");
SendFail(start, msg1015);
catch(Standard_Failure const&)
{
const Message_Msg aMsg1015("IGES_1015");
SendFail(theStart, aMsg1015);
}
return res;
return aRes;
}
//408 : SingularSubfigure
if (start->IsKind(STANDARD_TYPE(IGESBasic_SingularSubfigure)))
if (theStart->IsKind(STANDARD_TYPE(IGESBasic_SingularSubfigure)))
{
if(onlyvisible && start->BlankStatus() == 1)
return res;
DeclareAndCast(IGESBasic_SingularSubfigure, st408, start);
Handle (IGESBasic_SubfigureDef) stsub = st408->Subfigure();
gp_XYZ trans = st408->Translation();
gp_Vec vectr(trans);
Standard_Real scunit = GetUnitFactor();
vectr.Multiply(scunit);
T408.SetTranslation(vectr);
if (st408->HasScaleFactor()) {
Standard_Real scalef = st408->ScaleFactor();
T408.SetScaleFactor(scalef);
}
if (HasShapeResult(stsub)) {
res = GetShapeResult(stsub);
}
else {
try {
OCC_CATCH_SIGNALS
res = TransferGeometry(stsub, theProgress);
}
catch(Standard_Failure const&) {
res.Nullify();
Message_Msg msg1015("IGES_1015");
SendFail( st408, msg1015);
}
if (!res.IsNull()) {
SetShapeResult(stsub,res);
}
}
}
// 308 : SubfigureDefinition
else if (start->IsKind(STANDARD_TYPE(IGESBasic_SubfigureDef))) {
DeclareAndCast(IGESBasic_SubfigureDef, st308, start);
TopoDS_Compound group;
BRep_Builder B;
B.MakeCompound (group);
if (st308->NbEntities() < 1) {
Message_Msg msg210 ("XSTEP_210");
SendFail( st308, msg210);
return res;
}
Message_ProgressScope PS (theProgress, "Subfigure item", st308->NbEntities());
for (Standard_Integer i=1; i <= st308->NbEntities() && PS.More(); i++)
{
Message_ProgressRange aRange = PS.Next();
TopoDS_Shape item;
if (st308->AssociatedEntity(i).IsNull()) {
Message_Msg msg1020("IGES_1020");
msg1020.Arg(i);
SendWarning( st308, msg1020);
continue;
}
if(onlyvisible && st308->AssociatedEntity(i)->BlankStatus() == 1 )
continue;
if (HasShapeResult(st308->AssociatedEntity(i)))
{
item = GetShapeResult(st308->AssociatedEntity(i));
}
else {
try {
OCC_CATCH_SIGNALS
item = TransferGeometry (st308->AssociatedEntity(i), aRange);
}
catch(Standard_Failure const&) {
item.Nullify();
Message_Msg msg1015("IGES_1015");
SendFail( st308->AssociatedEntity(i), msg1015);
}
}
if (item.IsNull()) {
Message_Msg msg1025("IGES_1025");
msg1025.Arg(i);
SendWarning (start,msg1025);
}
else {
B.Add(group, item);
SetShapeResult (st308->AssociatedEntity(i),item);
}
}
res = group;
}
else if (start->IsKind(STANDARD_TYPE(IGESBasic_Group))) {
if(onlyvisible && start->BlankStatus() == 1)
return res;
DeclareAndCast(IGESBasic_Group, st402f1, start);
TopoDS_Compound group;
BRep_Builder B;
B.MakeCompound (group);
if (st402f1->NbEntities() < 1) {
Message_Msg msg202 ("XSTEP_202");
msg202.Arg(st402f1->FormNumber());
SendFail(st402f1, msg202);
return res;
}
Message_ProgressScope PS (theProgress, "Group item", st402f1->NbEntities());
Standard_Boolean ProblemInGroup = Standard_False;
for (Standard_Integer i=1; i <= st402f1->NbEntities() && PS.More(); i++)
{
Message_ProgressRange aRange = PS.Next();
TopoDS_Shape item;
if (st402f1->Entity(i).IsNull()) {
Message_Msg msg1020("IGES_1020");
msg1020.Arg(i);
SendFail( st402f1, msg1020);
continue;
}
if(onlyvisible && st402f1->Entity(i)->BlankStatus() == 1)
continue;
if (HasShapeResult(st402f1->Entity(i))) {
item = GetShapeResult(st402f1->Entity(i));
}
else {
try {
OCC_CATCH_SIGNALS
item = TransferGeometry (st402f1->Entity(i), aRange);
}
catch(Standard_Failure const&) {
item.Nullify();
Message_Msg msg1015("IGES_1015");
SendFail(st402f1->Entity(i),msg1015);
}
}
if (item.IsNull()) {
//Message_Msg msg1030("IGES_1030");
//msg1030.Arg(st402f1->FormNumber());
//msg1030.Arg(i);
//SendWarning (st402f1,msg1030);
ProblemInGroup = Standard_True;
}
else {
B.Add(group, item);
SetShapeResult (st402f1->Entity(i),item);
}
}
res = group;
if(ProblemInGroup) {
Message_Msg msg1030("IGES_1030");
msg1030.Arg(st402f1->FormNumber());
SendWarning (st402f1,msg1030);
}
}
else if (start->IsKind(STANDARD_TYPE(IGESBasic_GroupWithoutBackP))) {
if(onlyvisible && start->BlankStatus() == 1)
return res;
DeclareAndCast(IGESBasic_GroupWithoutBackP, st402f7, start);
TopoDS_Compound group;
//unused Handle(TCollection_HAsciiString) label = GetModel()->StringLabel(st402f7);
BRep_Builder B;
B.MakeCompound (group);
if (st402f7->NbEntities() < 1) {
Message_Msg msg202 ("XSTEP_202");
msg202.Arg(st402f7->FormNumber());
SendFail(st402f7, msg202);
return res;
}
Message_ProgressScope PS (theProgress, "Group item", st402f7->NbEntities());
Standard_Boolean ProblemInGroup = Standard_False;
for (Standard_Integer i=1; i <= st402f7->NbEntities() && PS.More(); i++)
{
Message_ProgressRange aRange = PS.Next();
TopoDS_Shape item;
if (st402f7->Entity(i).IsNull()) {
Message_Msg msg1020("IGES_1020");
msg1020.Arg(i);
SendFail( st402f7, msg1020);
continue;
}
if(onlyvisible && st402f7->Entity(i)->BlankStatus() == 1 )
continue;
if(anOnlyvisible && theStart->BlankStatus() == 1)
return aRes;
if (HasShapeResult(st402f7->Entity(i))) {
item = GetShapeResult(st402f7->Entity(i));
DeclareAndCast(IGESBasic_SingularSubfigure, aSt408, theStart);
Handle (IGESBasic_SubfigureDef) aStsub = aSt408->Subfigure();
const gp_XYZ aTrans = aSt408->Translation();
gp_Vec aVectr(aTrans);
const Standard_Real aScunit = GetUnitFactor();
aVectr.Multiply(aScunit);
aT408.SetTranslation(aVectr);
if (aSt408->HasScaleFactor())
{
const Standard_Real aScalef = aSt408->ScaleFactor();
aT408.SetScaleFactor(aScalef);
}
else {
try {
OCC_CATCH_SIGNALS
item = TransferGeometry (st402f7->Entity(i), aRange);
}
catch(Standard_Failure const&) {
item.Nullify();
Message_Msg msg1015("IGES_1015");
SendFail(st402f7->Entity(i),msg1015);
}
if (HasShapeResult(aStsub))
{
aRes = GetShapeResult(aStsub);
}
if (item.IsNull()) {
//Message_Msg msg1030("IGES_1030");
//msg1030.Arg(st402f7->FormNumber());
//msg1030.Arg(i);
//SendWarning (st402f7,msg1030);
ProblemInGroup = Standard_True;
}
else {
B.Add(group, item);
SetShapeResult (st402f7->Entity(i),item);
else
{
try
{
OCC_CATCH_SIGNALS
aRes = TransferGeometry(aStsub, theProgress);
}
catch(Standard_Failure const&)
{
aRes.Nullify();
const Message_Msg aMsg1015("IGES_1015");
SendFail(aSt408, aMsg1015);
}
if (!aRes.IsNull())
{
SetShapeResult(aStsub, aRes);
}
}
}
res = group;
if(ProblemInGroup) {
Message_Msg msg1030("IGES_1030");
msg1030.Arg(st402f7->FormNumber());
SendWarning (st402f7,msg1030);
// 308 : SubfigureDefinition
else if (theStart->IsKind(STANDARD_TYPE(IGESBasic_SubfigureDef)))
{
DeclareAndCast(IGESBasic_SubfigureDef, aSt308, theStart);
TopoDS_Compound aGroup;
BRep_Builder aBuilder;
aBuilder.MakeCompound (aGroup);
if (aSt308->NbEntities() < 1)
{
const Message_Msg aMsg210 ("XSTEP_210");
SendFail(aSt308, aMsg210);
return aRes;
}
Message_ProgressScope aPS (theProgress, "Subfigure item", aSt308->NbEntities());
for (Standard_Integer anIndx =1; anIndx <= aSt308->NbEntities() && aPS.More(); anIndx++)
{
Message_ProgressRange aRange = aPS.Next();
TopoDS_Shape anItem;
if (aSt308->AssociatedEntity(anIndx).IsNull())
{
Message_Msg aMsg1020("IGES_1020");
aMsg1020.Arg(anIndx);
SendWarning(aSt308, aMsg1020);
continue;
}
if(anOnlyvisible && aSt308->AssociatedEntity(anIndx)->BlankStatus() == 1)
continue;
if (HasShapeResult(aSt308->AssociatedEntity(anIndx)))
{
anItem = GetShapeResult(aSt308->AssociatedEntity(anIndx));
}
else
{
try
{
OCC_CATCH_SIGNALS
anItem = TransferGeometry (aSt308->AssociatedEntity(anIndx), aRange);
}
catch(Standard_Failure const&)
{
anItem.Nullify();
const Message_Msg aMsg1015("IGES_1015");
SendFail(aSt308->AssociatedEntity(anIndx), aMsg1015);
}
}
if (anItem.IsNull())
{
Message_Msg aMsg1025("IGES_1025");
aMsg1025.Arg(anIndx);
SendWarning (theStart, aMsg1025);
}
else
{
aBuilder.Add(aGroup, anItem);
SetShapeResult (aSt308->AssociatedEntity(anIndx), anItem);
}
}
aRes = aGroup;
}
// 402 : Group Associativity
else if (theStart->IsKind(STANDARD_TYPE(IGESBasic_Group)))
{
if(anOnlyvisible && theStart->BlankStatus() == 1)
return aRes;
DeclareAndCast(IGESBasic_Group, aSt402, theStart);
TopoDS_Compound aGroup;
BRep_Builder aBuilder;
aBuilder.MakeCompound (aGroup);
const Standard_Integer aNbEnt = aSt402->NbEntities();
if (aNbEnt < 1)
{
Message_Msg aMsg202 ("XSTEP_202");
aMsg202.Arg(aSt402->FormNumber());
SendFail(aSt402, aMsg202);
return aRes;
}
Message_ProgressScope aPS (theProgress, "Group item", aNbEnt);
Standard_Boolean aProblemInGroup = Standard_False;
for (Standard_Integer anIndx=1; anIndx <= aNbEnt && aPS.More(); anIndx++)
{
Message_ProgressRange aRange = aPS.Next();
TopoDS_Shape anItem;
if (aSt402->Entity(anIndx).IsNull())
{
Message_Msg aMsg1020("IGES_1020");
aMsg1020.Arg(anIndx);
SendFail(aSt402, aMsg1020);
continue;
}
if(anOnlyvisible && aSt402->Entity(anIndx)->BlankStatus() == 1)
continue;
if (HasShapeResult(aSt402->Entity(anIndx)))
{
anItem = GetShapeResult(aSt402->Entity(anIndx));
}
else
{
try
{
OCC_CATCH_SIGNALS
anItem = TransferGeometry (aSt402->Entity(anIndx), aRange);
}
catch(Standard_Failure const&)
{
anItem.Nullify();
const Message_Msg aMsg1015("IGES_1015");
SendFail(aSt402->Entity(anIndx), aMsg1015);
}
}
if (anItem.IsNull())
{
aProblemInGroup = Standard_True;
}
else
{
aBuilder.Add(aGroup, anItem);
SetShapeResult (aSt402->Entity(anIndx), anItem);
}
}
aRes = aGroup;
if(aProblemInGroup)
{
Message_Msg aMsg1030("IGES_1030");
aMsg1030.Arg(aSt402->FormNumber());
SendWarning (aSt402, aMsg1030);
}
}
else {
Message_Msg msg1001("IGES_1001");
msg1001.Arg(start->FormNumber());
SendFail (start,msg1001);
return res;
else
{
Message_Msg aMsg1001("IGES_1001");
aMsg1001.Arg(theStart->FormNumber());
SendFail (theStart, aMsg1001);
return aRes;
}
if (start->HasTransf()) {
gp_Trsf T;
if (theStart->HasTransf())
{
gp_Trsf aT;
SetEpsilon(1.E-04);
if (IGESData_ToolLocation::ConvertLocation(GetEpsilon(),start->CompoundLocation(),
T,GetUnitFactor())) {
if (start->IsKind(STANDARD_TYPE(IGESBasic_SingularSubfigure)))
{
gp_XYZ tra = T.TranslationPart();
gp_XYZ trans = T408.TranslationPart();
tra.Add(trans);
T.SetTranslationPart(tra);
Standard_Real sc = T.ScaleFactor();
Standard_Real scalef = T408.ScaleFactor();
sc = sc*scalef;
T.SetScaleFactor(sc);
}
TopLoc_Location L(T);
res.Move(L, Standard_False);
if (IGESData_ToolLocation::ConvertLocation(GetEpsilon(), theStart->CompoundLocation(),
aT, GetUnitFactor()))
{
if (theStart->IsKind(STANDARD_TYPE(IGESBasic_SingularSubfigure)))
{
gp_XYZ aTra = aT.TranslationPart();
const gp_XYZ aTrans = aT408.TranslationPart();
aTra.Add(aTrans);
aT.SetTranslationPart(aTra);
Standard_Real aSc = aT.ScaleFactor();
const Standard_Real aScalef = aT408.ScaleFactor();
aSc = aSc*aScalef;
aT.SetScaleFactor(aSc);
}
const TopLoc_Location aLoc(aT);
aRes.Move(aLoc, Standard_False);
}
else {
Message_Msg msg1035("IGES_1035");
SendWarning (start,msg1035);
else
{
const Message_Msg aMsg1035("IGES_1035");
SendWarning (theStart, aMsg1035);
}
}
else {
if (start->IsKind(STANDARD_TYPE(IGESBasic_SingularSubfigure))) {
TopLoc_Location L(T408);
res.Move(L);
else
{
if (theStart->IsKind(STANDARD_TYPE(IGESBasic_SingularSubfigure)))
{
const TopLoc_Location aLoc(aT408);
aRes.Move(aLoc);
}
}
return res;
}
return aRes;
}

View File

@@ -225,6 +225,14 @@ static Resource_KindOfLine WhatKindOfLine(OSD_File& aFile,
aToken2.Clear();
else {
Line.Remove(1,Pos-1);
const Standard_Integer aLineLength = Line.Length();
if (aLineLength >= 2)
{
if (Line.Value(aLineLength - 1) == '\r')
{
Line.Remove(aLineLength - 1);
}
}
Line.Remove(Line.Length());
aToken2 = Line;
}

View File

@@ -4692,9 +4692,16 @@ void collectRepresentationItems(const Interface_Graph& theGraph,
const Handle(StepShape_ShapeRepresentation)& theRepresentation,
NCollection_Sequence<Handle(StepRepr_RepresentationItem)>& theItems)
{
Handle(StepRepr_HArray1OfRepresentationItem) aReprItems = theRepresentation->Items();
for (Standard_Integer itemIt = aReprItems->Lower(); itemIt <= aReprItems->Upper(); itemIt++)
theItems.Append(aReprItems->Value(itemIt));
for (StepRepr_HArray1OfRepresentationItem::Iterator anIter(theRepresentation->Items()->Array1());
anIter.More(); anIter.Next())
{
const Handle(StepRepr_RepresentationItem)& anReprItem = anIter.Value();
if (anReprItem.IsNull())
{
continue;
}
theItems.Append(anReprItem);
}
Interface_EntityIterator entIt = theGraph.TypedSharings(theRepresentation, STANDARD_TYPE(StepRepr_RepresentationRelationship));
for (entIt.Start(); entIt.More(); entIt.Next())

View File

@@ -47,7 +47,9 @@ class TopoDS_Shape;
//! Also supports multifile writing
class STEPCAFControl_Writer
{
public:
DEFINE_STANDARD_ALLOC
public:
//! Creates a writer with an empty

View File

@@ -1,6 +1,3 @@
puts "TODO CR23671 Linux: Error"
puts "TODO CR23671 Linux: Draw_Failure: Could not open"
puts "============"
puts "CR23671"
puts "============"

16
tests/bugs/iges/bug33327 Normal file
View File

@@ -0,0 +1,16 @@
puts "============"
puts "0033327: Data Exchange, IGES Import - SubfigureDef can't read string"
puts "============"
pload DCAF
Close D -silent
ReadIges D [locate_data_file "bug33327.igs"]
vclear
vinit View1
XDisplay -dispMode 1 D
vfit
vdump "$imagedir/${casename}_src.png"
Close D

View File

@@ -0,0 +1,15 @@
puts "============"
puts "0033264: Modeling Algorithms - Result of section operation is incomplete"
puts "============"
puts ""
restore [locate_data_file bug33264_1.brep] srf1
restore [locate_data_file bug33264_2.brep] srf2
bsection res srf1 srf2
checknbshapes res -vertex 44 -edge 43
checkprops res -l 51.3377
checksection res
checkview -display res -2d -path ${imagedir}/${test_image}.png

14
tests/bugs/step/bug33331 Normal file
View File

@@ -0,0 +1,14 @@
puts "===================================="
puts "0033331: Data Exchange, Step Import - Unsupported Representation Items"
puts "===================================="
puts ""
pload DCAF
catch {Close D}
param "read.stepcaf.subshapes.name" 1
ReadStep D [locate_data_file bug33331.stp]
param "read.stepcaf.subshapes.name" 0
Close D