]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
TMP
authordish <dmitrii.shvydkoi@opencascade.com>
Tue, 11 Jun 2024 14:47:58 +0000 (14:47 +0000)
committerdish <dmitrii.shvydkoi@opencascade.com>
Tue, 11 Jun 2024 14:47:58 +0000 (14:47 +0000)
src/GeomAPI/GeomAPI_AISObject.cpp
src/GeomAPI/GeomAPI_AISObject.h
src/Model/Model_Data.cpp
src/Model/Model_Data.h
src/Model/Model_Objects.cpp

index fba0ed2ff85ca17e1c3844a3e949605b9cd8956a..c4fe22c55900305870d6424797b94e0d6184b93f 100644 (file)
@@ -32,6 +32,7 @@
 #include <Quantity_NameOfColor.hxx>
 #include <BRepBndLib.hxx>
 
+#include <AIS_ColoredShape.hxx>
 #include <AIS_InteractiveObject.hxx>
 #include <AIS_InteractiveContext.hxx>
 #include <AIS_Shape.hxx>
@@ -359,6 +360,20 @@ bool GeomAPI_AISObject::setWidth(const double& theWidth)
   return isChanged;
 }
 
+bool GeomAPI_AISObject::setWidth(const std::shared_ptr<GeomAPI_Shape>& theSubShape, const double& theWidth)
+{
+  Handle(AIS_InteractiveObject) anAIS = impl<Handle(AIS_InteractiveObject)>();
+  if (anAIS.IsNull())
+    return false;
+
+  Handle(AIS_ColoredShape) aShape = Handle(AIS_ColoredShape)::DownCast(anAIS); // Why ColoredShape, instead of Shape ?
+  if (!aShape)
+    return false;
+
+  aShape->SetCustomWidth(theSubShape->impl<TopoDS_Shape>(), theWidth); // Why SetCustomWidth, instead of SetWidth ?
+  return true; // Why always true ? What if theWidth == width() ?
+}
+
 bool GeomAPI_AISObject::setColor(int theR, int theG, int theB)
 {
   Handle(AIS_InteractiveObject) anAIS = impl<Handle(AIS_InteractiveObject)>();
index 2812845b3952ca9d77cc73074a760d6a0634a66e..df3a179158eed523b5aa24b69f957f5b39e6e354 100644 (file)
@@ -167,6 +167,10 @@ class GeomAPI_AISObject : public GeomAPI_Interface
   GEOMAPI_EXPORT
   bool setWidth(const double& theWidth);
 
+  GEOMAPI_EXPORT
+  /// @brief Assigns edge thickness to theSubShape.
+  bool GeomAPI_AISObject::setWidth(const std::shared_ptr<GeomAPI_Shape>& theSubShape, const double& theWidth);
+
   /// \brief Checks if the object is empty
   GEOMAPI_EXPORT
   bool empty() const;
index 28237c24e897b1958993d31f2ca4156525d35dcd..9feeb22395c0be681ccf0c0029edd2ef5a023511 100644 (file)
@@ -121,6 +121,29 @@ std::wstring Model_Data::name()
   return L"";  // not defined
 }
 
+std::wstring Model_Data::name(std::shared_ptr<GeomAPI_Shape> theSubShape)
+{
+  std::wstring aShapeName = L"";
+  std::wstring aResultName = name();
+  if (aResultName == L"")
+    return aShapeName;
+
+  AttributeSelectionPtr aSelectionAttribute;
+  ResultBodyPtr aResBody = std::dynamic_pointer_cast<ModelAPI_ResultBody>(myObject);
+  if (aResBody.get())
+    aSelectionAttribute = aResBody->selection();
+  else
+  {
+    ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(myObject);
+    aSelectionAttribute = aPart->selection();
+  }
+  aSelectionAttribute->setValue(myObject, theSubShape);
+  aShapeName = aSelectionAttribute->namingName();
+  aSelectionAttribute->reset();
+
+  return aShapeName;
+}
+
 void Model_Data::setName(const std::wstring& theName)
 {
   bool isModified = false;
index 82703d70c0a54357bbf37cdcb4d114df1e5f83fc..241bf1d3b89908b8df93e993e3dc0215b840ff83 100644 (file)
@@ -47,6 +47,7 @@
 #include <map>
 #include <list>
 #include <string>
+#include <vector>
 #include <set>
 
 class ModelAPI_Attribute;
@@ -104,6 +105,8 @@ class Model_Data : public ModelAPI_Data
   Model_Data();
   /// Returns the name of the feature visible by the user in the object browser
   MODEL_EXPORT virtual std::wstring name();
+  /// Returns the name of the shape
+  MODEL_EXPORT virtual std::wstring name(std::shared_ptr<GeomAPI_Shape> theSubShape);
   /// Defines the name of the feature visible by the user in the object browser
   MODEL_EXPORT virtual void setName(const std::wstring& theName);
   /// Return \c true if the object has been renamed by the user
index bbce6b42dfcfb8f25f75dce9a0c99844850762ef..48a01961fb2d6def5c4a2f9511feb5ae29185b62 100644 (file)
@@ -797,7 +797,7 @@ void Model_Objects::setAttribute(const Handle(TDF_Attribute)& theAttribute,
     aResultLabel = resultLabel(theResult->data(), index(theResult));
   TDF_Label anAttributeLabel = subShapeLabel(aResultLabel, index(theResult, theShape)).FindChild(TAG_FEATURE_ARGUMENTS);
 
-  if (Standard_GUID::IsEqual(theAttribute->ID(), TDataStd_IntegerArray::GetID()))
+  if (theAttribute->ID() == TDataStd_IntegerArray::GetID())
   {
     Handle(TDataStd_IntegerArray) anColor;
     Handle(TDataStd_IntegerArray) anAttr =
@@ -811,7 +811,7 @@ void Model_Objects::setAttribute(const Handle(TDF_Attribute)& theAttribute,
     static const Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_UPDATED);
     ModelAPI_EventCreator::get()->sendUpdated(theResult, anEvent);
   }
-  else if (Standard_GUID::IsEqual(theAttribute->ID(), TDataStd_Integer::GetID())) {
+  else if (theAttribute->ID() == TDataStd_Integer::GetID()) {
     Handle(TDataStd_Integer) aThicknessAttr;
     Handle(TDataStd_Integer) anAttr = Handle(TDataStd_Integer)::DownCast(theAttribute);