mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-04 13:13:25 +03:00
0029674: Improvements in Inspector tool
- preferences for dock windows geometry, tree view columns and current view projection; - ViewControl package for common functionality between plugins; - processing Location and Orientation for external TopoDS_Shape object - 'F5' key to update content of each plugin - visibility column in tree view (used now only in ShapeView) - properties child item for context (presents tree of current Filters of context)
This commit is contained in:
@@ -22,14 +22,6 @@ IMPLEMENT_STANDARD_RTTIEXT (TInspectorAPI_PluginParameters, Standard_Transient)
|
||||
IMPLEMENT_STANDARD_RTTIEXT (TInspectorAPI_PluginParameters, Standard_Transient)
|
||||
#endif
|
||||
|
||||
// =======================================================================
|
||||
// function : Constructor
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
TInspectorAPI_PluginParameters::TInspectorAPI_PluginParameters()
|
||||
{
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : SetParameters
|
||||
// purpose :
|
||||
@@ -51,8 +43,8 @@ void TInspectorAPI_PluginParameters::SetParameters (const TCollection_AsciiStrin
|
||||
void TInspectorAPI_PluginParameters::AddFileName (const TCollection_AsciiString& thePluginName,
|
||||
const TCollection_AsciiString& theFileName)
|
||||
{
|
||||
if (myFileNames.IsBound(thePluginName))
|
||||
myFileNames.ChangeFind(thePluginName).Append (theFileName);
|
||||
if (myFileNames.IsBound (thePluginName))
|
||||
myFileNames.ChangeFind (thePluginName).Append (theFileName);
|
||||
else
|
||||
{
|
||||
NCollection_List<TCollection_AsciiString> aNames;
|
||||
@@ -103,7 +95,7 @@ void TInspectorAPI_PluginParameters::SetSelected (const TCollection_AsciiString&
|
||||
// =======================================================================
|
||||
bool TInspectorAPI_PluginParameters::FindParameters (const TCollection_AsciiString& thePluginName)
|
||||
{
|
||||
return myParameters.IsBound(thePluginName);
|
||||
return myParameters.IsBound (thePluginName);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
@@ -122,7 +114,7 @@ const NCollection_List<Handle(Standard_Transient)>& TInspectorAPI_PluginParamete
|
||||
// =======================================================================
|
||||
bool TInspectorAPI_PluginParameters::FindFileNames (const TCollection_AsciiString& thePluginName)
|
||||
{
|
||||
return myFileNames.IsBound(thePluginName);
|
||||
return myFileNames.IsBound (thePluginName);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
@@ -141,7 +133,7 @@ const NCollection_List<TCollection_AsciiString>& TInspectorAPI_PluginParameters:
|
||||
// =======================================================================
|
||||
bool TInspectorAPI_PluginParameters::FindSelectedNames (const TCollection_AsciiString& thePluginName)
|
||||
{
|
||||
return mySelectedItemNames.IsBound(thePluginName);
|
||||
return mySelectedItemNames.IsBound (thePluginName);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
@@ -163,3 +155,131 @@ Standard_Boolean TInspectorAPI_PluginParameters::GetSelectedObjects (const TColl
|
||||
{
|
||||
return mySelectedObjects.Find (thePluginName, theObjects);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : toString
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
TCollection_AsciiString toString (const TopLoc_Location& theLocation)
|
||||
{
|
||||
TCollection_AsciiString anInfo;
|
||||
gp_Trsf aTrsf = theLocation.Transformation();
|
||||
for (int aRowId = 1; aRowId <= 3; aRowId++)
|
||||
{
|
||||
if (!anInfo.IsEmpty())
|
||||
anInfo += " ";
|
||||
for (int aColumnId = 1; aColumnId <= 4; aColumnId++)
|
||||
{
|
||||
if (aColumnId > 1)
|
||||
anInfo += ",";
|
||||
anInfo += TCollection_AsciiString (aTrsf.Value (aRowId, aColumnId));
|
||||
}
|
||||
}
|
||||
return anInfo;
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : ParametersToString
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
TCollection_AsciiString TInspectorAPI_PluginParameters::ParametersToString (const TopoDS_Shape& theShape)
|
||||
{
|
||||
const TopLoc_Location& aLocation = theShape.Location();
|
||||
TCollection_AsciiString aLocationStr = toString (aLocation);
|
||||
|
||||
TopAbs_Orientation anOrientation = theShape.Orientation();
|
||||
Standard_SStream aSStream;
|
||||
TopAbs::Print (anOrientation, aSStream);
|
||||
return TCollection_AsciiString (aSStream.str().c_str()) + ":" + aLocationStr;
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : fromString
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
TopLoc_Location fromString (const TCollection_AsciiString& theValue)
|
||||
{
|
||||
NCollection_Mat4<Standard_Real> aValues;
|
||||
|
||||
TCollection_AsciiString aCurrentString = theValue;
|
||||
Standard_Integer aPosition = aCurrentString.Search (" ");
|
||||
if (aPosition < 0)
|
||||
return TopLoc_Location();
|
||||
TCollection_AsciiString aTailString = aCurrentString.Split (aPosition);
|
||||
Standard_Integer aRow = 0;
|
||||
while (!aCurrentString.IsEmpty())
|
||||
{
|
||||
TCollection_AsciiString aValueString = aCurrentString;
|
||||
aPosition = aValueString.Search (",");
|
||||
if (aPosition < 0 )
|
||||
break;
|
||||
aCurrentString = aValueString.Split (aPosition);
|
||||
Standard_Integer aColumn = 0;
|
||||
while (!aValueString.IsEmpty())
|
||||
{
|
||||
aPosition = aCurrentString.Search (" ");
|
||||
if (aPosition > 0)
|
||||
aValueString.Split (aValueString.Length() - 1);
|
||||
|
||||
aValues.SetValue (aRow, aColumn, aValueString.RealValue());
|
||||
aColumn++;
|
||||
if (aCurrentString.IsEmpty())
|
||||
break;
|
||||
aValueString = aCurrentString;
|
||||
aPosition = aValueString.Search (",");
|
||||
if (aPosition < 0 )
|
||||
{
|
||||
aValueString = aCurrentString;
|
||||
aCurrentString = TCollection_AsciiString();
|
||||
}
|
||||
else
|
||||
aCurrentString = aValueString.Split (aPosition);
|
||||
}
|
||||
if (aTailString.IsEmpty())
|
||||
break;
|
||||
aCurrentString = aTailString;
|
||||
aPosition = aCurrentString.Search (" ");
|
||||
if (aPosition < 0 )
|
||||
{
|
||||
aCurrentString = aTailString;
|
||||
aTailString = TCollection_AsciiString();
|
||||
}
|
||||
else
|
||||
aTailString = aCurrentString.Split (aPosition);
|
||||
aRow++;
|
||||
}
|
||||
|
||||
//if (aValues.Rows() != 3 || aValues.Cols() != 4)
|
||||
// return TopLoc_Location();
|
||||
|
||||
gp_Trsf aTrsf;
|
||||
aTrsf.SetValues (aValues.GetValue (0, 0), aValues.GetValue (0, 1), aValues.GetValue (0, 2), aValues.GetValue (0, 3),
|
||||
aValues.GetValue (1, 0), aValues.GetValue (1, 1), aValues.GetValue (1, 2), aValues.GetValue (1, 3),
|
||||
aValues.GetValue (2, 0), aValues.GetValue (2, 1), aValues.GetValue (2, 2), aValues.GetValue (2, 3));
|
||||
return TopLoc_Location (aTrsf);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : ParametersToShape
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void TInspectorAPI_PluginParameters::ParametersToShape (const TCollection_AsciiString& theValue,
|
||||
TopoDS_Shape& theShape)
|
||||
{
|
||||
int aSeparatorPos = theValue.Search (":");
|
||||
TCollection_AsciiString anOrientationStr = theValue;
|
||||
TCollection_AsciiString aLocationStr = anOrientationStr.Split (aSeparatorPos);
|
||||
// orientation
|
||||
if (anOrientationStr.Length() < 2)
|
||||
return;
|
||||
anOrientationStr.Split (anOrientationStr.Length() - 1);
|
||||
|
||||
TopAbs_Orientation anOrientation;
|
||||
if (!TopAbs::ShapeOrientationFromString (anOrientationStr.ToCString(), anOrientation))
|
||||
return;
|
||||
// location
|
||||
TopLoc_Location aLocation = fromString (aLocationStr);
|
||||
|
||||
theShape.Location (aLocation);
|
||||
theShape.Orientation (anOrientation);
|
||||
}
|
||||
|
Reference in New Issue
Block a user