mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
6acb227333 | ||
|
5d0249c145 | ||
|
1a1739b200 | ||
|
fd5c113a03 | ||
|
f74f684b16 | ||
|
621ed3bc36 | ||
|
81d569625e | ||
|
6072d3093c |
@@ -3238,7 +3238,9 @@ Standard_Boolean ChFi3d_ComputeCurves(const Handle(Adaptor3d_Surface)& S1,
|
||||
Pc2->Value(Uf).Coord(x,y);
|
||||
x = Pardeb(3) - x;
|
||||
y = Pardeb(4) - y;
|
||||
if(Abs(x) > tol2d || Abs(y) > tol2d) Pc2->Translate(gp_Vec2d(x,y));
|
||||
|
||||
if(Abs(x) > tol2d || Abs(y) > tol2d)
|
||||
Pc2->Translate(gp_Vec2d(-6.2831853, 0));
|
||||
tolreached = ChFi3d_EvalTolReached(S1,Pc1,S2,Pc2,C3d);
|
||||
return Standard_True;
|
||||
}
|
||||
|
@@ -2708,7 +2708,14 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index)
|
||||
TopoDS_Edge aLocalEdge = edgesau;
|
||||
if (edgesau.Orientation() != orient)
|
||||
aLocalEdge.Reverse();
|
||||
C2dint1 = BRep_Tool::CurveOnSurface(aLocalEdge,Face[0],ubid,vbid);
|
||||
C2dint1 = BRep_Tool::CurveOnSurface(aLocalEdge, Face[0], ubid, vbid);
|
||||
|
||||
if (C2dint1.IsNull())
|
||||
{
|
||||
//std::swap(Face[0], facesau);
|
||||
C2dint1 = BRep_Tool::CurveOnSurface(aLocalEdge, facesau, ubid, vbid);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -2718,7 +2725,7 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index)
|
||||
//// for periodic 3d curves ////
|
||||
if (cad.IsPeriodic())
|
||||
{
|
||||
gp_Pnt2d P2d = BRep_Tool::Parameters( Vtx, Face[0] );
|
||||
gp_Pnt2d P2d = BRep_Tool::Parameters(Vtx, facesau);
|
||||
Geom2dAPI_ProjectPointOnCurve Projector( P2d, C2dint1 );
|
||||
par = Projector.LowerDistanceParameter();
|
||||
Standard_Real shift = par-ParVtx;
|
||||
|
@@ -60,6 +60,7 @@ Font_TextFormatter::Font_TextFormatter()
|
||||
myAlignY (Graphic3d_VTA_TOP),
|
||||
myTabSize (8),
|
||||
myWrappingWidth (0.0f),
|
||||
myIsWordWrapping (true),
|
||||
myLastSymbolWidth (0.0f),
|
||||
myMaxSymbolWidth (0.0f),
|
||||
//
|
||||
@@ -249,6 +250,7 @@ void Font_TextFormatter::Format()
|
||||
}
|
||||
}
|
||||
|
||||
Standard_Utf32Char aCharPrev = 0;
|
||||
for (Font_TextFormatter::Iterator aFormatterIt(*this);
|
||||
aFormatterIt.More(); aFormatterIt.Next())
|
||||
{
|
||||
@@ -269,12 +271,30 @@ void Font_TextFormatter::Format()
|
||||
Font_Rect aBndBox;
|
||||
GlyphBoundingBox (aRectIter, aBndBox);
|
||||
const Standard_ShortReal aNextXPos = aBndBox.Right - BottomLeft (aFirstCornerId).x();
|
||||
if (aNextXPos > aMaxLineWidth) // wrap the line and do processing of the symbol
|
||||
Standard_Boolean isCurWordFits = true;
|
||||
if(myIsWordWrapping && IsSeparatorSymbol(aCharPrev))
|
||||
{
|
||||
for (Font_TextFormatter::Iterator aWordIt = aFormatterIt; aWordIt.More(); aWordIt.Next())
|
||||
{
|
||||
if (IsSeparatorSymbol(aWordIt.Symbol()))
|
||||
{
|
||||
break;
|
||||
}
|
||||
float aWordWidthPx = myCorners[aWordIt.SymbolPosition()].x() - myCorners[aRectIter].x();
|
||||
if (aNextXPos + aWordWidthPx > aMaxLineWidth)
|
||||
{
|
||||
isCurWordFits = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (aNextXPos > aMaxLineWidth || !isCurWordFits) // wrap the line and do processing of the symbol
|
||||
{
|
||||
const Standard_Integer aLastRect = aRectIter - 1; // last rect on current line
|
||||
newLine (aLastRect, aMaxLineWidth);
|
||||
}
|
||||
}
|
||||
aCharPrev = aCharThis;
|
||||
}
|
||||
|
||||
myBndWidth = aMaxLineWidth;
|
||||
|
@@ -220,6 +220,12 @@ public:
|
||||
//! Returns text maximum width, zero means that the text is not bounded by width
|
||||
Standard_ShortReal Wrapping() const { return myWrappingWidth; }
|
||||
|
||||
//! returns TRUE when trying not to break words when wrapping text
|
||||
Standard_Boolean WordWrapping () const { return myIsWordWrapping; }
|
||||
|
||||
//! returns TRUE when trying not to break words when wrapping text
|
||||
void SetWordWrapping (const Standard_Boolean theIsWordWrapping) { myIsWordWrapping = theIsWordWrapping; }
|
||||
|
||||
//! @return width of formatted text.
|
||||
inline Standard_ShortReal ResultWidth() const
|
||||
{
|
||||
@@ -274,6 +280,14 @@ public:
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
//! Returns true if the symbol separates words when wrapping is enabled
|
||||
static Standard_Boolean IsSeparatorSymbol (const Standard_Utf32Char& theSymbol)
|
||||
{
|
||||
return theSymbol == '\x0A' // new line
|
||||
|| theSymbol == ' ' // space
|
||||
|| theSymbol == '\x09'; // tab
|
||||
}
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT (Font_TextFormatter, Standard_Transient)
|
||||
|
||||
protected: //! @name class auxiliary methods
|
||||
@@ -288,6 +302,7 @@ protected: //! @name configuration
|
||||
Graphic3d_VerticalTextAlignment myAlignY; //!< vertical alignment style
|
||||
Standard_Integer myTabSize; //!< horizontal tabulation width (number of space symbols)
|
||||
Standard_ShortReal myWrappingWidth; //!< text is wrapped by the width if defined (more 0)
|
||||
Standard_Boolean myIsWordWrapping; //!< if TRUE try not to break words when wrapping text (true by default)
|
||||
Standard_ShortReal myLastSymbolWidth; //!< width of the last symbol
|
||||
Standard_ShortReal myMaxSymbolWidth; //!< maximum symbol width of the formatter string
|
||||
|
||||
|
@@ -18,6 +18,7 @@
|
||||
#include <Standard_OutOfMemory.hxx>
|
||||
#include <Standard_OutOfRange.hxx>
|
||||
#include <Standard_TypeMismatch.hxx>
|
||||
#include <Standard_Macro.hxx>
|
||||
|
||||
//! Defines an array of values of configurable size.
|
||||
//! For instance, this class allows defining an array of 32-bit or 64-bit integer values with bitness determined in runtime.
|
||||
@@ -63,7 +64,7 @@ public:
|
||||
}
|
||||
|
||||
//! Move constructor
|
||||
NCollection_AliasedArray (NCollection_AliasedArray&& theOther) noexcept
|
||||
NCollection_AliasedArray (NCollection_AliasedArray&& theOther) Standard_Noexcept
|
||||
: myData (theOther.myData), myStride (theOther.myStride), mySize (theOther.mySize), myDeletable (theOther.myDeletable)
|
||||
{
|
||||
theOther.myDeletable = false;
|
||||
|
@@ -17,6 +17,7 @@
|
||||
#include <NCollection_AliasedArray.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
#include <gp_Vec3f.hxx>
|
||||
#include <Standard_Macro.hxx>
|
||||
|
||||
//! Defines an array of 3D nodes of single/double precision configurable at construction time.
|
||||
class Poly_ArrayOfNodes : public NCollection_AliasedArray<>
|
||||
@@ -85,14 +86,14 @@ public:
|
||||
Poly_ArrayOfNodes& operator= (const Poly_ArrayOfNodes& theOther) { return Assign (theOther); }
|
||||
|
||||
//! Move constructor
|
||||
Poly_ArrayOfNodes (Poly_ArrayOfNodes&& theOther) noexcept
|
||||
Poly_ArrayOfNodes (Poly_ArrayOfNodes&& theOther) Standard_Noexcept
|
||||
: NCollection_AliasedArray (std::move (theOther))
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
//! Move assignment operator; @sa Move()
|
||||
Poly_ArrayOfNodes& operator= (Poly_ArrayOfNodes&& theOther) noexcept
|
||||
Poly_ArrayOfNodes& operator= (Poly_ArrayOfNodes&& theOther) Standard_Noexcept
|
||||
{
|
||||
return Move (theOther);
|
||||
}
|
||||
|
@@ -17,6 +17,7 @@
|
||||
#include <NCollection_AliasedArray.hxx>
|
||||
#include <gp_Pnt2d.hxx>
|
||||
#include <gp_Vec2f.hxx>
|
||||
#include <Standard_Macro.hxx>
|
||||
|
||||
//! Defines an array of 2D nodes of single/double precision configurable at construction time.
|
||||
class Poly_ArrayOfUVNodes : public NCollection_AliasedArray<>
|
||||
@@ -85,14 +86,14 @@ public:
|
||||
Poly_ArrayOfUVNodes& operator= (const Poly_ArrayOfUVNodes& theOther) { return Assign (theOther); }
|
||||
|
||||
//! Move constructor
|
||||
Poly_ArrayOfUVNodes (Poly_ArrayOfUVNodes&& theOther) noexcept
|
||||
Poly_ArrayOfUVNodes (Poly_ArrayOfUVNodes&& theOther) Standard_Noexcept
|
||||
: NCollection_AliasedArray (std::move (theOther))
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
//! Move assignment operator; @sa Move()
|
||||
Poly_ArrayOfUVNodes& operator= (Poly_ArrayOfUVNodes&& theOther) noexcept
|
||||
Poly_ArrayOfUVNodes& operator= (Poly_ArrayOfUVNodes&& theOther) Standard_Noexcept
|
||||
{
|
||||
return Move (theOther);
|
||||
}
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include <NCollection_DataMap.hxx>
|
||||
#include <OSD_FileSystem.hxx>
|
||||
#include <OSD_File.hxx>
|
||||
#include <OSD_Parallel.hxx>
|
||||
#include <OSD_Path.hxx>
|
||||
#include <OSD_Timer.hxx>
|
||||
#include <RWGltf_GltfAccessorLayout.hxx>
|
||||
@@ -170,6 +171,72 @@ namespace
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef HAVE_DRACO
|
||||
//! Functor for parallel execution of encoding meshes to Draco buffers.
|
||||
class DracoEncodingFunctor
|
||||
{
|
||||
public:
|
||||
|
||||
DracoEncodingFunctor (const Message_ProgressRange& theProgress,
|
||||
draco::Encoder& theDracoEncoder,
|
||||
const std::vector<std::shared_ptr<RWGltf_CafWriter::Mesh>>& theMeshes,
|
||||
std::vector<std::shared_ptr<draco::EncoderBuffer>>& theEncoderBuffers)
|
||||
: myProgress(theProgress, "Draco compression", Max(1, int(theMeshes.size()))),
|
||||
myDracoEncoder(&theDracoEncoder),
|
||||
myRanges(0, int(theMeshes.size()) - 1),
|
||||
myMeshes(&theMeshes),
|
||||
myEncoderBuffers(&theEncoderBuffers)
|
||||
{
|
||||
for (int anIndex = 0; anIndex != int(theMeshes.size()); ++anIndex)
|
||||
{
|
||||
myRanges.SetValue(anIndex, myProgress.Next());
|
||||
}
|
||||
}
|
||||
|
||||
void operator () (int theMeshIndex) const
|
||||
{
|
||||
const std::shared_ptr<RWGltf_CafWriter::Mesh>& aCurrentMesh = myMeshes->at(theMeshIndex);
|
||||
if (aCurrentMesh->NodesVec.empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Message_ProgressScope aScope(myRanges[theMeshIndex], NULL, 1);
|
||||
|
||||
draco::Mesh aMesh;
|
||||
writeNodesToDracoMesh (aMesh, aCurrentMesh->NodesVec);
|
||||
|
||||
if (!aCurrentMesh->NormalsVec.empty())
|
||||
{
|
||||
writeNormalsToDracoMesh (aMesh, aCurrentMesh->NormalsVec);
|
||||
}
|
||||
|
||||
if (!aCurrentMesh->TexCoordsVec.empty())
|
||||
{
|
||||
writeTexCoordsToDracoMesh (aMesh, aCurrentMesh->TexCoordsVec);
|
||||
}
|
||||
|
||||
writeIndicesToDracoMesh (aMesh, aCurrentMesh->IndicesVec);
|
||||
|
||||
std::shared_ptr<draco::EncoderBuffer> anEncoderBuffer = std::make_shared<draco::EncoderBuffer>();
|
||||
draco::Status aStatus = myDracoEncoder->EncodeMeshToBuffer (aMesh, anEncoderBuffer.get());
|
||||
if (aStatus.ok())
|
||||
{
|
||||
myEncoderBuffers->at(theMeshIndex) = anEncoderBuffer;
|
||||
}
|
||||
|
||||
aScope.Next();
|
||||
}
|
||||
|
||||
private:
|
||||
Message_ProgressScope myProgress;
|
||||
draco::Encoder* myDracoEncoder;
|
||||
NCollection_Array1<Message_ProgressRange> myRanges;
|
||||
const std::vector<std::shared_ptr<RWGltf_CafWriter::Mesh>>* myMeshes;
|
||||
std::vector<std::shared_ptr<draco::EncoderBuffer>>* myEncoderBuffers;
|
||||
};
|
||||
#endif
|
||||
|
||||
//================================================================
|
||||
// Function : Constructor
|
||||
// Purpose :
|
||||
@@ -185,7 +252,8 @@ RWGltf_CafWriter::RWGltf_CafWriter (const TCollection_AsciiString& theFile,
|
||||
myToEmbedTexturesInGlb (true),
|
||||
myToMergeFaces (false),
|
||||
myToSplitIndices16 (false),
|
||||
myBinDataLen64 (0)
|
||||
myBinDataLen64 (0),
|
||||
myToParallel (false)
|
||||
{
|
||||
myCSTrsf.SetOutputLengthUnit (1.0); // meters
|
||||
myCSTrsf.SetOutputCoordinateSystem (RWMesh_CoordinateSystem_glTF);
|
||||
@@ -537,6 +605,8 @@ bool RWGltf_CafWriter::writeBinData (const Handle(TDocStd_Document)& theDocument
|
||||
myBinDataMap.Clear();
|
||||
myBinDataLen64 = 0;
|
||||
|
||||
Message_ProgressScope aScope(theProgress, "Write binary data", myDracoParameters.DracoCompression ? 2 : 1);
|
||||
|
||||
const Handle(OSD_FileSystem)& aFileSystem = OSD_FileSystem::DefaultFileSystem();
|
||||
std::shared_ptr<std::ostream> aBinFile = aFileSystem->OpenOStream (myBinFileNameFull, std::ios::out | std::ios::binary);
|
||||
if (aBinFile.get() == NULL
|
||||
@@ -546,7 +616,7 @@ bool RWGltf_CafWriter::writeBinData (const Handle(TDocStd_Document)& theDocument
|
||||
return false;
|
||||
}
|
||||
|
||||
Message_ProgressScope aPSentryBin (theProgress, "Binary data", 4);
|
||||
Message_ProgressScope aPSentryBin (aScope.Next(), "Binary data", 4);
|
||||
const RWGltf_GltfArrayType anArrTypes[4] =
|
||||
{
|
||||
RWGltf_GltfArrayType_Position,
|
||||
@@ -797,7 +867,6 @@ bool RWGltf_CafWriter::writeBinData (const Handle(TDocStd_Document)& theDocument
|
||||
#ifdef HAVE_DRACO
|
||||
OSD_Timer aDracoTimer;
|
||||
aDracoTimer.Start();
|
||||
int aBuffId = 0;
|
||||
draco::Encoder aDracoEncoder;
|
||||
aDracoEncoder.SetAttributeQuantization (draco::GeometryAttribute::POSITION, myDracoParameters.QuantizePositionBits);
|
||||
aDracoEncoder.SetAttributeQuantization (draco::GeometryAttribute::NORMAL, myDracoParameters.QuantizeNormalBits);
|
||||
@@ -805,38 +874,23 @@ bool RWGltf_CafWriter::writeBinData (const Handle(TDocStd_Document)& theDocument
|
||||
aDracoEncoder.SetAttributeQuantization (draco::GeometryAttribute::COLOR, myDracoParameters.QuantizeColorBits);
|
||||
aDracoEncoder.SetAttributeQuantization (draco::GeometryAttribute::GENERIC, myDracoParameters.QuantizeGenericBits);
|
||||
aDracoEncoder.SetSpeedOptions (myDracoParameters.CompressionLevel, myDracoParameters.CompressionLevel);
|
||||
for (size_t aMeshInd = 0; aMeshInd != aMeshes.size(); ++aMeshInd)
|
||||
|
||||
std::vector<std::shared_ptr<draco::EncoderBuffer>> anEncoderBuffers(aMeshes.size());
|
||||
DracoEncodingFunctor aFunctor (aScope.Next(), aDracoEncoder, aMeshes, anEncoderBuffers);
|
||||
OSD_Parallel::For (0, int(aMeshes.size()), aFunctor, !myToParallel);
|
||||
|
||||
for (size_t aBuffInd = 0; aBuffInd != anEncoderBuffers.size(); ++aBuffInd)
|
||||
{
|
||||
const std::shared_ptr<RWGltf_CafWriter::Mesh>& aCurrentMesh = aMeshes[aMeshInd];
|
||||
if (aCurrentMesh->NodesVec.empty())
|
||||
if (anEncoderBuffers.at(aBuffInd).get() == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
draco::Mesh aDracoMesh;
|
||||
writeNodesToDracoMesh (aDracoMesh, aCurrentMesh->NodesVec);
|
||||
if (!aCurrentMesh->NormalsVec.empty())
|
||||
{
|
||||
writeNormalsToDracoMesh (aDracoMesh, aCurrentMesh->NormalsVec);
|
||||
}
|
||||
if (!aCurrentMesh->TexCoordsVec.empty())
|
||||
{
|
||||
writeTexCoordsToDracoMesh (aDracoMesh, aCurrentMesh->TexCoordsVec);
|
||||
}
|
||||
writeIndicesToDracoMesh (aDracoMesh, aCurrentMesh->IndicesVec);
|
||||
|
||||
draco::EncoderBuffer anEncoderBuff;
|
||||
draco::Status aStatus = aDracoEncoder.EncodeMeshToBuffer (aDracoMesh, &anEncoderBuff);
|
||||
if (!aStatus.ok())
|
||||
{
|
||||
Message::SendFail (TCollection_AsciiString("Error: mesh cannot be encoded in draco buffer."));
|
||||
Message::SendFail(TCollection_AsciiString("Error: mesh not encoded in draco buffer."));
|
||||
return false;
|
||||
}
|
||||
|
||||
RWGltf_GltfBufferView aBuffViewDraco;
|
||||
aBuffViewDraco.Id = aBuffId++;
|
||||
aBuffViewDraco.Id = (int)aBuffInd;
|
||||
aBuffViewDraco.ByteOffset = aBinFile->tellp();
|
||||
aBinFile->write (anEncoderBuff.data(), std::streamsize(anEncoderBuff.size()));
|
||||
const draco::EncoderBuffer& anEncoderBuff = *anEncoderBuffers.at(aBuffInd);
|
||||
aBinFile->write(anEncoderBuff.data(), std::streamsize(anEncoderBuff.size()));
|
||||
if (!aBinFile->good())
|
||||
{
|
||||
Message::SendFail (TCollection_AsciiString("File '") + myBinFileNameFull + "' cannot be written");
|
||||
|
@@ -125,6 +125,12 @@ public:
|
||||
//! May reduce binary data size thanks to smaller triangle indexes.
|
||||
void SetSplitIndices16 (bool theToSplit) { myToSplitIndices16 = theToSplit; }
|
||||
|
||||
//! Return TRUE if multithreaded optimizations are allowed; FALSE by default.
|
||||
bool ToParallel() const { return myToParallel; }
|
||||
|
||||
//! Setup multithreaded execution.
|
||||
void SetParallel (bool theToParallel) { myToParallel = theToParallel; }
|
||||
|
||||
//! Return Draco parameters
|
||||
const RWGltf_DracoParameters& CompressionParameters() const { return myDracoParameters; }
|
||||
|
||||
@@ -397,6 +403,7 @@ protected:
|
||||
int64_t myBinDataLen64; //!< length of binary file
|
||||
|
||||
std::vector<RWGltf_GltfBufferView> myBuffViewsDraco; //!< vector of buffers view with compression data
|
||||
Standard_Boolean myToParallel; //!< flag to use multithreading; FALSE by default
|
||||
RWGltf_DracoParameters myDracoParameters; //!< Draco parameters
|
||||
};
|
||||
|
||||
|
@@ -3365,17 +3365,17 @@ static void setDimObjectToXCAF(const Handle(Standard_Transient)& theEnt,
|
||||
if (anUnit.IsNull()) continue;
|
||||
if (!(anUnit.CaseNum(anUnit.Value()) == 1)) continue;
|
||||
Handle(StepBasic_NamedUnit) NU = anUnit.NamedUnit();
|
||||
STEPConstruct_UnitContext anUnitCtx;
|
||||
anUnitCtx.ComputeFactors(NU);
|
||||
if (aMWU->IsKind(STANDARD_TYPE(StepBasic_LengthMeasureWithUnit)) ||
|
||||
aMWU->IsKind(STANDARD_TYPE(StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI)))
|
||||
{
|
||||
aVal = aVal * anUnitCtx.LengthFactor();
|
||||
}
|
||||
else if (aMWU->IsKind(STANDARD_TYPE(StepBasic_PlaneAngleMeasureWithUnit)) ||
|
||||
STEPConstruct_UnitContext anUnitCtxUpperBound;
|
||||
anUnitCtxUpperBound.ComputeFactors(NU);
|
||||
if (aMWU->IsKind(STANDARD_TYPE(StepBasic_PlaneAngleMeasureWithUnit)) ||
|
||||
aMWU->IsKind(STANDARD_TYPE(StepRepr_ReprItemAndPlaneAngleMeasureWithUnitAndQRI)))
|
||||
{
|
||||
convertAngleValue(anUnitCtx, aVal);
|
||||
convertAngleValue(anUnitCtxUpperBound, aVal);
|
||||
}
|
||||
else if ((aMWU->IsKind(STANDARD_TYPE(StepBasic_MeasureWithUnit)) && anUnitCtxUpperBound.LengthFactor() > 0.) ||
|
||||
aMWU->IsKind(STANDARD_TYPE(StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI)))
|
||||
{
|
||||
aVal = aVal * anUnitCtxUpperBound.LengthFactor();
|
||||
}
|
||||
aDim3 = aVal;
|
||||
|
||||
@@ -3401,16 +3401,17 @@ static void setDimObjectToXCAF(const Handle(Standard_Transient)& theEnt,
|
||||
if (anUnit.IsNull()) continue;
|
||||
if (!(anUnit.CaseNum(anUnit.Value()) == 1)) continue;
|
||||
NU = anUnit.NamedUnit();
|
||||
anUnitCtx.ComputeFactors(NU);
|
||||
if (aMWU->IsKind(STANDARD_TYPE(StepBasic_LengthMeasureWithUnit)) ||
|
||||
aMWU->IsKind(STANDARD_TYPE(StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI)))
|
||||
{
|
||||
aVal = aVal * anUnitCtx.LengthFactor();
|
||||
}
|
||||
else if (aMWU->IsKind(STANDARD_TYPE(StepBasic_PlaneAngleMeasureWithUnit)) ||
|
||||
STEPConstruct_UnitContext anUnitCtxLowerBound;
|
||||
anUnitCtxLowerBound.ComputeFactors(NU);
|
||||
if (aMWU->IsKind(STANDARD_TYPE(StepBasic_PlaneAngleMeasureWithUnit)) ||
|
||||
aMWU->IsKind(STANDARD_TYPE(StepRepr_ReprItemAndPlaneAngleMeasureWithUnitAndQRI)))
|
||||
{
|
||||
convertAngleValue(anUnitCtx, aVal);
|
||||
convertAngleValue(anUnitCtxLowerBound, aVal);
|
||||
}
|
||||
else if ((aMWU->IsKind(STANDARD_TYPE(StepBasic_MeasureWithUnit)) && anUnitCtxLowerBound.LengthFactor() > 0.) ||
|
||||
aMWU->IsKind(STANDARD_TYPE(StepRepr_ReprItemAndLengthMeasureWithUnitAndQRI)))
|
||||
{
|
||||
aVal = aVal * anUnitCtxLowerBound.LengthFactor();
|
||||
}
|
||||
aDim2 = Abs(aVal);
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@
|
||||
#include <Standard_Std.hxx>
|
||||
#include <Standard_Stream.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Macro.hxx>
|
||||
|
||||
class Standard_Transient;
|
||||
|
||||
@@ -71,7 +72,7 @@ namespace opencascade {
|
||||
}
|
||||
|
||||
//! Move constructor
|
||||
handle (handle&& theHandle) noexcept : entity(theHandle.entity)
|
||||
handle (handle&& theHandle) Standard_Noexcept : entity(theHandle.entity)
|
||||
{
|
||||
theHandle.entity = 0;
|
||||
}
|
||||
@@ -112,7 +113,7 @@ namespace opencascade {
|
||||
}
|
||||
|
||||
//! Move operator
|
||||
handle& operator= (handle&& theHandle) noexcept
|
||||
handle& operator= (handle&& theHandle) Standard_Noexcept
|
||||
{
|
||||
std::swap (this->entity, theHandle.entity);
|
||||
return *this;
|
||||
|
@@ -315,5 +315,21 @@
|
||||
#define Standard_ATOMIC(theType) theType
|
||||
#endif
|
||||
|
||||
//! @def Standard_Noexcept
|
||||
//! Definition of Standard_Noexcept:
|
||||
//! if noexcept is accessible, Standard_Noexcept is "noexcept" and "throw()" otherwise.
|
||||
#ifdef _MSC_VER
|
||||
#if _MSC_VER >= 1900
|
||||
#define Standard_Noexcept noexcept
|
||||
#else
|
||||
#define Standard_Noexcept throw()
|
||||
#endif
|
||||
#else
|
||||
#if __cplusplus >= 201103L
|
||||
#define Standard_Noexcept noexcept
|
||||
#else
|
||||
#define Standard_Noexcept throw()
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -26,6 +26,7 @@
|
||||
#include <Standard_Real.hxx>
|
||||
#include <Standard_OStream.hxx>
|
||||
#include <Standard_IStream.hxx>
|
||||
#include <Standard_Macro.hxx>
|
||||
class TCollection_ExtendedString;
|
||||
|
||||
//! Class defines a variable-length sequence of 8-bit characters.
|
||||
@@ -74,7 +75,7 @@ public:
|
||||
Standard_EXPORT TCollection_AsciiString(const TCollection_AsciiString& astring);
|
||||
|
||||
//! Move constructor
|
||||
TCollection_AsciiString (TCollection_AsciiString&& theOther) noexcept
|
||||
TCollection_AsciiString (TCollection_AsciiString&& theOther) Standard_Noexcept
|
||||
: mystring (theOther.mystring),
|
||||
mylength (theOther.mylength)
|
||||
{
|
||||
@@ -276,7 +277,7 @@ void operator = (const TCollection_AsciiString& fromwhere)
|
||||
Standard_EXPORT void Swap (TCollection_AsciiString& theOther);
|
||||
|
||||
//! Move assignment operator
|
||||
TCollection_AsciiString& operator= (TCollection_AsciiString&& theOther) noexcept { Swap (theOther); return *this; }
|
||||
TCollection_AsciiString& operator= (TCollection_AsciiString&& theOther) Standard_Noexcept { Swap (theOther); return *this; }
|
||||
|
||||
//! Frees memory allocated by AsciiString.
|
||||
Standard_EXPORT ~TCollection_AsciiString();
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#include <Standard_Real.hxx>
|
||||
#include <Standard_OStream.hxx>
|
||||
#include <Standard_PCharacter.hxx>
|
||||
#include <Standard_Macro.hxx>
|
||||
class TCollection_AsciiString;
|
||||
|
||||
|
||||
@@ -98,7 +99,7 @@ public:
|
||||
Standard_EXPORT TCollection_ExtendedString(const TCollection_ExtendedString& astring);
|
||||
|
||||
//! Move constructor
|
||||
TCollection_ExtendedString (TCollection_ExtendedString&& theOther) noexcept
|
||||
TCollection_ExtendedString (TCollection_ExtendedString&& theOther) Standard_Noexcept
|
||||
: mystring (theOther.mystring),
|
||||
mylength (theOther.mylength)
|
||||
{
|
||||
@@ -153,7 +154,7 @@ void operator = (const TCollection_ExtendedString& fromwhere)
|
||||
Standard_EXPORT void Swap (TCollection_ExtendedString& theOther);
|
||||
|
||||
//! Move assignment operator
|
||||
TCollection_ExtendedString& operator= (TCollection_ExtendedString&& theOther) noexcept { Swap (theOther); return *this; }
|
||||
TCollection_ExtendedString& operator= (TCollection_ExtendedString&& theOther) Standard_Noexcept { Swap (theOther); return *this; }
|
||||
|
||||
//! Frees memory allocated by ExtendedString.
|
||||
Standard_EXPORT ~TCollection_ExtendedString();
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <Standard_Macro.hxx>
|
||||
class TopLoc_SListNodeOfItemLocation;
|
||||
class TopLoc_ItemLocation;
|
||||
|
||||
@@ -69,13 +70,13 @@ public:
|
||||
}
|
||||
|
||||
//! Move constructor
|
||||
TopLoc_SListOfItemLocation (TopLoc_SListOfItemLocation&& theOther) noexcept
|
||||
TopLoc_SListOfItemLocation (TopLoc_SListOfItemLocation&& theOther) Standard_Noexcept
|
||||
: myNode(std::move (theOther.myNode))
|
||||
{
|
||||
}
|
||||
|
||||
//! Move operator
|
||||
TopLoc_SListOfItemLocation& operator= (TopLoc_SListOfItemLocation&& theOther) noexcept
|
||||
TopLoc_SListOfItemLocation& operator= (TopLoc_SListOfItemLocation&& theOther) Standard_Noexcept
|
||||
{
|
||||
myNode = std::move (theOther.myNode);
|
||||
return *this;
|
||||
|
@@ -2500,6 +2500,11 @@ static int VDrawText (Draw_Interpretor& theDI,
|
||||
}
|
||||
aTextFormatter->SetWrapping ((Standard_ShortReal)Draw::Atof(theArgVec[++anArgIt]));
|
||||
}
|
||||
else if (aParam == "-wordwrapping")
|
||||
{
|
||||
const bool isWordWrapping = Draw::ParseOnOffNoIterator(theArgsNb, theArgVec, anArgIt);
|
||||
aTextFormatter->SetWordWrapping(isWordWrapping);
|
||||
}
|
||||
else if (aParam == "-aspect"
|
||||
&& anArgIt + 1 < theArgsNb)
|
||||
{
|
||||
@@ -6925,6 +6930,7 @@ vdrawtext name text
|
||||
[-zoom {0|1}]=0
|
||||
[-height height]=16
|
||||
[-wrapping width]=40
|
||||
[-wordwrapping {0|1}]=1
|
||||
[-aspect {regular|bold|italic|boldItalic}]=regular
|
||||
[-font font]=Times
|
||||
[-2d] [-perspos {X Y Z}]={0 0 0}
|
||||
|
@@ -515,7 +515,7 @@ static void rescaleDimensionRefLabels(const TDF_LabelSequence& theRefLabels,
|
||||
if (aL.FindAttribute(TNaming_NamedShape::GetID(), aNS))
|
||||
{
|
||||
TopoDS_Shape aShape = aNS->Get();
|
||||
theBRepTrsf.Perform(aShape, Standard_True);
|
||||
theBRepTrsf.Perform(aShape, Standard_True, Standard_True);
|
||||
if (!theBRepTrsf.IsDone())
|
||||
{
|
||||
Standard_SStream aSS;
|
||||
@@ -664,7 +664,7 @@ Standard_Boolean XCAFDoc_Editor::RescaleGeometry(const TDF_Label& theLabel,
|
||||
if (aNodeType == XCAFDoc_AssemblyGraph::NodeType_Part)
|
||||
{
|
||||
const TopoDS_Shape aShape = aShapeTool->GetShape(aLabel);
|
||||
aBRepTrsf.Perform(aShape, Standard_True);
|
||||
aBRepTrsf.Perform(aShape, Standard_True, Standard_True);
|
||||
if (!aBRepTrsf.IsDone())
|
||||
{
|
||||
Standard_SStream aSS;
|
||||
|
@@ -1836,7 +1836,7 @@ void XDEDRAW::Init(Draw_Interpretor& di)
|
||||
"Doc [-names]: Prints number of assembly instances",
|
||||
__FILE__, XDumpNomenclature, g);
|
||||
di.Add("XRescaleGeometry",
|
||||
"Doc -scale factor [-root label]: Applies geometrical scale to assembly",
|
||||
"Doc factor [-root label] [-force]: Applies geometrical scale to assembly",
|
||||
__FILE__, XRescaleGeometry, g);
|
||||
|
||||
// Specialized commands
|
||||
|
@@ -383,6 +383,7 @@ static Standard_Integer WriteGltf (Draw_Interpretor& theDI,
|
||||
RWMesh_CoordinateSystem aSystemCoordSys = RWMesh_CoordinateSystem_Zup;
|
||||
bool toForceUVExport = false, toEmbedTexturesInGlb = true;
|
||||
bool toMergeFaces = false, toSplitIndices16 = false;
|
||||
bool isParallel = false;
|
||||
RWMesh_NameFormat aNodeNameFormat = RWMesh_NameFormat_InstanceOrProduct;
|
||||
RWMesh_NameFormat aMeshNameFormat = RWMesh_NameFormat_Product;
|
||||
RWGltf_DracoParameters aDracoParameters;
|
||||
@@ -556,6 +557,10 @@ static Standard_Integer WriteGltf (Draw_Interpretor& theDI,
|
||||
{
|
||||
aDracoParameters.UnifiedQuantization = Draw::ParseOnOffIterator(theNbArgs, theArgVec, anArgIter);
|
||||
}
|
||||
else if (anArgCase == "-parallel")
|
||||
{
|
||||
isParallel = Draw::ParseOnOffIterator(theNbArgs, theArgVec, anArgIter);
|
||||
}
|
||||
else
|
||||
{
|
||||
Message::SendFail() << "Syntax error at '" << theArgVec[anArgIter] << "'";
|
||||
@@ -587,6 +592,7 @@ static Standard_Integer WriteGltf (Draw_Interpretor& theDI,
|
||||
aWriter.SetToEmbedTexturesInGlb (toEmbedTexturesInGlb);
|
||||
aWriter.SetMergeFaces (toMergeFaces);
|
||||
aWriter.SetSplitIndices16 (toSplitIndices16);
|
||||
aWriter.SetParallel(isParallel);
|
||||
aWriter.SetCompressionParameters(aDracoParameters);
|
||||
aWriter.ChangeCoordinateSystemConverter().SetInputLengthUnit (aScaleFactorM);
|
||||
aWriter.ChangeCoordinateSystemConverter().SetInputCoordinateSystem (aSystemCoordSys);
|
||||
@@ -2450,7 +2456,7 @@ void XSDRAWSTLVRML::InitCommands (Draw_Interpretor& theCommands)
|
||||
"\n\t\t: [-meshNameFormat {empty|product|instance|instOrProd|prodOrInst|prodAndInst|verbose}]=product"
|
||||
"\n\t\t: [-draco]=0 [-compressionLevel {0-10}]=7 [-quantizePositionBits Value]=14 [-quantizeNormalBits Value]=10"
|
||||
"\n\t\t: [-quantizeTexcoordBits Value]=12 [-quantizeColorBits Value]=8 [-quantizeGenericBits Value]=12"
|
||||
"\n\t\t: [-unifiedQuantization]=0"
|
||||
"\n\t\t: [-unifiedQuantization]=0 [-parallel]=0"
|
||||
"\n\t\t: Write XDE document into glTF file."
|
||||
"\n\t\t: -trsfFormat preferred transformation format"
|
||||
"\n\t\t: -systemCoordSys system coordinate system; Zup when not specified"
|
||||
@@ -2460,7 +2466,7 @@ void XSDRAWSTLVRML::InitCommands (Draw_Interpretor& theCommands)
|
||||
"\n\t\t: -texturesSeparate write textures to separate files"
|
||||
"\n\t\t: -nodeNameFormat name format for Nodes"
|
||||
"\n\t\t: -meshNameFormat name format for Meshes"
|
||||
"\n\t\t: -draco use Draco compression 3D geometric meshes"
|
||||
"\n\t\t: -draco use Draco compression 3D geometric meshes"
|
||||
"\n\t\t: -compressionLevel draco compression level [0-10] (by default 7), a value of 0 will apply sequential encoding and preserve face order"
|
||||
"\n\t\t: -quantizePositionBits quantization bits for position attribute when using Draco compression (by default 14)"
|
||||
"\n\t\t: -quantizeNormalBits quantization bits for normal attribute when using Draco compression (by default 10)"
|
||||
@@ -2468,7 +2474,8 @@ void XSDRAWSTLVRML::InitCommands (Draw_Interpretor& theCommands)
|
||||
"\n\t\t: -quantizeColorBits quantization bits for color attribute when using Draco compression (by default 8)"
|
||||
"\n\t\t: -quantizeGenericBits quantization bits for skinning attribute (joint indices and joint weights)"
|
||||
"\n and custom attributes when using Draco compression (by default 12)"
|
||||
"\n\t\t: -unifiedQuantization quantization is applied on each primitive separately if this option is false",
|
||||
"\n\t\t: -unifiedQuantization quantization is applied on each primitive separately if this option is false"
|
||||
"\n\t\t: -parallel use multithreading for Draco compression",
|
||||
__FILE__, WriteGltf, g);
|
||||
theCommands.Add ("writegltf",
|
||||
"writegltf shape file",
|
||||
|
13
tests/bugs/modalg_7/bug26920
Normal file
13
tests/bugs/modalg_7/bug26920
Normal file
@@ -0,0 +1,13 @@
|
||||
puts "========"
|
||||
puts "0026920: BRepBuidlerAPI_MakeFillet crash 2"
|
||||
puts "========"
|
||||
|
||||
restore C:/WORK/opencascade/bugs/CR26920/bug26920.brep b1
|
||||
explode b1 e
|
||||
fillet result b1 0.25 b1_15
|
||||
|
||||
checkprops result -s 1653.78
|
||||
checkshape result
|
||||
|
||||
checknbshapes result -vertex 20 -edge 31 -wire 13 -face 13 -shell 1 -solid 1 -compsolid 0 -compound 1 -shape 80
|
||||
checkview -display result -2d -path ${imagedir}/${test_image}.png
|
32
tests/bugs/step/bug33095
Normal file
32
tests/bugs/step/bug33095
Normal file
@@ -0,0 +1,32 @@
|
||||
puts "======="
|
||||
puts "0033095: Data Exchange, Step Import - Wrong PMI values when loading a *.stp file in m"
|
||||
puts "======="
|
||||
|
||||
pload OCAF
|
||||
|
||||
catch { Close D_mm }
|
||||
catch { Close D_m }
|
||||
|
||||
# Read file in mm
|
||||
ReadStep D_mm [locate_data_file bug33095_cad_with_pmi.stp]
|
||||
set plusMinusTol_mm [XGetDimensionPlusMinusTol D_mm 0:1:4:77]
|
||||
|
||||
# Read file in m
|
||||
XNewDoc D_m
|
||||
XSetLengthUnit D_m m
|
||||
ReadStep D_m [locate_data_file bug33095_cad_with_pmi.stp]
|
||||
set plusMinusTol_m [XGetDimensionPlusMinusTol D_m 0:1:4:77]
|
||||
|
||||
# Checking
|
||||
regexp {lower +([-0-9.+eE]+) +upper +([-0-9.+eE]+)} $plusMinusTol_m full lower_m upper_m
|
||||
regexp {lower +([-0-9.+eE]+) +upper +([-0-9.+eE]+)} $plusMinusTol_mm full lower_mm upper_mm
|
||||
|
||||
set lower_m_to_mm [expr {$lower_m * 1000}]
|
||||
set upper_m_to_mm [expr {$upper_m * 1000}]
|
||||
|
||||
if {[expr {abs($lower_m_to_mm - $lower_mm)}] > 1e-2} {
|
||||
puts "Error: incorrect scaling lower toleranse value"
|
||||
}
|
||||
if {[expr {abs($upper_m_to_mm - $upper_mm)}] > 1e-2} {
|
||||
puts "Error: incorrect scaling upper toleranse value"
|
||||
}
|
15
tests/bugs/xde/bug33100
Normal file
15
tests/bugs/xde/bug33100
Normal file
@@ -0,0 +1,15 @@
|
||||
puts "0033100: Modeling Algorithms - XCAFDoc_Editor::RescaleGeometry does not rescale triangulations"
|
||||
|
||||
pload DCAF
|
||||
Close d -silent
|
||||
ReadStep d [locate_data_file "bug33100_window.step"]
|
||||
|
||||
XGetOneShape a d
|
||||
set ref_diag [eval distpp [bounding a]]
|
||||
|
||||
XRescaleGeometry d 1000
|
||||
|
||||
XGetOneShape a d
|
||||
set diag [eval distpp [bounding a]]
|
||||
|
||||
checkreal "bounding box diagonal" $diag [expr $ref_diag * 1000] 0 0.001
|
13
tests/de_mesh/gltf_write/bull_parallel
Normal file
13
tests/de_mesh/gltf_write/bull_parallel
Normal file
@@ -0,0 +1,13 @@
|
||||
puts "========"
|
||||
puts "0032867: Data Exchange - Implement Draco compression for writing glTF"
|
||||
puts "Test case exporting model into glb (binary glTF) file."
|
||||
puts "========"
|
||||
|
||||
Close D0 -silent
|
||||
ReadGltf D0 [locate_data_file bug32867_bull.glb]
|
||||
|
||||
set aGltfFile1 "${imagedir}/${casename}_tmp1.glb"
|
||||
|
||||
WriteGltf D0 "$aGltfFile1" -draco on -parallel
|
||||
|
||||
ReadGltf D "$aGltfFile1"
|
@@ -12,45 +12,45 @@ set ref_data {
|
||||
0:1:1:2:2 Shape.5
|
||||
0:1:4:1 GeomTolerance.5.1 ( N "Feature Control Frame (4)" T 12 TV 0, V 0.254 )
|
||||
0:1:1:2:7 Shape.10
|
||||
0:1:4:6 Dimension.10.1 ( N "linear distance" T 2, V 20.827999999999996, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:6 Dimension.10.1 ( N "linear distance" T 2, V 20.827999999999996, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:1:2:19 Shape.22
|
||||
0:1:4:39 Dimension.22.1 ( N "diameter" T 15, V 11.1252, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:39 Dimension.22.1 ( N "diameter" T 15, V 11.1252, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:35 GeomTolerance.22.1 ( N "Feature Control Frame (40)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:36 Datum.22.1.1 ( N "Feature Control Frame (40)" )
|
||||
0:1:4:37 Datum.22.1.2 ( N "Feature Control Frame (40)", M 15 )
|
||||
0:1:4:38 Datum.22.1.3 ( N "Feature Control Frame (40)", M 15 )
|
||||
0:1:1:2:20 Shape.23
|
||||
0:1:4:39 Dimension.23.1 ( N "diameter" T 15, V 11.1252, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:39 Dimension.23.1 ( N "diameter" T 15, V 11.1252, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:35 GeomTolerance.23.1 ( N "Feature Control Frame (40)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:36 Datum.23.1.1 ( N "Feature Control Frame (40)" )
|
||||
0:1:4:37 Datum.23.1.2 ( N "Feature Control Frame (40)", M 15 )
|
||||
0:1:4:38 Datum.23.1.3 ( N "Feature Control Frame (40)", M 15 )
|
||||
0:1:1:2:21 Shape.24
|
||||
0:1:4:39 Dimension.24.1 ( N "diameter" T 15, V 11.1252, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:39 Dimension.24.1 ( N "diameter" T 15, V 11.1252, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:35 GeomTolerance.24.1 ( N "Feature Control Frame (40)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:36 Datum.24.1.1 ( N "Feature Control Frame (40)" )
|
||||
0:1:4:37 Datum.24.1.2 ( N "Feature Control Frame (40)", M 15 )
|
||||
0:1:4:38 Datum.24.1.3 ( N "Feature Control Frame (40)", M 15 )
|
||||
0:1:1:2:22 Shape.25
|
||||
0:1:4:39 Dimension.25.1 ( N "diameter" T 15, V 11.1252, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:39 Dimension.25.1 ( N "diameter" T 15, V 11.1252, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:35 GeomTolerance.25.1 ( N "Feature Control Frame (40)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:36 Datum.25.1.1 ( N "Feature Control Frame (40)" )
|
||||
0:1:4:37 Datum.25.1.2 ( N "Feature Control Frame (40)", M 15 )
|
||||
0:1:4:38 Datum.25.1.3 ( N "Feature Control Frame (40)", M 15 )
|
||||
0:1:1:2:28 Shape.31
|
||||
0:1:4:6 Dimension.31.1 ( N "linear distance" T 2, V 20.827999999999996, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:6 Dimension.31.1 ( N "linear distance" T 2, V 20.827999999999996, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:2 GeomTolerance.31.1 ( N "Feature Control Frame (24)" T 12 TV 0, V 0.76200000000000001 )
|
||||
0:1:4:3 Datum.31.1.1 ( N "Feature Control Frame (24)" )
|
||||
0:1:4:4 Datum.31.1.2 ( N "Feature Control Frame (24)" )
|
||||
0:1:4:5 Datum.31.1.3 ( N "Feature Control Frame (24)" )
|
||||
0:1:1:2:39 Shape.42
|
||||
0:1:4:14 Dimension.42.1 ( N "diameter" T 15, V 50.799999999999997, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:14 Dimension.42.1 ( N "diameter" T 15, V 50.799999999999997, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:15 GeomTolerance.42.1 ( N "Feature Control Frame (16)" T 10 TV 1, V 1.524 )
|
||||
0:1:4:16 Datum.42.1.1 ( N "Feature Control Frame (16)" )
|
||||
0:1:4:17 Datum.42.1.2 ( N "Feature Control Frame (16)" )
|
||||
0:1:4:18 Datum.42.1.3 ( N "Feature Control Frame (16)" )
|
||||
0:1:1:2:40 Shape.43
|
||||
0:1:4:14 Dimension.43.1 ( N "diameter" T 15, V 50.799999999999997, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:14 Dimension.43.1 ( N "diameter" T 15, V 50.799999999999997, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:15 GeomTolerance.43.1 ( N "Feature Control Frame (16)" T 10 TV 1, V 1.524 )
|
||||
0:1:4:16 Datum.43.1.1 ( N "Feature Control Frame (16)" )
|
||||
0:1:4:17 Datum.43.1.2 ( N "Feature Control Frame (16)" )
|
||||
@@ -58,7 +58,7 @@ set ref_data {
|
||||
0:1:1:2:48 Shape.51
|
||||
0:1:4:30 Dimension.51.1 ( N "linear distance" T 2, V 19.049999999999997, P 0 )
|
||||
0:1:1:2:49 Shape.52
|
||||
0:1:4:19 Dimension.52.1 ( N "diameter" T 15, V 38.099999999999994, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:19 Dimension.52.1 ( N "diameter" T 15, V 38.099999999999994, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:20 GeomTolerance.52.1 ( N "Feature Control Frame (18)" T 10 TV 1, V 2.032 )
|
||||
0:1:4:21 Datum.52.1.1 ( N "Feature Control Frame (18)" )
|
||||
0:1:4:22 Datum.52.1.2 ( N "Feature Control Frame (18)" )
|
||||
@@ -68,7 +68,7 @@ set ref_data {
|
||||
0:1:4:27 Datum.52.2.2 ( N "Feature Control Frame (20)" )
|
||||
0:1:4:28 Datum.52.2.3 ( N "Feature Control Frame (20)" )
|
||||
0:1:1:2:50 Shape.53
|
||||
0:1:4:19 Dimension.53.1 ( N "diameter" T 15, V 38.099999999999994, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:19 Dimension.53.1 ( N "diameter" T 15, V 38.099999999999994, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:24 Dimension.53.2 ( N "linear distance" T 2, V 38.099999999999994, P 0 )
|
||||
0:1:4:20 GeomTolerance.53.1 ( N "Feature Control Frame (18)" T 10 TV 1, V 2.032 )
|
||||
0:1:4:21 Datum.53.1.1 ( N "Feature Control Frame (18)" )
|
||||
@@ -79,49 +79,49 @@ set ref_data {
|
||||
0:1:4:27 Datum.53.2.2 ( N "Feature Control Frame (20)" )
|
||||
0:1:4:28 Datum.53.2.3 ( N "Feature Control Frame (20)" )
|
||||
0:1:1:2:51 Shape.54
|
||||
0:1:4:29 Dimension.54.1 ( N "diameter" T 15, V 15.875, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:29 Dimension.54.1 ( N "diameter" T 15, V 15.875, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:31 GeomTolerance.54.1 ( N "Feature Control Frame (36)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:32 Datum.54.1.1 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:33 Datum.54.1.2 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:34 Datum.54.1.3 ( N "Feature Control Frame (36)" )
|
||||
0:1:1:2:52 Shape.55
|
||||
0:1:4:29 Dimension.55.1 ( N "diameter" T 15, V 15.875, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:29 Dimension.55.1 ( N "diameter" T 15, V 15.875, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:31 GeomTolerance.55.1 ( N "Feature Control Frame (36)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:32 Datum.55.1.1 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:33 Datum.55.1.2 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:34 Datum.55.1.3 ( N "Feature Control Frame (36)" )
|
||||
0:1:1:2:53 Shape.56
|
||||
0:1:4:29 Dimension.56.1 ( N "diameter" T 15, V 15.875, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:29 Dimension.56.1 ( N "diameter" T 15, V 15.875, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:31 GeomTolerance.56.1 ( N "Feature Control Frame (36)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:32 Datum.56.1.1 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:33 Datum.56.1.2 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:34 Datum.56.1.3 ( N "Feature Control Frame (36)" )
|
||||
0:1:1:2:54 Shape.57
|
||||
0:1:4:29 Dimension.57.1 ( N "diameter" T 15, V 15.875, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:29 Dimension.57.1 ( N "diameter" T 15, V 15.875, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:31 GeomTolerance.57.1 ( N "Feature Control Frame (36)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:32 Datum.57.1.1 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:33 Datum.57.1.2 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:34 Datum.57.1.3 ( N "Feature Control Frame (36)" )
|
||||
0:1:1:2:55 Shape.58
|
||||
0:1:4:29 Dimension.58.1 ( N "diameter" T 15, V 15.875, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:29 Dimension.58.1 ( N "diameter" T 15, V 15.875, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:31 GeomTolerance.58.1 ( N "Feature Control Frame (36)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:32 Datum.58.1.1 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:33 Datum.58.1.2 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:34 Datum.58.1.3 ( N "Feature Control Frame (36)" )
|
||||
0:1:1:2:56 Shape.59
|
||||
0:1:4:29 Dimension.59.1 ( N "diameter" T 15, V 15.875, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:29 Dimension.59.1 ( N "diameter" T 15, V 15.875, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:31 GeomTolerance.59.1 ( N "Feature Control Frame (36)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:32 Datum.59.1.1 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:33 Datum.59.1.2 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:34 Datum.59.1.3 ( N "Feature Control Frame (36)" )
|
||||
0:1:1:2:57 Shape.60
|
||||
0:1:4:29 Dimension.60.1 ( N "diameter" T 15, V 15.875, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:29 Dimension.60.1 ( N "diameter" T 15, V 15.875, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:31 GeomTolerance.60.1 ( N "Feature Control Frame (36)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:32 Datum.60.1.1 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:33 Datum.60.1.2 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:34 Datum.60.1.3 ( N "Feature Control Frame (36)" )
|
||||
0:1:1:2:58 Shape.61
|
||||
0:1:4:29 Dimension.61.1 ( N "diameter" T 15, V 15.875, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:29 Dimension.61.1 ( N "diameter" T 15, V 15.875, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:31 GeomTolerance.61.1 ( N "Feature Control Frame (36)" T 10 TV 1, V 1.27, MR 1 )
|
||||
0:1:4:32 Datum.61.1.1 ( N "Feature Control Frame (36)" )
|
||||
0:1:4:33 Datum.61.1.2 ( N "Feature Control Frame (36)" )
|
||||
@@ -137,28 +137,28 @@ set ref_data {
|
||||
0:1:1:2:129 Shape.132
|
||||
0:1:4:1 GeomTolerance.132.1 ( N "Feature Control Frame (4)" T 12 TV 0, V 0.254 )
|
||||
0:1:1:2:134 Shape.137
|
||||
0:1:4:40 Dimension.137.1 ( N "diameter" T 15, V 27.050999999999998, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:40 Dimension.137.1 ( N "diameter" T 15, V 27.050999999999998, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:41 GeomTolerance.137.1 ( N "Feature Control Frame (30)" T 9 TV 1, V 0.254 )
|
||||
0:1:4:42 Datum.137.1.1 ( N "Feature Control Frame (30)" )
|
||||
0:1:1:2:135 Shape.138
|
||||
0:1:4:40 Dimension.138.1 ( N "diameter" T 15, V 27.050999999999998, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:40 Dimension.138.1 ( N "diameter" T 15, V 27.050999999999998, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:41 GeomTolerance.138.1 ( N "Feature Control Frame (30)" T 9 TV 1, V 0.254 )
|
||||
0:1:4:42 Datum.138.1.1 ( N "Feature Control Frame (30)" )
|
||||
0:1:1:2:153 Shape.156
|
||||
0:1:4:7 Dimension.156.1 ( N "diameter" T 15, V 11.1252, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:7 Dimension.156.1 ( N "diameter" T 15, V 11.1252, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:9 GeomTolerance.156.1 ( N "Feature Control Frame (10)" T 9 TV 1, V 0.254 )
|
||||
0:1:4:10 Datum.156.1.1 ( N "Feature Control Frame (10)" )
|
||||
0:1:1:2:154 Shape.157
|
||||
0:1:4:7 Dimension.157.1 ( N "diameter" T 15, V 11.1252, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:7 Dimension.157.1 ( N "diameter" T 15, V 11.1252, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:9 GeomTolerance.157.1 ( N "Feature Control Frame (10)" T 9 TV 1, V 0.254 )
|
||||
0:1:4:10 Datum.157.1.1 ( N "Feature Control Frame (10)" )
|
||||
0:1:1:2:155 Shape.158
|
||||
0:1:4:8 Dimension.158.1 ( N "diameter" T 15, V 11.1252, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:8 Dimension.158.1 ( N "diameter" T 15, V 11.1252, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:11 GeomTolerance.158.1 ( N "Feature Control Frame (11)" T 10 TV 1, V 0.50800000000000001 )
|
||||
0:1:4:12 Datum.158.1.1 ( N "Feature Control Frame (11)" )
|
||||
0:1:4:13 Datum.158.1.2 ( N "Feature Control Frame (11)" )
|
||||
0:1:1:2:156 Shape.159
|
||||
0:1:4:8 Dimension.159.1 ( N "diameter" T 15, V 11.1252, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:8 Dimension.159.1 ( N "diameter" T 15, V 11.1252, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:4:11 GeomTolerance.159.1 ( N "Feature Control Frame (11)" T 10 TV 1, V 0.50800000000000001 )
|
||||
0:1:4:12 Datum.159.1.1 ( N "Feature Control Frame (11)" )
|
||||
0:1:4:13 Datum.159.1.2 ( N "Feature Control Frame (11)" )
|
||||
|
@@ -10,9 +10,9 @@ set ref_data {
|
||||
NbOfDatumTarget : 2
|
||||
|
||||
0:1:1:2:2 Shape.5
|
||||
0:1:4:14 Dimension.5.1 ( N "linear distance" T 2, V 127, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:14 Dimension.5.1 ( N "linear distance" T 2, V 127, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:1:2:8 Shape.11
|
||||
0:1:4:14 Dimension.11.1 ( N "linear distance" T 2, V 127, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:14 Dimension.11.1 ( N "linear distance" T 2, V 127, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:1:2:9 Shape.12
|
||||
0:1:4:1 GeomTolerance.12.1 ( N "Feature Control Frame (11)" T 13 TV 0, V 0.127 )
|
||||
0:1:1:2:66 Shape.69
|
||||
@@ -57,9 +57,9 @@ set ref_data {
|
||||
0:1:4:7 GeomTolerance.203.1 ( N "Feature Control Frame (4)" T 2 TV 0, V 0.050799999999999998 )
|
||||
0:1:4:8 Datum.203.1.1 ( N "Feature Control Frame (4)" )
|
||||
0:1:1:2:206 Shape.209
|
||||
0:1:4:11 Dimension.209.1 ( N "linear distance" T 2, V 254, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:11 Dimension.209.1 ( N "linear distance" T 2, V 254, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:1:2:207 Shape.210
|
||||
0:1:4:11 Dimension.210.1 ( N "linear distance" T 2, V 254, VL 2.54, VU 2.54, P 0 )
|
||||
0:1:4:11 Dimension.210.1 ( N "linear distance" T 2, V 254, VL 64.515999999999991, VU 64.515999999999991, P 0 )
|
||||
0:1:1:3:1 Shape.211
|
||||
0:1:4:1 GeomTolerance.211.1 ( N "Feature Control Frame (11)" T 13 TV 0, V 0.127 )
|
||||
}
|
||||
|
@@ -4,21 +4,30 @@ puts ""
|
||||
puts "==========="
|
||||
|
||||
pload MODELING VISUALIZATION
|
||||
vinit View1
|
||||
vinit View1 -width 500
|
||||
vclear
|
||||
vaxo
|
||||
|
||||
box b1 10 0 360 10 180 40
|
||||
box b1 10 0 460 10 180 40
|
||||
vdisplay b1
|
||||
vdrawtext t1 "Top text on plane yOz\n(not wrapped)" -pos 10 5 400 -color green -plane 1 0 0 0 1 0 -valign top -font SansFont -zoom 1
|
||||
vdrawtext t1 "Top text on plane yOz\n(not wrapped)" -pos 10 5 500 -color green -plane 1 0 0 0 1 0 -valign top -font SansFont -zoom 1
|
||||
|
||||
box b2 10 0 240 10 130 60
|
||||
box b2 10 0 340 10 130 60
|
||||
vdisplay b2
|
||||
vdrawtext t2 "Top text on plane yOz\n(wrapping=120)" -pos 10 5 300 -color green -wrapping 120 -plane 1 0 0 0 1 0 -valign top -font SansFont -zoom 1
|
||||
vdrawtext t2 "Top text on plane yOz\n(wrapping=120)" -pos 10 5 400 -color green -wrapping 120 -plane 1 0 0 0 1 0 -valign top -font SansFont -zoom 1
|
||||
|
||||
box b3 10 0 60 10 60 150
|
||||
box b3 10 0 160 10 60 150
|
||||
vdisplay b3
|
||||
vdrawtext t3 "Top text on plane yOz\n(wrapping=50)" -pos 10 5 200 -color green -wrapping 50 -plane 1 0 0 0 1 0 -valign top -font SansFont -zoom 1
|
||||
vdrawtext t3 "Top text on plane yOz\n(wrapping=50)" -pos 10 5 300 -color green -wrapping 50 -plane 1 0 0 0 1 0 -valign top -font SansFont -zoom 1
|
||||
|
||||
box b4 10 200 400 10 130 100
|
||||
vdisplay b4
|
||||
vdrawtext t4 "Top text on plane yOz\n(wrapping=120, word wrapping disabled)" -pos 10 205 500 -color green -wrapping 120 -plane 1 0 0 0 1 0 -valign top -font SansFont -zoom 1 -wordwrapping 0
|
||||
|
||||
box b5 10 200 160 10 60 200
|
||||
vdisplay b5
|
||||
vdrawtext t5 "Top text on plane yOz\n(wrapping=50, word wrapping disabled)" -pos 10 205 350 -color green -wrapping 50 -plane 1 0 0 0 1 0 -valign top -font SansFont -zoom 1 -wordwrapping 0
|
||||
|
||||
|
||||
vright
|
||||
vfit
|
||||
|
Reference in New Issue
Block a user