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;
|
||||
|
||||
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)));
|
||||
myScaleOfMarker = (resMgr->integerValue("Geometry", "marker_scale", 1)-(int)GEOM::MS_10)*0.5 + 1.0;
|
||||
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;
|
||||
// This color is used for shape displaying. If it is equal -1 then
|
||||
// default color is used.
|
||||
myTexture = "";
|
||||
|
||||
myNbIsos = -1;
|
||||
myWidth = -1;
|
||||
myTransparency = -1;
|
||||
myType = -1;
|
||||
myIsosColor = -1;
|
||||
myIsosWidth = -1;
|
||||
|
||||
// This parameter is used for activisation/deactivisation (selection) of objects to be displayed
|
||||
myToActivate = true;
|
||||
// This parameter is used for activisation/deactivisation of objects to be displayed
|
||||
|
||||
// Activate parallel vizualisation only for testing purpose
|
||||
// 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();
|
||||
Handle(Prs3d_IsoAspect) uIsoAspect = AISShape->Attributes()->UIsoAspect();
|
||||
Handle(Prs3d_IsoAspect) vIsoAspect = AISShape->Attributes()->VIsoAspect();
|
||||
uIsoAspect->SetColor( isosColor );
|
||||
uIsoAspect->SetWidth( isosWidth );
|
||||
uIsoAspect->SetNumber( uIsos );
|
||||
vIsoAspect->SetColor( isosColor );
|
||||
vIsoAspect->SetWidth( isosWidth );
|
||||
vIsoAspect->SetNumber( vIsos );
|
||||
|
||||
if ( HasIsosColor() ) {
|
||||
uIsoAspect->SetColor( (Quantity_NameOfColor)GetIsosColor() );
|
||||
vIsoAspect->SetColor( (Quantity_NameOfColor)GetIsosColor() );
|
||||
}
|
||||
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()->SetVIsoAspect( vIsoAspect );
|
||||
|
||||
@ -1035,16 +1056,25 @@ void GEOM_Displayer::updateActorProperties( GEOM_Actor* actor, bool create )
|
||||
|
||||
// - set number of iso-lines
|
||||
int nbIsos[2]= { 1, 1 };
|
||||
QStringList isos = propMap.value( GEOM::propertyName( GEOM::NbIsos ) ).toString().split( GEOM::subSectionSeparator() );
|
||||
nbIsos[0] = isos[0].toInt();
|
||||
nbIsos[1] = isos[1].toInt();
|
||||
if ( HasNbIsos() ) {
|
||||
nbIsos[0] = GetNbIsos();
|
||||
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 );
|
||||
|
||||
// - 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
|
||||
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() );
|
||||
|
||||
// set colors
|
||||
@ -2022,15 +2052,9 @@ void GEOM_Displayer::UnsetColor()
|
||||
//=================================================================
|
||||
double GEOM_Displayer::SetTransparency( const double transparency )
|
||||
{
|
||||
double aPrevTransparency = myTransparency;
|
||||
if ( transparency < 0 ) {
|
||||
UnsetTransparency();
|
||||
}
|
||||
else {
|
||||
myTransparency = transparency;
|
||||
myHasTransparency = true;
|
||||
}
|
||||
return aPrevTransparency;
|
||||
double prevTransparency = myTransparency;
|
||||
myTransparency = transparency;
|
||||
return prevTransparency;
|
||||
}
|
||||
|
||||
//=================================================================
|
||||
@ -2052,7 +2076,7 @@ double GEOM_Displayer::GetTransparency() 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 aPrevTransparency = myTransparency;
|
||||
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||
myTransparency = resMgr->integerValue("Geometry", "transparency", 0) / 100.;
|
||||
myHasTransparency = false;
|
||||
return aPrevTransparency;
|
||||
return SetTransparency( -1 );
|
||||
}
|
||||
|
||||
|
||||
//=================================================================
|
||||
/*!
|
||||
* 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 )
|
||||
{
|
||||
if(texureFileName!="")
|
||||
{
|
||||
myTexture = texureFileName;
|
||||
}
|
||||
myTexture = texureFileName;
|
||||
}
|
||||
|
||||
bool GEOM_Displayer::HasTexture() const
|
||||
@ -2122,7 +2136,6 @@ void GEOM_Displayer::UnsetWidth()
|
||||
myWidth = -1;
|
||||
}
|
||||
|
||||
|
||||
int GEOM_Displayer::GetIsosWidth() const
|
||||
{
|
||||
return myIsosWidth;
|
||||
@ -2138,6 +2151,49 @@ bool GEOM_Displayer::HasIsosWidth() const
|
||||
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 );
|
||||
}
|
||||
|
||||
//=================================================================
|
||||
/*!
|
||||
|
@ -163,6 +163,19 @@ public:
|
||||
int GetIsosWidth () 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. */
|
||||
int SetDisplayMode( const int );
|
||||
int GetDisplayMode() const;
|
||||
@ -289,13 +302,14 @@ protected:
|
||||
int myColor;
|
||||
double myWidth;
|
||||
int myIsosWidth;
|
||||
int myNbIsos;
|
||||
int myIsosColor;
|
||||
bool myToActivate;
|
||||
int myDisplayMode;
|
||||
bool myHasDisplayMode;
|
||||
Aspect_TypeOfMarker myTypeOfMarker;
|
||||
double myScaleOfMarker;
|
||||
double myTransparency;
|
||||
bool myHasTransparency;
|
||||
|
||||
private:
|
||||
SalomeApp_Application* myApp;
|
||||
|
@ -354,8 +354,13 @@ bool RepairGUI_FreeFacesDlg::execute( ObjectList& objects )
|
||||
aFace = anIndices.FindKey( aFaceLst[i] );
|
||||
try {
|
||||
getDisplayer()->SetColor( Quantity_NOC_RED );
|
||||
getDisplayer()->SetToActivate( false );
|
||||
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;
|
||||
if ( aPrs )
|
||||
displayPreview( aPrs, true );
|
||||
|
Loading…
Reference in New Issue
Block a user