mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-26 17:30:35 +05:00
0052555: TC7.5.0: regression of free faces visualization
This commit is contained in:
parent
e20cec221f
commit
696752954d
@ -473,25 +473,24 @@ GEOM_Displayer::GEOM_Displayer( SalomeApp_Study* st )
|
|||||||
myHasDisplayMode = false;
|
myHasDisplayMode = false;
|
||||||
|
|
||||||
int aType = resMgr->integerValue("Geometry", "type_of_marker", (int)Aspect_TOM_PLUS);
|
int aType = resMgr->integerValue("Geometry", "type_of_marker", (int)Aspect_TOM_PLUS);
|
||||||
myWidth = resMgr->integerValue("Geometry", "edge_width", -1);
|
|
||||||
myIsosWidth = resMgr->integerValue("Geometry", "isolines_width", -1);
|
|
||||||
|
|
||||||
myTransparency = resMgr->integerValue("Geometry", "transparency", 0) / 100.;
|
|
||||||
myHasTransparency = false;
|
|
||||||
|
|
||||||
myTypeOfMarker = (Aspect_TypeOfMarker)(std::min((int)Aspect_TOM_RING3, std::max((int)Aspect_TOM_POINT, aType)));
|
myTypeOfMarker = (Aspect_TypeOfMarker)(std::min((int)Aspect_TOM_RING3, std::max((int)Aspect_TOM_POINT, aType)));
|
||||||
myScaleOfMarker = (resMgr->integerValue("Geometry", "marker_scale", 1)-(int)GEOM::MS_10)*0.5 + 1.0;
|
myScaleOfMarker = (resMgr->integerValue("Geometry", "marker_scale", 1)-(int)GEOM::MS_10)*0.5 + 1.0;
|
||||||
myScaleOfMarker = std::min(7.0, std::max(1., myScaleOfMarker));
|
myScaleOfMarker = std::min(7.0, std::max(1., myScaleOfMarker));
|
||||||
|
|
||||||
|
// Next properties provide a way to customize displaying of presentations;
|
||||||
|
// for instance, this is useful for preview
|
||||||
myColor = -1;
|
myColor = -1;
|
||||||
// This color is used for shape displaying. If it is equal -1 then
|
|
||||||
// default color is used.
|
|
||||||
myTexture = "";
|
myTexture = "";
|
||||||
|
myNbIsos = -1;
|
||||||
myWidth = -1;
|
myWidth = -1;
|
||||||
|
myTransparency = -1;
|
||||||
myType = -1;
|
myType = -1;
|
||||||
|
myIsosColor = -1;
|
||||||
|
myIsosWidth = -1;
|
||||||
|
|
||||||
|
// This parameter is used for activisation/deactivisation (selection) of objects to be displayed
|
||||||
myToActivate = true;
|
myToActivate = true;
|
||||||
// This parameter is used for activisation/deactivisation of objects to be displayed
|
|
||||||
|
|
||||||
// Activate parallel vizualisation only for testing purpose
|
// Activate parallel vizualisation only for testing purpose
|
||||||
// and if the corresponding env variable is set to 1
|
// and if the corresponding env variable is set to 1
|
||||||
@ -864,12 +863,34 @@ void GEOM_Displayer::updateShapeProperties( const Handle(GEOM_AISShape)& AISShap
|
|||||||
int isosWidth = propMap.value( GEOM::propertyName( GEOM::IsosWidth ) ).toInt();
|
int isosWidth = propMap.value( GEOM::propertyName( GEOM::IsosWidth ) ).toInt();
|
||||||
Handle(Prs3d_IsoAspect) uIsoAspect = AISShape->Attributes()->UIsoAspect();
|
Handle(Prs3d_IsoAspect) uIsoAspect = AISShape->Attributes()->UIsoAspect();
|
||||||
Handle(Prs3d_IsoAspect) vIsoAspect = AISShape->Attributes()->VIsoAspect();
|
Handle(Prs3d_IsoAspect) vIsoAspect = AISShape->Attributes()->VIsoAspect();
|
||||||
uIsoAspect->SetColor( isosColor );
|
|
||||||
uIsoAspect->SetWidth( isosWidth );
|
if ( HasIsosColor() ) {
|
||||||
uIsoAspect->SetNumber( uIsos );
|
uIsoAspect->SetColor( (Quantity_NameOfColor)GetIsosColor() );
|
||||||
vIsoAspect->SetColor( isosColor );
|
vIsoAspect->SetColor( (Quantity_NameOfColor)GetIsosColor() );
|
||||||
vIsoAspect->SetWidth( isosWidth );
|
}
|
||||||
vIsoAspect->SetNumber( vIsos );
|
else {
|
||||||
|
uIsoAspect->SetColor( isosColor );
|
||||||
|
vIsoAspect->SetColor( isosColor );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( HasIsosWidth() ) {
|
||||||
|
uIsoAspect->SetWidth( GetIsosWidth() );
|
||||||
|
vIsoAspect->SetWidth( GetIsosWidth() );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
uIsoAspect->SetWidth( isosWidth );
|
||||||
|
vIsoAspect->SetWidth( isosWidth );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( HasNbIsos() ) {
|
||||||
|
uIsoAspect->SetNumber( GetNbIsos() );
|
||||||
|
vIsoAspect->SetNumber( GetNbIsos() );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
uIsoAspect->SetNumber( uIsos );
|
||||||
|
vIsoAspect->SetNumber( vIsos );
|
||||||
|
}
|
||||||
|
|
||||||
AISShape->Attributes()->SetUIsoAspect( uIsoAspect );
|
AISShape->Attributes()->SetUIsoAspect( uIsoAspect );
|
||||||
AISShape->Attributes()->SetVIsoAspect( vIsoAspect );
|
AISShape->Attributes()->SetVIsoAspect( vIsoAspect );
|
||||||
|
|
||||||
@ -1035,16 +1056,25 @@ void GEOM_Displayer::updateActorProperties( GEOM_Actor* actor, bool create )
|
|||||||
|
|
||||||
// - set number of iso-lines
|
// - set number of iso-lines
|
||||||
int nbIsos[2]= { 1, 1 };
|
int nbIsos[2]= { 1, 1 };
|
||||||
QStringList isos = propMap.value( GEOM::propertyName( GEOM::NbIsos ) ).toString().split( GEOM::subSectionSeparator() );
|
if ( HasNbIsos() ) {
|
||||||
nbIsos[0] = isos[0].toInt();
|
nbIsos[0] = GetNbIsos();
|
||||||
nbIsos[1] = isos[1].toInt();
|
nbIsos[1] = GetNbIsos();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
QStringList isos = propMap.value( GEOM::propertyName( GEOM::NbIsos ) ).toString().split( GEOM::subSectionSeparator() );
|
||||||
|
nbIsos[0] = isos[0].toInt();
|
||||||
|
nbIsos[1] = isos[1].toInt();
|
||||||
|
}
|
||||||
actor->SetNbIsos( nbIsos );
|
actor->SetNbIsos( nbIsos );
|
||||||
|
|
||||||
// - set iso-lines width
|
// - set iso-lines width
|
||||||
actor->SetIsosWidth( propMap.value( GEOM::propertyName( GEOM::IsosWidth ) ).toInt() );
|
actor->SetIsosWidth( HasIsosWidth() ? GetIsosWidth() : propMap.value( GEOM::propertyName( GEOM::IsosWidth ) ).toInt() );
|
||||||
|
|
||||||
// - set iso-lines color
|
// - set iso-lines color
|
||||||
c = propMap.value( GEOM::propertyName( GEOM::IsosColor ) ).value<QColor>();
|
if ( HasIsosColor() )
|
||||||
|
c = SalomeApp_Tools::color( Quantity_Color((Quantity_NameOfColor)GetIsosColor()) );
|
||||||
|
else
|
||||||
|
c = propMap.value( GEOM::propertyName( GEOM::IsosColor ) ).value<QColor>();
|
||||||
actor->SetIsosColor( c.redF(), c.greenF(), c.blueF() );
|
actor->SetIsosColor( c.redF(), c.greenF(), c.blueF() );
|
||||||
|
|
||||||
// set colors
|
// set colors
|
||||||
@ -2022,15 +2052,9 @@ void GEOM_Displayer::UnsetColor()
|
|||||||
//=================================================================
|
//=================================================================
|
||||||
double GEOM_Displayer::SetTransparency( const double transparency )
|
double GEOM_Displayer::SetTransparency( const double transparency )
|
||||||
{
|
{
|
||||||
double aPrevTransparency = myTransparency;
|
double prevTransparency = myTransparency;
|
||||||
if ( transparency < 0 ) {
|
myTransparency = transparency;
|
||||||
UnsetTransparency();
|
return prevTransparency;
|
||||||
}
|
|
||||||
else {
|
|
||||||
myTransparency = transparency;
|
|
||||||
myHasTransparency = true;
|
|
||||||
}
|
|
||||||
return aPrevTransparency;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================
|
//=================================================================
|
||||||
@ -2052,7 +2076,7 @@ double GEOM_Displayer::GetTransparency() const
|
|||||||
//=================================================================
|
//=================================================================
|
||||||
bool GEOM_Displayer::HasTransparency() const
|
bool GEOM_Displayer::HasTransparency() const
|
||||||
{
|
{
|
||||||
return myHasTransparency;
|
return myTransparency >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================
|
//=================================================================
|
||||||
@ -2063,27 +2087,17 @@ bool GEOM_Displayer::HasTransparency() const
|
|||||||
//=================================================================
|
//=================================================================
|
||||||
double GEOM_Displayer::UnsetTransparency()
|
double GEOM_Displayer::UnsetTransparency()
|
||||||
{
|
{
|
||||||
double aPrevTransparency = myTransparency;
|
return SetTransparency( -1 );
|
||||||
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
|
||||||
myTransparency = resMgr->integerValue("Geometry", "transparency", 0) / 100.;
|
|
||||||
myHasTransparency = false;
|
|
||||||
return aPrevTransparency;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//=================================================================
|
//=================================================================
|
||||||
/*!
|
/*!
|
||||||
* GEOM_Displayer::SetTexture
|
* GEOM_Displayer::SetTexture
|
||||||
* Set color for shape displaying. If it is equal -1 then default color is used.
|
|
||||||
* Available values are from Quantity_NameOfColor enumeration
|
|
||||||
*/
|
*/
|
||||||
//=================================================================
|
//=================================================================
|
||||||
void GEOM_Displayer::SetTexture( const std::string& texureFileName )
|
void GEOM_Displayer::SetTexture( const std::string& texureFileName )
|
||||||
{
|
{
|
||||||
if(texureFileName!="")
|
myTexture = texureFileName;
|
||||||
{
|
|
||||||
myTexture = texureFileName;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GEOM_Displayer::HasTexture() const
|
bool GEOM_Displayer::HasTexture() const
|
||||||
@ -2122,7 +2136,6 @@ void GEOM_Displayer::UnsetWidth()
|
|||||||
myWidth = -1;
|
myWidth = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int GEOM_Displayer::GetIsosWidth() const
|
int GEOM_Displayer::GetIsosWidth() const
|
||||||
{
|
{
|
||||||
return myIsosWidth;
|
return myIsosWidth;
|
||||||
@ -2138,6 +2151,49 @@ bool GEOM_Displayer::HasIsosWidth() const
|
|||||||
return myIsosWidth != -1;
|
return myIsosWidth != -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int GEOM_Displayer::SetNbIsos( const int nbIsos )
|
||||||
|
{
|
||||||
|
int prevNbIsos = myNbIsos;
|
||||||
|
myNbIsos = nbIsos;
|
||||||
|
return prevNbIsos;
|
||||||
|
}
|
||||||
|
|
||||||
|
int GEOM_Displayer::UnsetNbIsos()
|
||||||
|
{
|
||||||
|
return SetNbIsos( -1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
int GEOM_Displayer::GetNbIsos() const
|
||||||
|
{
|
||||||
|
return myNbIsos;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GEOM_Displayer::HasNbIsos() const
|
||||||
|
{
|
||||||
|
return myNbIsos >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int GEOM_Displayer::SetIsosColor( const int color )
|
||||||
|
{
|
||||||
|
int prevColor = myIsosColor;
|
||||||
|
myIsosColor = color;
|
||||||
|
return prevColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
int GEOM_Displayer::GetIsosColor() const
|
||||||
|
{
|
||||||
|
return myIsosColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GEOM_Displayer::HasIsosColor() const
|
||||||
|
{
|
||||||
|
return myIsosColor != -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int GEOM_Displayer::UnsetIsosColor()
|
||||||
|
{
|
||||||
|
return SetIsosColor( -1 );
|
||||||
|
}
|
||||||
|
|
||||||
//=================================================================
|
//=================================================================
|
||||||
/*!
|
/*!
|
||||||
|
@ -162,7 +162,20 @@ public:
|
|||||||
void SetIsosWidth ( const int );
|
void SetIsosWidth ( const int );
|
||||||
int GetIsosWidth () const;
|
int GetIsosWidth () const;
|
||||||
bool HasIsosWidth () const;
|
bool HasIsosWidth () const;
|
||||||
|
|
||||||
|
/* Set nb iso-libes for displaying. Use -1 to set default values. */
|
||||||
|
int SetNbIsos( const int );
|
||||||
|
int UnsetNbIsos();
|
||||||
|
int GetNbIsos() const;
|
||||||
|
bool HasNbIsos() const;
|
||||||
|
|
||||||
|
/* Set color for iso-lines displaying. If it is equal -1 then default color is used.
|
||||||
|
Available values are from Quantity_NameOfColor enumeration */
|
||||||
|
int SetIsosColor ( const int );
|
||||||
|
int UnsetIsosColor();
|
||||||
|
int GetIsosColor () const;
|
||||||
|
bool HasIsosColor () const;
|
||||||
|
|
||||||
/* Set display mode shape displaying. If it is equal -1 then display mode is used. */
|
/* Set display mode shape displaying. If it is equal -1 then display mode is used. */
|
||||||
int SetDisplayMode( const int );
|
int SetDisplayMode( const int );
|
||||||
int GetDisplayMode() const;
|
int GetDisplayMode() const;
|
||||||
@ -289,13 +302,14 @@ protected:
|
|||||||
int myColor;
|
int myColor;
|
||||||
double myWidth;
|
double myWidth;
|
||||||
int myIsosWidth;
|
int myIsosWidth;
|
||||||
|
int myNbIsos;
|
||||||
|
int myIsosColor;
|
||||||
bool myToActivate;
|
bool myToActivate;
|
||||||
int myDisplayMode;
|
int myDisplayMode;
|
||||||
bool myHasDisplayMode;
|
bool myHasDisplayMode;
|
||||||
Aspect_TypeOfMarker myTypeOfMarker;
|
Aspect_TypeOfMarker myTypeOfMarker;
|
||||||
double myScaleOfMarker;
|
double myScaleOfMarker;
|
||||||
double myTransparency;
|
double myTransparency;
|
||||||
bool myHasTransparency;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SalomeApp_Application* myApp;
|
SalomeApp_Application* myApp;
|
||||||
|
@ -354,8 +354,13 @@ bool RepairGUI_FreeFacesDlg::execute( ObjectList& objects )
|
|||||||
aFace = anIndices.FindKey( aFaceLst[i] );
|
aFace = anIndices.FindKey( aFaceLst[i] );
|
||||||
try {
|
try {
|
||||||
getDisplayer()->SetColor( Quantity_NOC_RED );
|
getDisplayer()->SetColor( Quantity_NOC_RED );
|
||||||
getDisplayer()->SetToActivate( false );
|
|
||||||
getDisplayer()->SetTransparency( transparency );
|
getDisplayer()->SetTransparency( transparency );
|
||||||
|
getDisplayer()->SetWidth( 2 );
|
||||||
|
getDisplayer()->SetNbIsos( 1 );
|
||||||
|
getDisplayer()->SetIsosWidth( 1 );
|
||||||
|
getDisplayer()->SetIsosColor( Quantity_NOC_RED );
|
||||||
|
getDisplayer()->SetDisplayMode( 0 );
|
||||||
|
getDisplayer()->SetToActivate( false );
|
||||||
aPrs = !aFace.IsNull() ? getDisplayer()->BuildPrs( aFace ) : 0;
|
aPrs = !aFace.IsNull() ? getDisplayer()->BuildPrs( aFace ) : 0;
|
||||||
if ( aPrs )
|
if ( aPrs )
|
||||||
displayPreview( aPrs, true );
|
displayPreview( aPrs, true );
|
||||||
|
Loading…
Reference in New Issue
Block a user