+ switch ( aType ) {
+ case SHAPE_PROCESS:
+ {
+ theOperationName = "SHAPE_PROCESS";
+ AddParam( theParams, "Object", aCI.GetOriginal() );
+ Handle(TColStd_HArray1OfExtendedString) anOperators = aCI.GetOperators();
+ Handle(TColStd_HArray1OfExtendedString) aParams = aCI.GetParameters();
+ Handle(TColStd_HArray1OfExtendedString) aValues = aCI.GetValues();
+ for ( int i = anOperators->Lower(), nb = anOperators->Upper(); i <= nb; ++i )
+ {
+ const TCollection_ExtendedString& op = anOperators->Value(i);
+ AddParam( theParams, "Operation", op );
+ for ( int iP = aParams->Lower(), nbP = aParams->Upper(); iP <= nbP; ++iP )
+ {
+ const TCollection_ExtendedString& par = aParams->Value(i);
+ TCollection_AsciiString parAscii( par );
+ if ( par.Search( op ) == 1 && parAscii.Value( op.Length() + 1 ) == '.' )
+ {
+ GEOM_Param& p = AddParam( theParams, parAscii.ToCString() );
+ if ( iP <= aValues->Upper() )
+ p << aValues->Value( iP );
+ }
+ }
+ }
+ break;
+ }
+ case SUPPRESS_FACES:
+ theOperationName = "SUPPRESS_FACES";
+ AddParam( theParams, "Selected Shape", aCI.GetOriginal() );
+ AddParam( theParams, "Faces to remove", aCI.GetFaces() );
+ break;
+ case CLOSE_CONTOUR:
+ theOperationName = "CLOSE_CONTOUR";
+ AddParam( theParams, "Selected Shape", aCI.GetOriginal() );
+ AddParam( theParams, "Contour to close", aCI.GetWires() );
+ AddParam( theParams, "Close by common vertex", aCI.GetIsCommonVertex() );
+ break;
+ case REMOVE_INT_WIRES:
+ theOperationName = "SUPPRESS_INT_WIRES";
+ AddParam( theParams, "Selected face", aCI.GetOriginal() );
+ AddParam( theParams, "Wires to remove", aCI.GetWires(), "all" );
+ break;
+ case FILL_HOLES:
+ theOperationName = "SUPPERSS_HOLES";
+ AddParam( theParams, "Selected shape", aCI.GetOriginal() );
+ AddParam( theParams, "Wires to remove", aCI.GetWires(), "all" );
+ break;
+ case SEWING:
+ case SEWING_NON_MANIFOLD:
+ theOperationName = "SEWING";
+ AddParam( theParams, "Selected shapes", aCI.GetOriginalAndShapes() );
+ AddParam( theParams, "Allow Non Manifold", ( aType == SEWING_NON_MANIFOLD ));
+ AddParam( theParams, "Tolerance", aCI.GetTolerance() );
+ break;
+ case DIVIDE_EDGE:
+ theOperationName = "POINT_ON_EDGE";
+ if ( aCI.GetIndex() > 0 )
+ AddParam( theParams, "Edge", "#" ) << aCI.GetIndex() << " of " << aCI.GetOriginal();
+ else
+ AddParam( theParams, "Edge", aCI.GetOriginal() );
+ AddParam( theParams, "By parameter", aCI.GetIsByParameter() );
+ AddParam( theParams, "Value", aCI.GetDevideEdgeValue() );
+ break;
+ case DIVIDE_EDGE_BY_POINT:
+ theOperationName = "POINT_ON_EDGE";
+ if ( aCI.GetIndex() > 0 )
+ AddParam( theParams, "Edge", "#" ) << aCI.GetIndex() << " of " << aCI.GetOriginal();
+ else
+ AddParam( theParams, "Edge", aCI.GetOriginal() );
+ AddParam( theParams, "Points", aCI.GetShapes() );
+ break;
+ case CHANGE_ORIENTATION:
+ theOperationName = "CHANGE_ORIENTATION";
+ AddParam( theParams, "Selected shape", aCI.GetOriginal() );
+ break;
+ case LIMIT_TOLERANCE:
+ theOperationName = "LIMIT_TOLERANCE";
+ AddParam( theParams, "Selected shape", aCI.GetOriginal() );
+ AddParam( theParams, "Tolerance", aCI.GetTolerance() );
+ AddParam( theParams, "Type", aCI.GetType() );
+ break;
+ case FUSE_COLLINEAR_EDGES:
+ theOperationName = "FUSE_EDGES";
+ AddParam( theParams, "Wire", aCI.GetOriginal() );
+ AddParam( theParams, "Vertexes", aCI.GetShapes() );
+ break;
+ case REMOVE_INTERNAL_FACES:
+ theOperationName = "REMOVE_WEBS";
+ AddParam( theParams, "Selected shapes", aCI.GetOriginalAndShapes() );
+ break;
+ default:
+ return false;
+ }
+
+ return true;