]> OCCT Git - occt-copy.git/commitdiff
0031326: Foundation Classes - Init from Json for base OCCT classes
authornds <nds@opencascade.com>
Wed, 12 Feb 2020 20:35:54 +0000 (23:35 +0300)
committernds <natalia.ermolaeva@opencascade.com>
Mon, 6 Jul 2020 16:57:03 +0000 (19:57 +0300)
(cherry picked from commit 39f197676cb85d2b84ad0ff15266eed118cbbaff)
(cherry picked from commit 4a5e30db5bbdfc7a77a03d1e55e8a3bee5d79d2d)
(cherry picked from commit b4a5214bd281d5ad445d46437c98897cbc292dd9)
(cherry picked from commit 982e5220795701b71350c18bf74c6c9a3f61c2a6)

32 files changed:
src/BVH/BVH_Box.hxx
src/Bnd/Bnd_Box.cxx
src/Bnd/Bnd_Box.hxx
src/Quantity/Quantity_Color.cxx
src/Quantity/Quantity_Color.hxx
src/Quantity/Quantity_ColorRGBA.cxx
src/Quantity/Quantity_ColorRGBA.hxx
src/Standard/Standard_Dump.cxx
src/Standard/Standard_Dump.hxx
src/gp/gp_Ax1.cxx
src/gp/gp_Ax1.hxx
src/gp/gp_Ax2.cxx
src/gp/gp_Ax2.hxx
src/gp/gp_Ax3.cxx
src/gp/gp_Ax3.hxx
src/gp/gp_Dir.cxx
src/gp/gp_Dir.hxx
src/gp/gp_Pnt.cxx
src/gp/gp_Pnt.hxx
src/gp/gp_Trsf.cxx
src/gp/gp_Trsf.hxx
src/gp/gp_XYZ.cxx
src/gp/gp_XYZ.hxx
tools/Convert/Convert_Tools.cxx
tools/TreeModel/TreeModel_ItemBase.cxx
tools/TreeModel/TreeModel_ItemBase.hxx
tools/VInspector/VInspector_ItemPresentableObject.cxx
tools/VInspector/VInspector_Window.cxx
tools/View/View_DisplayPreview.cxx
tools/View/View_DisplayPreview.hxx
tools/View/View_Displayer.cxx
tools/View/View_PreviewParameters.cxx

index 8e0dc9fac5c5b0b9b01d276c4fa224a41450fa6b..8ed7ae7311001dbefc62457bf97740d2fb602abd 100644 (file)
@@ -201,6 +201,51 @@ public:
     }
   }
 
+  //! Inits the content of me into the stream
+  Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+  {
+    Standard_Integer aPos = theStreamPos;
+
+    Standard_Integer anIsInited = 0;
+    OCCT_INIT_FIELD_VALUE_INTEGER (theSStream, aPos, anIsInited);
+    myIsInited = anIsInited != 0;
+
+    int n = Min (N, 3);
+    if (n == 1)
+    {
+      Standard_Real aValue;
+      OCCT_INIT_FIELD_VALUE_REAL (theSStream, aPos, aValue);
+      myMinPoint[0] = (T)aValue;
+    }
+    if (n == 2)
+    {
+      Standard_Real aValue1, aValue2;
+      OCCT_INIT_VECTOR_CLASS (theSStream, "MinPoint", aPos, n, &aValue1, &aValue2);
+      myMinPoint[0] = (T)aValue1;
+      myMinPoint[1] = (T)aValue2;
+
+      OCCT_INIT_VECTOR_CLASS (theSStream, "MaxPoint", aPos, n, &aValue1, &aValue2);
+      myMaxPoint[0] = (T)aValue1;
+      myMaxPoint[1] = (T)aValue2;
+    }
+    if (n == 3)
+    {
+      Standard_Real aValue1, aValue2, aValue3;
+      OCCT_INIT_VECTOR_CLASS (theSStream, "MinPoint", aPos, n, &aValue1, &aValue2, &aValue3);
+      myMinPoint[0] = (T)aValue1;
+      myMinPoint[1] = (T)aValue2;
+      myMinPoint[2] = (T)aValue3;
+
+      OCCT_INIT_VECTOR_CLASS (theSStream, "MaxPoint", aPos, n, &aValue1, &aValue2, &aValue3);
+      myMaxPoint[0] = (T)aValue1;
+      myMaxPoint[1] = (T)aValue2;
+      myMaxPoint[2] = (T)aValue3;
+    }
+
+    theStreamPos = aPos;
+    return Standard_True;
+  }
+
 public:
 
   //! Checks if the Box is out of the other box.
index cb4fbedad97f770a8fae69aa2c904d7a3b3183dd..18f1f228a57e0e1d61d8008cc4a3dfa94b831eea 100644 (file)
@@ -983,3 +983,21 @@ void Bnd_Box::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
   OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, Gap)
   OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, Flags)
 }
+
+//=======================================================================
+//function : InitFromJson
+//purpose  : 
+//=======================================================================
+Standard_Boolean Bnd_Box::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+  Standard_Integer aPos = theStreamPos;
+
+  OCCT_INIT_VECTOR_CLASS (theSStream, "CornerMin", aPos, 3, &Xmin, &Ymin, &Zmin)
+  OCCT_INIT_VECTOR_CLASS (theSStream, "CornerMax", aPos, 3, &Xmax, &Ymax, &Zmax)
+
+  OCCT_INIT_FIELD_VALUE_REAL (theSStream, aPos, Gap);
+  OCCT_INIT_FIELD_VALUE_INTEGER (theSStream, aPos, Flags);
+
+  theStreamPos = aPos;
+  return Standard_True;
+}
index b716902f07620056412ec2db118fe45be4846018..31af29518e4a8fe837eb48c489769b55a65551bb 100644 (file)
@@ -305,6 +305,9 @@ public:
   //! Dumps the content of me into the stream
   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
+  //! Inits the content of me into the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
 protected:
 
   //! Bit flags.
index cb8962e1afe4cd52af4bacb7fe90cd4cff3813e4..c8f726ca0fa7b7c36fab83b30cc08041317dfcab 100644 (file)
@@ -676,3 +676,17 @@ void Quantity_Color::DumpJson (Standard_OStream& theOStream, Standard_Integer) c
 {
   OCCT_DUMP_FIELD_VALUES_NUMERICAL (theOStream, "RGB", 3, myRgb.r(), myRgb.g(), myRgb.b())
 }
+
+//=======================================================================
+//function : InitFromJson
+//purpose  : 
+//=======================================================================
+Standard_Boolean Quantity_Color::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+  Standard_Integer aPos = theStreamPos;
+  Standard_Real  aRed, aGreen, aBlue;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "RGB", aPos, 3, &aRed, &aGreen, &aBlue)
+
+  SetValues ((Standard_ShortReal)aRed, (Standard_ShortReal)aGreen, (Standard_ShortReal)aBlue, Quantity_TOC_RGB);
+  return Standard_True;
+}
index 82e3bdc9c8ddce45bfa5762f545d71c51713ca71..6471b244d1c50a95fcf5a003979f575c4314d70c 100644 (file)
@@ -365,6 +365,9 @@ public:
   //! Dumps the content of me into the stream
   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
+  //! Inits the content of me into the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
 private:
 
   //! Returns the values of a predefined color according to the mode.
index 80016d8b7e0eabfce65f0436a7f22cfeedc51180..42cd8f4b7088f958d78b33cb6400ca25ad0bd9cd 100644 (file)
@@ -208,3 +208,18 @@ void Quantity_ColorRGBA::DumpJson (Standard_OStream& theOStream, Standard_Intege
 {
   OCCT_DUMP_FIELD_VALUES_NUMERICAL (theOStream, "RGBA", 4, myRgb.Red(), myRgb.Green(), myRgb.Blue(), myAlpha)
 }
+
+//=======================================================================
+//function : InitFromJson
+//purpose  : 
+//=======================================================================
+Standard_Boolean Quantity_ColorRGBA::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+  Standard_Integer aPos = theStreamPos;
+
+  Standard_Real aRed, aGreen, aBlue, anAlpha;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "RGBA", aPos, 4, &aRed, &aGreen, &aBlue, &anAlpha)
+
+  SetValues ((Standard_ShortReal)aRed, (Standard_ShortReal)aGreen, (Standard_ShortReal)aBlue, (Standard_ShortReal)anAlpha);
+  return Standard_True;
+}
index bf4e47b211d483e92a1fbcc9d711e561279d11e3..7823262791fcb4431fa9010c49d583b90c9e9ee7 100644 (file)
@@ -158,6 +158,9 @@ public:
   //! Dumps the content of me into the stream
   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
+  //! Inits the content of me into the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
 private:
 
   static void myTestSize3() { Standard_STATIC_ASSERT (sizeof(float) * 3 == sizeof(Quantity_Color)); }
index e897901d97b5f866d722e764d5e03cb6e17f66a7..4f030678dc18ae99fa4bd5cf5d138888dc4cca5f 100644 (file)
@@ -74,6 +74,139 @@ void Standard_Dump::DumpRealValues (Standard_OStream& theOStream, int theCount,
   va_end(vl);
 }
 
+//=======================================================================
+//function : ProcessStreamName
+//purpose  : 
+//=======================================================================
+Standard_Boolean Standard_Dump::ProcessStreamName (const Standard_SStream& theStream,
+                                                   const TCollection_AsciiString& theName,
+                                                   Standard_Integer& theStreamPos)
+{
+  TCollection_AsciiString aText = Text (theStream);
+  if (aText.IsEmpty())
+    return Standard_False;
+
+  if (aText.Length () < theStreamPos)
+    return Standard_False;
+
+  TCollection_AsciiString aSubText = aText.SubString (theStreamPos, aText.Length());
+  if (aSubText.StartsWith (JsonKeyToString (Standard_JsonKey_SeparatorValueToValue)))
+  {
+    theStreamPos += JsonKeyLength (Standard_JsonKey_SeparatorValueToValue);
+    aSubText = aText.SubString (theStreamPos, aText.Length());
+  }
+  TCollection_AsciiString aKeyName = TCollection_AsciiString (JsonKeyToString (Standard_JsonKey_Quote))
+    + theName
+    + TCollection_AsciiString (JsonKeyToString (Standard_JsonKey_Quote))
+    + JsonKeyToString (Standard_JsonKey_SeparatorKeyToValue);
+  Standard_Boolean aResult = aSubText.StartsWith (aKeyName);
+  if (aResult)
+    theStreamPos += aKeyName.Length();
+
+  return aResult;
+}
+
+//=======================================================================
+//function : ProcessFieldName
+//purpose  : 
+//=======================================================================
+Standard_Boolean Standard_Dump::ProcessFieldName (const Standard_SStream& theStream,
+                                                  const TCollection_AsciiString& theName,
+                                                  Standard_Integer& theStreamPos)
+{
+  TCollection_AsciiString aText = Text (theStream);
+  if (aText.IsEmpty())
+    return Standard_False;
+
+  TCollection_AsciiString aSubText = aText.SubString (theStreamPos, aText.Length());
+  if (aSubText.StartsWith (JsonKeyToString (Standard_JsonKey_SeparatorValueToValue)))
+  {
+    theStreamPos += JsonKeyLength (Standard_JsonKey_SeparatorValueToValue);
+    aSubText = aText.SubString (theStreamPos, aText.Length());
+  }
+
+  TCollection_AsciiString aName = Standard_Dump::DumpFieldToName (theName.ToCString());
+  TCollection_AsciiString aKeyName = TCollection_AsciiString (JsonKeyToString (Standard_JsonKey_Quote))
+    + aName
+    + TCollection_AsciiString (JsonKeyToString (Standard_JsonKey_Quote))
+    + JsonKeyToString (Standard_JsonKey_SeparatorKeyToValue);
+
+  Standard_Boolean aResult = aSubText.StartsWith (aKeyName);
+  if (aResult)
+    theStreamPos += aKeyName.Length();
+
+  return aResult;
+}
+
+//=======================================================================
+//function : InitRealValues
+//purpose  : 
+//=======================================================================
+Standard_Boolean Standard_Dump::InitRealValues (const Standard_SStream& theStream,
+                                                Standard_Integer& theStreamPos,
+                                                int theCount, ...)
+{
+  Standard_Integer aStreamPos = theStreamPos + JsonKeyLength (Standard_JsonKey_OpenContainer);
+
+  TCollection_AsciiString aText = Text (theStream);
+  TCollection_AsciiString aSubText = aText.SubString (aStreamPos, aText.Length());
+
+  va_list  vl;
+  va_start(vl, theCount);
+  aStreamPos = 1;
+  Standard_Integer aClosePos = aSubText.Location (JsonKeyToString (Standard_JsonKey_CloseContainer), aStreamPos, aSubText.Length());
+  for(int i = 0; i < theCount; ++i)
+  {
+    Standard_Integer aNextPos = (i < theCount-1) ? aSubText.Location (JsonKeyToString (Standard_JsonKey_SeparatorValueToValue), aStreamPos, aSubText.Length())
+      : aClosePos;
+
+    TCollection_AsciiString aValueText = aSubText.SubString (aStreamPos, aNextPos - 1);
+
+    if (!aValueText.IsRealValue())
+      return Standard_False;
+
+    Standard_Real aValue = aValueText.RealValue();
+    *(va_arg(vl, Standard_Real*)) = aValue;
+
+    aStreamPos = aNextPos + JsonKeyLength (Standard_JsonKey_SeparatorValueToValue);
+  }
+  va_end(vl);
+  aClosePos = aText.Location (JsonKeyToString (Standard_JsonKey_CloseContainer), theStreamPos, aText.Length());
+  theStreamPos = aClosePos + JsonKeyLength (Standard_JsonKey_CloseContainer);
+
+  return Standard_True;
+}
+
+//=======================================================================
+//function : InitValue
+//purpose  : 
+//=======================================================================
+Standard_Boolean Standard_Dump::InitValue (const Standard_SStream& theStream,
+                                           Standard_Integer& theStreamPos,
+                                           TCollection_AsciiString& theValue)
+{
+  Standard_Integer aStreamPos = theStreamPos;
+
+  TCollection_AsciiString aText = Text (theStream);
+  TCollection_AsciiString aSubText = aText.SubString (aStreamPos, aText.Length());
+
+  aStreamPos = 1;
+  Standard_Integer aNextPos = aSubText.Location (JsonKeyToString (Standard_JsonKey_SeparatorValueToValue), aStreamPos, aSubText.Length());
+  Standard_JsonKey aNextKey = Standard_JsonKey_SeparatorValueToValue;
+
+  Standard_Integer aCloseChildPos = aSubText.Location (JsonKeyToString (Standard_JsonKey_CloseChild), aStreamPos, aSubText.Length());
+  Standard_Boolean isUseClosePos = (aNextPos > 0 && aCloseChildPos > 0 && aCloseChildPos < aNextPos) || !aNextPos;
+  if (isUseClosePos)
+  {
+    aNextPos = aCloseChildPos;
+    aNextKey = Standard_JsonKey_CloseChild;
+  }
+
+  theValue = aNextPos ? aSubText.SubString (aStreamPos, aNextPos - 1) : aSubText;
+  theStreamPos = aNextPos ? (theStreamPos + (aNextPos - aStreamPos) + JsonKeyLength (aNextKey)) : aText.Length();
+  return Standard_True;
+}
+
 // =======================================================================
 // function : GetPointerInfo
 // purpose :
index 72e7ccb45ca01e09bf4af5288551577bd1d5959d..846c9cb001ac2c752e41345f85fc92aac98ca479 100644 (file)
   theOStream << "\"" << aName << "\": " << theField; \
 }
 
+//! @def OCCT_INIT_FIELD_VALUE_REAL
+//! Append vector values into output value: "Name": [value_1, value_2, ...]
+//! This macro is intended to have only one row for dumped object in Json.
+//! It's possible to use it without necessity of OCCT_DUMP_CLASS_BEGIN call, but pay attention that it should be only one row in the object dump.
+#define OCCT_INIT_FIELD_VALUE_REAL(theOStream, theStreamPos, theField) \
+{ \
+  Standard_Integer aStreamPos = theStreamPos; \
+  if (!Standard_Dump::ProcessFieldName (theOStream, #theField, aStreamPos)) \
+    return Standard_False; \
+  TCollection_AsciiString aValueText; \
+  if (!Standard_Dump::InitValue (theOStream, aStreamPos, aValueText) || !aValueText.IsRealValue()) \
+    return Standard_False; \
+  theField = aValueText.RealValue(); \
+  theStreamPos = aStreamPos; \
+}
+
+//! @def OCCT_INIT_FIELD_VALUE_NUMERICAL
+//! Append vector values into output value: "Name": [value_1, value_2, ...]
+//! This macro is intended to have only one row for dumped object in Json.
+//! It's possible to use it without necessity of OCCT_DUMP_CLASS_BEGIN call, but pay attention that it should be only one row in the object dump.
+#define OCCT_INIT_FIELD_VALUE_INTEGER(theOStream, theStreamPos, theField) \
+{ \
+  Standard_Integer aStreamPos = theStreamPos; \
+  if (!Standard_Dump::ProcessFieldName (theOStream, #theField, aStreamPos)) \
+    return Standard_False; \
+  TCollection_AsciiString aValueText; \
+  if (!Standard_Dump::InitValue (theOStream, aStreamPos, aValueText) || !aValueText.IsIntegerValue()) \
+    return Standard_False; \
+  theField = aValueText.IntegerValue(); \
+  theStreamPos = aStreamPos; \
+}
+
 //! @def OCCT_DUMP_FIELD_VALUE_STRING
 //! Append into output value: "Name": "Field"
 #define OCCT_DUMP_FIELD_VALUE_STRING(theOStream, theField) \
   } \
 }
 
+//! @def OCCT_INIT_FIELD_VALUES_DUMPED
+//! Append into output value: "Name": { field dumped values }
+//! It computes Dump of the fields. The expected field is a pointer.
+//! Use this macro for fields of the dumped class which has own Dump implementation.
+//! The macros is recursive. Recursion is stopped when the depth value becomes equal to zero.
+//! Depth = -1 is the default value, dump here is unlimited.
+#define OCCT_INIT_FIELD_VALUES_DUMPED(theSStream, theStreamPos, theField) \
+{ \
+  if ((theField) == NULL || !(theField)->InitFromJson (theSStream, theStreamPos)) \
+    return Standard_False; \
+}
+
 //! @def OCCT_DUMP_FIELD_VALUES_NUMERICAL
 //! Append real values into output values in an order: [value_1, value_2, ...]
 //! It computes Dump of the parent. The expected field is a parent class name to call ClassName::Dump.
   theOStream << "]"; \
 }
 
+//! @def OCCT_INIT_VECTOR_CLASS
+//! Append vector values into output value: "Name": [value_1, value_2, ...]
+//! This macro is intended to have only one row for dumped object in Json.
+//! It's possible to use it without necessity of OCCT_DUMP_CLASS_BEGIN call, but pay attention that it should be only one row in the object dump.
+#define OCCT_INIT_VECTOR_CLASS(theOStream, theName, theStreamPos, theCount, ...) \
+{ \
+  Standard_Integer aStreamPos = theStreamPos; \
+  if (!Standard_Dump::ProcessStreamName (theOStream, theName, aStreamPos)) \
+    return Standard_False; \
+  if (!Standard_Dump::InitRealValues (theOStream, aStreamPos, theCount, __VA_ARGS__)) \
+    return Standard_False; \
+  theStreamPos = aStreamPos; \
+}
+
 //! Kind of key in Json string
 enum Standard_JsonKey
 {
@@ -279,6 +337,38 @@ public:
   //! @param theCount numer of values
   Standard_EXPORT static void DumpRealValues (Standard_OStream& theOStream, int theCount, ...);
 
+  //! Check whether the parameter name is equal to the name in the stream at position
+  //! @param theSStream stream with values
+  //! @param theName stream key value
+  //! @param theStreamPos current position in the stream
+  Standard_EXPORT static Standard_Boolean ProcessStreamName (const Standard_SStream& theStream,
+                                                             const TCollection_AsciiString& theName,
+                                                             Standard_Integer& theStreamPos);
+
+  //! Check whether the field name is equal to the name in the stream at position
+  //! @param theSStream stream with values
+  //! @param theName stream key field value
+  //! @param theStreamPos current position in the stream
+  Standard_EXPORT static Standard_Boolean ProcessFieldName (const Standard_SStream& theStream,
+                                                             const TCollection_AsciiString& theName,
+                                                             Standard_Integer& theStreamPos);
+
+  //! Unite values in one value using template: value_1, value_2, ..., value_n
+  //! @param theSStream stream with values
+  //! @param theStreamPos current position in the stream
+  //! @param theCount numer of values
+  Standard_EXPORT static Standard_Boolean InitRealValues (const Standard_SStream& theStream,
+                                                          Standard_Integer& theStreamPos,
+                                                          int theCount, ...);
+
+  //! Returns real value
+  //! @param theSStream stream with values
+  //! @param theStreamPos current position in the stream
+  //! @param theValue stream value
+  Standard_EXPORT static Standard_Boolean InitValue (const Standard_SStream& theStream,
+                                                     Standard_Integer& theStreamPos,
+                                                     TCollection_AsciiString& theValue);
+
   //! Convert field name into dump text value, removes "&" and "my" prefixes
   //! An example, for field myValue, theName is Value, for &myCLass, the name is Class
   //! @param theField a source value 
index 3ee0231b34f08b33f255e5ba292a661c7615bd7e..378c714395b2cf58b6dc085468c52f11c8f70861 100644 (file)
@@ -90,3 +90,17 @@ void gp_Ax1::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
   OCCT_DUMP_VECTOR_CLASS (theOStream, "Location", 3, loc.X(), loc.Y(), loc.Z())
   OCCT_DUMP_VECTOR_CLASS (theOStream, "Direction", 3, vdir.X(), vdir.Y(), vdir.Z())
 }
+
+Standard_Boolean gp_Ax1::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+  Standard_Integer aPos = theStreamPos;
+
+  gp_XYZ& anXYZLoc = loc.ChangeCoord();
+  OCCT_INIT_VECTOR_CLASS (theSStream, "Location", aPos, 3, &anXYZLoc.ChangeCoord (1), &anXYZLoc.ChangeCoord (2), &anXYZLoc.ChangeCoord (3))
+  gp_XYZ aDir;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "Direction", aPos, 3, &aDir.ChangeCoord (1), &aDir.ChangeCoord (2), &aDir.ChangeCoord (3))
+  SetDirection (aDir);
+
+  theStreamPos = aPos;
+  return Standard_True;
+}
index f71a0829fe931812af13557830a4989836df2fa4..0d9b3683ee683c98525f96381f3e4e6ebd664863 100644 (file)
@@ -208,7 +208,8 @@ public:
   //! Dumps the content of me into the stream
   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
-
+  //! Inits the content of me into the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
 
 protected:
 
index ba8e7b155d56607e6d149ed3f8cbfdac08de227c..b16071f7fdffe0d4b1b7e61d44d4d9b731a7d6a9 100644 (file)
@@ -122,3 +122,28 @@ void gp_Ax2::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
   OCCT_DUMP_VECTOR_CLASS (theOStream, "XDirection", 3, vxdir.X(), vxdir.Y(), vxdir.Z())
   OCCT_DUMP_VECTOR_CLASS (theOStream, "YDirection", 3, vydir.X(), vydir.Y(), vydir.Z())
 }
+
+Standard_Boolean gp_Ax2::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+  Standard_Integer aPos = theStreamPos;
+
+  gp_XYZ anXYZLoc;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "Location", aPos, 3, &anXYZLoc.ChangeCoord (1), &anXYZLoc.ChangeCoord (2), &anXYZLoc.ChangeCoord (3))
+  SetLocation (anXYZLoc);
+
+  gp_XYZ aDir;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "Direction", aPos, 3, &aDir.ChangeCoord (1), &aDir.ChangeCoord (2), &aDir.ChangeCoord (3))
+  gp_XYZ aXDir;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "XDirection", aPos, 3, &aXDir.ChangeCoord (1), &aXDir.ChangeCoord (2), &aXDir.ChangeCoord (3))
+  gp_XYZ anYDir;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "YDirection", aPos, 3, &anYDir.ChangeCoord (1), &anYDir.ChangeCoord (2), &anYDir.ChangeCoord (3))
+
+  SetXDirection (aXDir);
+  SetYDirection (anYDir);
+
+  if (!Direction().IsEqual (aDir, Precision::Confusion()))
+    return Standard_False;
+
+  theStreamPos = aPos;
+  return Standard_True;
+}
index 1586dfed73254f679566d863bef48a6304c2f280..50b243c8ac936d9caabc0937b5193f6902f2acc7 100644 (file)
@@ -326,6 +326,9 @@ public:
   //! Dumps the content of me into the stream
   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
+  //! Inits the content of me into the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
 
 
 protected:
index ec5e8b7c4d622c0c175fdbab940b6b1eaaf64601..93e6d357579ebe3a211f3245eaacfec8691021a1 100644 (file)
@@ -115,3 +115,25 @@ void gp_Ax3::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
   OCCT_DUMP_VECTOR_CLASS (theOStream, "XDirection", 3, XDirection().X(), XDirection().Y(), XDirection().Z())
   OCCT_DUMP_VECTOR_CLASS (theOStream, "YDirection", 3, YDirection().X(), YDirection().Y(), YDirection().Z())
 }
+
+Standard_Boolean  gp_Ax3::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+  Standard_Integer aPos = theStreamPos;
+
+  gp_XYZ anXYZLoc;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "Location", aPos, 3, &anXYZLoc.ChangeCoord (1), &anXYZLoc.ChangeCoord (2), &anXYZLoc.ChangeCoord (3))
+  SetLocation (anXYZLoc);
+
+  gp_XYZ aDir;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "Direction", aPos, 3, &aDir.ChangeCoord (1), &aDir.ChangeCoord (2), &aDir.ChangeCoord (3))
+  gp_XYZ aXDir;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "XDirection", aPos, 3, &aXDir.ChangeCoord (1), &aXDir.ChangeCoord (2), &aXDir.ChangeCoord (3))
+  gp_XYZ anYDir;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "YDirection", aPos, 3, &anYDir.ChangeCoord (1), &anYDir.ChangeCoord (2), &anYDir.ChangeCoord (3))
+
+  SetXDirection (aXDir);
+  SetYDirection (anYDir);
+
+  theStreamPos = aPos;
+  return Standard_True;
+}
index 50068bea7bced15dcdb96d1937f162a8fb961971..6424a14012c8eee8852f7c9dc7df214a2a5bc59f 100644 (file)
@@ -293,7 +293,8 @@ public:
   //! Dumps the content of me into the stream
   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
-
+  //! Inits the content of me into the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
 
 protected:
 
index 0714a34e6bb029279de1ac9e590a416892180d70..68b57b9a1b6d5c5465640bd73f74a3cf0f56818d 100644 (file)
@@ -144,3 +144,13 @@ void gp_Dir::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
 {
   OCCT_DUMP_VECTOR_CLASS (theOStream, "gp_Dir", 3, coord.X(), coord.Y(), coord.Z())
 }
+
+Standard_Boolean gp_Dir::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+  Standard_Integer aPos = theStreamPos;
+
+  OCCT_INIT_VECTOR_CLASS (theSStream, "gp_Dir", aPos, 3, &coord.ChangeCoord (1), &coord.ChangeCoord (2), &coord.ChangeCoord (3))
+
+  theStreamPos = aPos;
+  return Standard_True;
+}
index 0892155c000c193e2f5f16ad30a0f38affabb84c..8322c2a6219ad162647567d62d018f030dad1c67 100644 (file)
@@ -266,6 +266,8 @@ public:
   //! Dumps the content of me into the stream
   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
+  //! Inits the content of me into the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
 
 
 protected:
index 10a9b5d4345e5a3feb44ed985b9899e530fd4d15..e4541aeeb449181e1383c4ec2ed9913e64aea327 100644 (file)
@@ -90,3 +90,13 @@ void gp_Pnt::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
 {
   OCCT_DUMP_VECTOR_CLASS (theOStream, "gp_Pnt", 3, coord.X(), coord.Y(), coord.Z())
 }
+
+Standard_Boolean gp_Pnt::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+  Standard_Integer aPos = theStreamPos;
+
+  OCCT_INIT_VECTOR_CLASS (theSStream, "gp_Pnt", aPos, 3, &coord.ChangeCoord (1), &coord.ChangeCoord (2), &coord.ChangeCoord (3))
+
+  theStreamPos = aPos;
+  return Standard_True;
+}
index b9c4b5c0870406826923e4dd7197cfb2e00ac76d..3211e6a9b10230d4f3a1f36d2c4c10806f76829d 100644 (file)
@@ -177,7 +177,8 @@ public:
   //! Dumps the content of me into the stream
   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
-
+  //! Inits the content of me into the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
 
 protected:
 
index 9a4e299de50089a563d7532f318496f7c70b58fa..f673419efaef2187159fcc4e4426ec8bc11db12c 100644 (file)
@@ -864,3 +864,37 @@ void gp_Trsf::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
   OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, shape)
   OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, scale)
 }
+
+//=======================================================================
+//function : InitFromJson
+//purpose  : 
+//=======================================================================
+Standard_Boolean  gp_Trsf::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+  Standard_Integer aPos = theStreamPos;
+
+  gp_XYZ anXYZLoc;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "Location", aPos, 3, &anXYZLoc.ChangeCoord (1), &anXYZLoc.ChangeCoord (2), &anXYZLoc.ChangeCoord (3))
+  SetTranslation (anXYZLoc);
+
+  Standard_Real mymatrix[3][3];
+  OCCT_INIT_VECTOR_CLASS (theSStream, "Matrix", aPos, 9, &mymatrix[0][0], &mymatrix[0][1], &mymatrix[0][2],
+                                                         &mymatrix[1][0], &mymatrix[1][1], &mymatrix[1][2],
+                                                         &mymatrix[2][0], &mymatrix[2][1], &mymatrix[2][2])
+  for (int i = 0; i < 3; i++)
+  {
+    for (int j = 0; j < 3; j++)
+    {
+      matrix.SetValue (i + 1, j + 1, mymatrix[i][j]);
+    }
+  }
+
+  Standard_Real myshape;
+  OCCT_INIT_FIELD_VALUE_INTEGER (theSStream, aPos, myshape);
+  shape = (gp_TrsfForm)((Standard_Integer)myshape);
+
+  OCCT_INIT_FIELD_VALUE_REAL (theSStream, aPos, scale);
+
+  theStreamPos = aPos;
+  return Standard_True;
+}
index 82c15e91c1dfb91235db521143cd789a0322f2be..5e67718cacdf093a245c90c0fe74e31067ef282c 100644 (file)
@@ -25,6 +25,7 @@
 #include <Standard_Integer.hxx>
 #include <Standard_Handle.hxx>
 #include <Standard_OStream.hxx>
+#include <Standard_SStream.hxx>
 #include <Standard_Real.hxx>
 
 class Standard_ConstructionError;
@@ -353,6 +354,9 @@ void operator *= (const gp_Trsf& T)
   //! Dumps the content of me into the stream
   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
+  //! Inits the content of me into the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
 friend class gp_GTrsf;
 
 protected:
index 0599ad950e4d1f031b92b5aca5e124fdcc971541..06e20730e985258bc6e2b65335d2253267fc08a9 100644 (file)
@@ -42,3 +42,17 @@ void gp_XYZ::DumpJson (Standard_OStream& theOStream, Standard_Integer) const
 {
   OCCT_DUMP_VECTOR_CLASS (theOStream, "gp_XYZ", 3, x, y, z)
 }
+
+//=======================================================================
+//function : InitFromJson
+//purpose  : 
+//=======================================================================
+Standard_Boolean gp_XYZ::InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos)
+{
+  Standard_Integer aPos = theStreamPos;
+  OCCT_INIT_VECTOR_CLASS (theSStream, "gp_XYZ", aPos, 3, &x, &y, &z)
+
+  theStreamPos = aPos;
+  return Standard_True;
+}
+
index e3b49d82eca65d20622cc67880d4c5079fe05b27..a0fa59e6b82006078e5c62d06e74ba71529feb93 100644 (file)
@@ -24,6 +24,7 @@
 #include <Standard_Boolean.hxx>
 
 #include <Standard_OStream.hxx>
+#include <Standard_SStream.hxx>
 
 class Standard_ConstructionError;
 class Standard_OutOfRange;
@@ -330,6 +331,9 @@ public:
   //! Dumps the content of me into the stream
   Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
 
+  //! Inits the content of me into the stream
+  Standard_EXPORT Standard_Boolean InitFromJson (const Standard_SStream& theSStream, Standard_Integer& theStreamPos);
+
 protected:
 
 
index 47b640738dc9d71c0786ce0eeadb3f5f2e619f77..d422933a9c0034fbcf34ec8625864d164fcc5081 100644 (file)
@@ -41,6 +41,18 @@ void Convert_Tools::ConvertStreamToPresentations (const Standard_SStream&,
                                                   const Standard_Integer,
                                                   NCollection_List<Handle(Standard_Transient)>&)
 {
+
+  Select3D_BndBox3d aSelectBndBox;
+  if (aSelectBndBox.InitFromJson (theSStream, aStartPos))
+  {
+    TopoDS_Shape aShape;
+
+    gp_Pnt aPntMin = gp_Pnt (aSelectBndBox.CornerMin().x(), aSelectBndBox.CornerMin().y(), aSelectBndBox.CornerMin().z());
+    gp_Pnt aPntMax = gp_Pnt (aSelectBndBox.CornerMax().x(), aSelectBndBox.CornerMax().y(), aSelectBndBox.CornerMax().z());
+    if (CreateBoxShape (aPntMin, aPntMax, aShape))
+      thePresentations.Append (new Convert_TransientShape (aShape));
+    return;
+  }
 }
 
 //=======================================================================
index 38ef9b23cafe3040d988e2bba2545bc84aa7cd36..1b23b909cbc3a923cd57195c77f98898d48bc6a7 100644 (file)
@@ -92,6 +92,22 @@ TreeModel_ItemBasePtr TreeModel_ItemBase::Child (int theRow, int theColumn, cons
   return anItem;
 }
 
+// =======================================================================
+// function :  Presentations
+// purpose :
+// =======================================================================
+void TreeModel_ItemBase::Presentations (NCollection_List<Handle(Standard_Transient)>& thePresentations)
+{
+  if (Column() != 0)
+    return;
+
+  const Handle(TreeModel_ItemProperties)& anItemProperties = Properties();
+  if (anItemProperties)
+  {
+    anItemProperties->Presentations (thePresentations);
+  }
+}
+
 // =======================================================================
 // function :  currentItem
 // purpose :
index 99f7d210683d21c666ac7d8e94327e6c52df76f2..752da3922ad4d955c0e59541c34bb95f24bdb782 100644 (file)
@@ -149,6 +149,7 @@ public:
   //! Returns the item properties
   const Handle(TreeModel_ItemProperties)& Properties() const { return myProperties; }
 
+  Standard_EXPORT virtual void Presentations (NCollection_List<Handle(Standard_Transient)>& thePresentations);
 protected:
 
   //! \param theParent the parent item
index 135170ea1b674b303003cb39e74c5c139df3d255..9babba37ff720d2acfa48d9f3616c88cb695ca81 100644 (file)
@@ -156,7 +156,7 @@ void VInspector_ItemPresentableObject::Init()
     }
     std::sort (aListOfIOSorted.begin(), aListOfIOSorted.end());
 
-    int aCurrentIndex = 0;
+    int aCurrentIndex = 1; /* Properties item of context*/
     for (std::vector<Handle(AIS_InteractiveObject)>::const_iterator anIOIt = aListOfIOSorted.begin(); anIOIt != aListOfIOSorted.end(); anIOIt++, aCurrentIndex++)
     {
       if (aCurrentIndex != aRowId)
@@ -228,9 +228,10 @@ QString VInspector_ItemPresentableObject::PointerInfo() const
 // =======================================================================
 void VInspector_ItemPresentableObject::Presentations (NCollection_List<Handle(Standard_Transient)>& thePresentations)
 {
+  TreeModel_ItemBase::Presentations (thePresentations); 
+
   if (Column() != 0)
     return;
-
   thePresentations.Append (GetInteractiveObject());
 }
 
index 22ed9e50f63d4decff4ffec8054315ba17d1f20a..1991dbe6316682cea6ac2faf7f2c56e06ef80d0b 100644 (file)
@@ -22,7 +22,6 @@
 
 #include <inspector/TreeModel_ColumnType.hxx>
 #include <inspector/TreeModel_ContextMenu.hxx>
-#include <inspector/TreeModel_ItemProperties.hxx>
 #include <inspector/TreeModel_Tools.hxx>
 
 #include <inspector/ViewControl_MessageDialog.hxx>
@@ -392,7 +391,10 @@ void VInspector_Window::SelectedShapes (NCollection_List<Handle(Standard_Transie
     TreeModel_ItemBasePtr anItem = *anItemIt;
     VInspector_ItemBasePtr aVItem = itemDynamicCast<VInspector_ItemBase>(anItem);
     if (!aVItem /*|| aVItem->Row() == 0*/)
+    {
+      anItem->Presentations (theSelPresentations);
       continue;
+    }
 
     TopoDS_Shape aShape = aVItem->GetPresentationShape();
     if (aShape.IsNull())
@@ -595,15 +597,11 @@ void VInspector_Window::onTreeViewSelectionChanged (const QItemSelection&,
     if (!anItemBase)
       continue;
 
-    const Handle(TreeModel_ItemProperties)& anItemProperties = anItemBase->Properties();
-    if (anItemProperties)
-    {
-      anItemProperties->Presentations (aSelPresentations);
-    }
+    anItemBase->Presentations (aSelPresentations);
   }
 
   SelectedShapes (aSelPresentations);
-  displayer()->DisplayPreview()->UpdatePreview (View_DisplayActionType_DisplayId, aSelPresentations, myViewWindow->ViewWidget()->DisplayMode());
+  displayer()->UpdatePreview (View_DisplayActionType_DisplayId, aSelPresentations);
 }
 
 // =======================================================================
index 7e6c55123b0e14b41dfce2f91821c18c33393287..e129416f33ba0e9c1845de546d8985c5f3b1e57e 100644 (file)
@@ -79,12 +79,13 @@ void View_DisplayPreview::SetContext (const Handle(AIS_InteractiveContext)& theC
 // purpose :
 // =======================================================================
 void View_DisplayPreview::UpdatePreview (const View_DisplayActionType,
-                                         const NCollection_List<Handle(Standard_Transient)>& thePresentations,
-                                         int theDisplayMode)
+                                         const NCollection_List<Handle(Standard_Transient)>& thePresentations)
 {
   if (myContext.IsNull())
     return;
 
+  int aPreviewDisplayMode = AIS_Shaded;
+
   // clear previous previews
   for (NCollection_List<Handle(AIS_InteractiveObject)>::Iterator anIterator (myPreviewReadyPresentations); anIterator.More(); anIterator.Next())
   {
@@ -115,7 +116,7 @@ void View_DisplayPreview::UpdatePreview (const View_DisplayActionType,
     Handle(AIS_InteractiveObject) aPrs = Handle(AIS_InteractiveObject)::DownCast (anIterator.Value());
     if (!aPrs.IsNull() && aPrs->GetContext().IsNull()/*is not displayed in another context*/)
     {
-      myContext->Display (aPrs, theDisplayMode, -1/*does not participate in selection*/, Standard_True);
+      myContext->Display (aPrs, aPreviewDisplayMode, -1/*does not participate in selection*/, Standard_True);
       enableGlobalClipping(aPrs, false);
       myPreviewReadyPresentations.Append (aPrs);
     }
@@ -128,7 +129,7 @@ void View_DisplayPreview::UpdatePreview (const View_DisplayActionType,
     myPreviewPresentation->Attributes()->SetPointAspect (new Prs3d_PointAspect (Aspect_TOM_O_PLUS, aColor, 3.0));
     myPreviewPresentation->SetAttributes (myPreviewParameters->GetDrawer());
 
-    myContext->Display (myPreviewPresentation, theDisplayMode, -1/*does not participate in selection*/, Standard_True);
+    myContext->Display (myPreviewPresentation, aPreviewDisplayMode, -1/*does not participate in selection*/, Standard_True);
     enableGlobalClipping(myPreviewPresentation, false);
   }
   else
@@ -140,28 +141,3 @@ void View_DisplayPreview::UpdatePreview (const View_DisplayActionType,
     }
   }
 }
-
-// =======================================================================
-// function : SetDisplayMode
-// purpose :
-// =======================================================================
-void View_DisplayPreview::SetDisplayMode (const int theDisplayMode, const bool theToUpdateViewer)
-{
-  if (myContext.IsNull())
-    return;
-
-  if (!myPreviewPresentation.IsNull())
-  {
-     if (myContext == myPreviewPresentation->GetContext())
-       myContext->SetDisplayMode (myPreviewPresentation, theDisplayMode, Standard_False);
-  }
-
-  for (NCollection_List<Handle(AIS_InteractiveObject)>::Iterator aPreviewIt (myPreviewReadyPresentations); aPreviewIt.More(); aPreviewIt.Next())
-  {
-     if (myContext == aPreviewIt.Value()->GetContext())
-       myContext->SetDisplayMode (aPreviewIt.Value(), theDisplayMode, Standard_False);
-  }
-
-  if (theToUpdateViewer)
-    myContext->UpdateCurrentViewer();
-}
index 530bfea2480aace7089051cf4de154fc51f76d47..550e681289a059c3aef94efd6ee7e0e9557eb35e 100644 (file)
@@ -53,12 +53,7 @@ public:
 
   //! Updates visibility of the presentations for the display type
   Standard_EXPORT void UpdatePreview (const View_DisplayActionType theType,
-                                      const NCollection_List<Handle(Standard_Transient)>& thePresentations,
-                                      int theDisplayMode);
-
-  //! Sets display mode for all displayed presentations
-  Standard_EXPORT void SetDisplayMode (const int theDisplayMode,
-                                       const bool theToUpdateViewer = true);
+                                      const NCollection_List<Handle(Standard_Transient)>& thePresentations);
 
   //! Returns true if preview presentation is shown
   Standard_Boolean HasPreview() const { return !myPreviewPresentation.IsNull(); }
index 9d36606c96b83d9dac7045d87de66508b60145d5..72c1c28ec738a30821a818d0bddb5a6d597d00e4 100644 (file)
@@ -34,7 +34,7 @@
 // purpose :
 // =======================================================================
 View_Displayer::View_Displayer()
-: myIsKeepPresentations (false), myFitAllActive (false), myDisplayMode (-1)
+: myIsKeepPresentations (false), myFitAllActive (false), myDisplayMode (0)
 {
   myDisplayPreview = new View_DisplayPreview();
 }
@@ -79,8 +79,6 @@ void View_Displayer::SetDisplayMode (const int theDisplayMode,
   for (AIS_ListIteratorOfListOfInteractive aDisplayedIt (aDisplayed); aDisplayedIt.More(); aDisplayedIt.Next())
     GetContext()->SetDisplayMode (aDisplayedIt.Value(), theDisplayMode, Standard_False);
 
-  myDisplayPreview->SetDisplayMode (theDisplayMode, Standard_False);
-
   if (theToUpdateViewer)
     UpdateViewer();
 }
@@ -270,7 +268,7 @@ bool View_Displayer::IsVisible (const TopoDS_Shape& theShape, const View_Present
 void View_Displayer::UpdatePreview (const View_DisplayActionType theType,
                                     const NCollection_List<Handle(Standard_Transient)>& thePresentations)
 {
-  myDisplayPreview->UpdatePreview (theType, thePresentations, myDisplayMode);
+  myDisplayPreview->UpdatePreview (theType, thePresentations);
   if (!myIsKeepPresentations || myFitAllActive)
     fitAllView();
 }
index 8cc48d06b1f4885f7192323cea3c2eb705d0f003..f6375e5658fd6c4b060076fb908eb82a92e0de3b 100644 (file)
@@ -28,6 +28,7 @@ View_PreviewParameters::View_PreviewParameters()
   myDrawer = new Prs3d_Drawer();
 
   Quantity_Color aColor(Quantity_NOC_TOMATO);
+  Standard_ShortReal aTransparency = 0.8;
 
   // point parameters
   myDrawer->SetPointAspect (new Prs3d_PointAspect (Aspect_TOM_O_PLUS, aColor, 3.0));
@@ -41,6 +42,10 @@ View_PreviewParameters::View_PreviewParameters()
   myDrawer->ShadingAspect()->SetColor (aColor);
   myDrawer->ShadingAspect()->SetMaterial (aShadingMaterial);
 
+  myDrawer->ShadingAspect()->Aspect()->ChangeFrontMaterial().SetTransparency (aTransparency);
+  myDrawer->ShadingAspect()->Aspect()->ChangeBackMaterial() .SetTransparency (aTransparency);
+  myDrawer->SetTransparency (aTransparency);
+
   // common parameters
   myDrawer->SetZLayer (Graphic3d_ZLayerId_Topmost);
 }