meshfromstl - display MeshVS_Mesh object in a way consistent with vdisplay command
meshdel - deleted, vremove to be used instead
meshshowall - set empty maps of hidden IDs instead of null handles
meshhidesel - initialize the maps of hidden IDs to avoid exception
meshmat - add optional transparency argument and enable transparency in the viewer if not yet done
meshvectors - command for testing VectorPrsBuilder added
MeshVS: DRAW commands improving
Updating test cases due to previous changes
Small bug in MeshVS_ElementalColorPrsBuilder fixed
vselmode fix
Small correction of test cases for issue CR24961
aNbEdgePrimitives += aFaceNodes.Length();
}
- if (IsReflect) // add volumetric cell triangles
- {
- aNbVolmPrimitives += aFaceNodes.Length() - 2;
- }
+ aNbVolmPrimitives += aFaceNodes.Length() - 2;
}
}
}
TColStd_MapIteratorOfPackedMapOfInteger anIterN( anAllNodesMap );
for( ; anIterN.More(); anIterN.Next() )
if( myDataSource->GetGeom( anIterN.Key(), Standard_False, aCoords, NbNodes, aType ) &&
- !IsHiddenNode( anIterN.Key() ) )
+ IsSelectableNode( anIterN.Key() ) )
theSelection->Add( new Select3D_SensitivePoint( myWholeMeshOwner, gp_Pnt ( aCoords(1), aCoords(2), aCoords(3) ) ) );
}
break;
Handle(Select3D_SensitiveEntity) SE;
if(aSelfLocation.IsIdentity()) return;
for(Sel->Init();Sel->More();Sel->Next()){
- SE = *((Handle(Select3D_SensitiveEntity)*) &(Sel->Sensitive()));
+ SE = Handle(Select3D_SensitiveEntity)::DownCast(Sel->Sensitive());
if(!SE.IsNull()){
SE->UpdateLocation(aSelfLocation);
const Handle(SelectBasics_EntityOwner)& aEOwner = SE->OwnerId();
Handle(AIS_InteractiveContext) anAISContext = ViewerTest::GetAISContext();
if (anAISContext.IsNull())
{
- std::cerr << "Call vinit before!\n";
+ std::cerr << "Call vinit before!" << std::endl;
return 1;
}
if (theArgc != 3 && theArgc != 4)
{
std::cerr << "vselmode error : expects at least 2 arguments.\n"
- << "Type help "<< theArgv[0] <<" for more information.";
+ << "Type help "<< theArgv[0] <<" for more information." << std::endl;
return 1;
}
Handle(AIS_InteractiveObject) anIO = Handle(AIS_InteractiveObject)::DownCast (GetMapOfAIS().Find2 (aNameIO));
if (anIO.IsNull())
{
- std::cerr << "vselmode error : object name is used for non AIS viewer\n";
+ std::cerr << "vselmode error : object name is used for non AIS viewer" << std::endl;
return 1;
}
aTargetIOs.Append (anIO);
anAISContext->CloseLocalContext();
}
+ if (aSelectionMode == 0)
+ {
+ if (toTurnOn)
+ {
+ for (AIS_ListIteratorOfListOfInteractive aTargetIt (aTargetIOs); aTargetIt.More(); aTargetIt.Next())
+ {
+ const Handle(AIS_InteractiveObject)& anIO = aTargetIt.Value();
+ if (!InList (anAISContext, anIO, aSelectionMode))
+ {
+ anAISContext->Activate (anIO);
+ }
+ }
+ }
+ else
+ {
+ for (AIS_ListIteratorOfListOfInteractive aTargetIt (aTargetIOs); aTargetIt.More(); aTargetIt.Next())
+ {
+ const Handle(AIS_InteractiveObject)& anIO = aTargetIt.Value();
+ if (InList (anAISContext, anIO, aSelectionMode))
+ {
+ anAISContext->Deactivate (anIO);
+ }
+ }
+ }
+ }
+
if (aSelectionMode != 0 && toTurnOn) // Turn on specified mode
{
if (!anAISContext->HasOpenedContext())
class DataSource;
+ class DataSource3D;
+
class DrawableMesh;
class ElemNodesMap instantiates DataMap from TCollection
#include <MeshVS_DrawerAttribute.hxx>
#include <MeshVS_MeshEntityOwner.hxx>
#include <MeshVS_DataMapOfIntegerAsciiString.hxx>
+#include <MeshVS_NodalColorPrsBuilder.hxx>
+#include <MeshVS_ElementalColorPrsBuilder.hxx>
+#include <MeshVS_VectorPrsBuilder.hxx>
+#include <MeshVS_DeformedDataSource.hxx>
#include <XSDRAWSTLVRML_DataSource.hxx>
+#include <XSDRAWSTLVRML_DataSource3D.hxx>
#include <XSDRAWSTLVRML_DrawableMesh.hxx>
-#include <MeshVS_NodalColorPrsBuilder.hxx>
-#include <MeshVS_ElementalColorPrsBuilder.hxx>
+
#include <Quantity_NameOfColor.hxx>
#include <TColgp_SequenceOfXYZ.hxx>
#include <TColStd_HPackedMapOfInteger.hxx>
#include <stdio.h>
#endif
+extern Standard_Boolean VDisplayAISObject (const TCollection_AsciiString& theName,
+ const Handle(AIS_InteractiveObject)& theAISObj,
+ Standard_Boolean theReplaceIfExists = Standard_True);
+
static Standard_Integer writestl
(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
{
if (argc < 3 || argc > 5) {
- di << "Use: " << argv[0]
- << " shape file [ascii/binary (0/1) : 1 by default] [InParallel (0/1) : 0 by default]" << "\n";
+ di << "Use: " << argv[0]
+ << " shape file [ascii/binary (0/1) : 1 by default] [InParallel (0/1) : 0 by default]" << "\n";
} else {
TopoDS_Shape aShape = DBRep::Get(argv[1]);
Standard_Boolean isASCIIMode = Standard_False;
- Standard_Boolean isInParallel = Standard_False;
+ Standard_Boolean isInParallel = Standard_False;
if (argc > 3) {
isASCIIMode = (Draw::Atoi(argv[3]) == 0);
if (argc > 4)
{
if (argc<3) di << "wrong number of parameters" << "\n";
else {
- TopoDS_Shape shape ;
- StlAPI::Read(shape,argv[2]);
- DBRep::Set(argv[1],shape);
+ TopoDS_Shape aShape ;
+ StlAPI::Read(aShape,argv[2]);
+ DBRep::Set(argv[1],aShape);
}
return 0;
}
{
if (argc<3) di << "wrong number of parameters" << "\n";
else {
- TopoDS_Shape shape = DBRep::Get(argv[1]);
+ TopoDS_Shape aShape = DBRep::Get(argv[1]);
// VrmlAPI_Writer writer;
// writer.SetTransparencyToMaterial(writer.GetFrontMaterial(),0.0);
// Quantity_Color color;
// writer.SetRepresentation(VrmlAPI_ShadedRepresentation);
// writer.SetDeflection(0.01);
// writer.Write(shape, argv[2]);
- VrmlAPI::Write(shape, argv[2]);
+ VrmlAPI::Write(aShape, argv[2]);
}
return 0;
}
{
if (argc<3) di << "wrong number of parameters" << "\n";
else {
- TopoDS_Shape shape ;
- VrmlData_DataMapOfShapeAppearance ShapeAppMap;
+ TopoDS_Shape aShape ;
+ VrmlData_DataMapOfShapeAppearance aShapeAppMap;
//-----------------------------------------------------------
- filebuf fic;
- istream aStream (&fic);
+ filebuf aFic;
+ istream aStream (&aFic);
- if (fic.open(argv[2], ios::in)) {
+ if (aFic.open(argv[2], ios::in)) {
// Get path of the VRML file.
- OSD_Path path(argv[2]);
- TCollection_AsciiString vrmlDir(".");
- TCollection_AsciiString disk = path.Disk();
- TCollection_AsciiString trek = path.Trek();
- if (!trek.IsEmpty())
+ OSD_Path aPath(argv[2]);
+ TCollection_AsciiString aVrmlDir(".");
+ TCollection_AsciiString aDisk = aPath.Disk();
+ TCollection_AsciiString aTrek = aPath.Trek();
+ if (!aTrek.IsEmpty())
{
- if (!disk.IsEmpty())
- vrmlDir = disk;
+ if (!aDisk.IsEmpty())
+ aVrmlDir = aDisk;
else
- vrmlDir.Clear();
- trek.ChangeAll('|', '/');
- vrmlDir += trek;
+ aVrmlDir.Clear();
+ aTrek.ChangeAll('|', '/');
+ aVrmlDir += aTrek;
}
VrmlData_Scene aScene;
- aScene.SetVrmlDir (vrmlDir);
+ aScene.SetVrmlDir (aVrmlDir);
aScene << aStream;
const char * aStr = 0L;
switch (aScene.Status()) {
case VrmlData_StatusOK:
{
- shape = aScene.GetShape(ShapeAppMap);
+ aShape = aScene.GetShape(aShapeAppMap);
break;
}
case VrmlData_EmptyData: aStr = "EmptyData"; break;
<< aScene.GetLineError() << "\n";
}
else {
- DBRep::Set(argv[1],shape);
+ DBRep::Set(argv[1],aShape);
}
}
else {
di << "use: storevrml shape file defl type_of_conversion (0, 1, 2)" << "\n";
}
else {
- TopoDS_Shape shape = DBRep::Get(argv[1]);
- Standard_Real defl = Draw::Atof(argv[3]);
- Standard_Integer type = 1;
- if(argc > 4) type = Draw::Atoi(argv[4]);
- type = Max(0, type);
- type = Min(2, type);
-
- Standard_Boolean ExtFace = Standard_False;
- if(type == 0 || type == 2) ExtFace = Standard_True;
- Standard_Boolean ExtEdge = Standard_False;
- if(type == 1 || type == 2) ExtEdge = Standard_True;
+ TopoDS_Shape aShape = DBRep::Get(argv[1]);
+ Standard_Real aDefl = Draw::Atof(argv[3]);
+ Standard_Integer aType = 1;
+ if(argc > 4) aType = Draw::Atoi(argv[4]);
+ aType = Max(0, aType);
+ aType = Min(2, aType);
+
+ Standard_Boolean anExtFace = Standard_False;
+ if(aType == 0 || aType == 2) anExtFace = Standard_True;
+ Standard_Boolean anExtEdge = Standard_False;
+ if(aType == 1 || aType == 2) anExtEdge = Standard_True;
VrmlData_Scene aScene;
- VrmlData_ShapeConvert Conv(aScene);
- Conv.AddShape(shape);
- Conv.Convert(ExtFace, ExtEdge, defl);
+ VrmlData_ShapeConvert aConv(aScene);
+ aConv.AddShape(aShape);
+ aConv.Convert(anExtFace, anExtEdge, aDefl);
- filebuf foc;
- ostream outStream (&foc);
- if (foc.open (argv[2], ios::out))
+ filebuf aFoc;
+ ostream outStream (&aFoc);
+ if (aFoc.open (argv[2], ios::out))
outStream << aScene;
}
return 0;
static Standard_Integer createmesh
(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
{
-
if (argc<3)
{
+ di << "Wrong number of parameters" << "\n";
di << "Use: " << argv[0] << " <mesh name> <stl file>" << "\n";
- return 1;
+ return 0;
+ }
+
+ Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
+ if (aContext.IsNull())
+ {
+ di << "No active view. Please call 'vinit' first" << "\n";
+ return 0;
}
// Progress indicator
aMesh->SetDataSource( aDS );
aMesh->AddBuilder( new MeshVS_MeshPrsBuilder( aMesh.operator->() ), Standard_True );
- // Prepare triangle labels
- MeshVS_DataMapOfIntegerAsciiString aLabels;
- Standard_Integer anIndex = 1, aLen = aSTLMesh->Triangles().Length();
- for ( ; anIndex <= aLen; anIndex++ ){
- aLabels.Bind( anIndex, TCollection_AsciiString( anIndex ) );
- }
- Handle(MeshVS_TextPrsBuilder) aTextBuilder = new MeshVS_TextPrsBuilder( aMesh.operator->(), 20., Quantity_NOC_YELLOW );
- aTextBuilder->SetTexts( Standard_True, aLabels );
- aMesh->AddBuilder( aTextBuilder );
+ aMesh->GetDrawer()->SetColor( MeshVS_DA_EdgeColor, Quantity_NOC_YELLOW );
// Hide all nodes by default
Handle(TColStd_HPackedMapOfInteger) aNodes = new TColStd_HPackedMapOfInteger();
- aLen = aSTLMesh->Vertices().Length();
- for ( anIndex = 1; anIndex <= aLen; anIndex++ )
+ Standard_Integer aLen = aSTLMesh->Vertices().Length();
+ for ( Standard_Integer anIndex = 1; anIndex <= aLen; anIndex++ )
aNodes->ChangeMap().Add( anIndex );
aMesh->SetHiddenNodes( aNodes );
+ aMesh->SetSelectableNodes ( aNodes );
- Handle( AIS_InteractiveContext ) aContext = ViewerTest::GetAISContext();
+ VDisplayAISObject(argv[1], aMesh);
+ aContext->Deactivate( aMesh );
+
+ Draw::Set( argv[1], new XSDRAWSTLVRML_DrawableMesh( aMesh ) );
+ Handle( V3d_View ) aView = ViewerTest::CurrentView();
+ if ( !aView.IsNull() )
+ aView->FitAll();
- if ( aContext.IsNull() )
+ return 0;
+}
+//-----------------------------------------------------------------------------
+
+static Standard_Integer create3d
+(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
+{
+ if (argc<2)
{
- ViewerTest::ViewerInit();
- //To create a 3D view if it doesn't exist
- aContext = ViewerTest::GetAISContext();
- if( aContext.IsNull() )
- {
- di << "Cannot create 3D view" << "\n";
- return 0;
- }
+ di << "Wrong number of parameters" << "\n";
+ di << "Use: " << argv[0] << " <mesh name>" << "\n";
+ return 0;
}
- aContext->Display( aMesh );
+ Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
+ if (aContext.IsNull())
+ {
+ di << "No active view. Please call 'vinit' first" << "\n";
+ return 0;
+ }
+
+ Handle( XSDRAWSTLVRML_DataSource3D ) aDS = new XSDRAWSTLVRML_DataSource3D();
+ di << "Data source is created successful" << "\n";
+ Handle( MeshVS_Mesh ) aMesh = new MeshVS_Mesh();
+ di << "MeshVS_Mesh is created successful" << "\n";
+
+ aMesh->SetDataSource( aDS );
+ aMesh->AddBuilder( new MeshVS_MeshPrsBuilder( aMesh.operator->() ), Standard_True );
+
+ aMesh->GetDrawer()->SetColor( MeshVS_DA_EdgeColor, Quantity_NOC_YELLOW );
+
+ // Hide all nodes by default
+ Handle(TColStd_HPackedMapOfInteger) aNodes = new TColStd_HPackedMapOfInteger();
+ Standard_Integer aLen = aDS->GetAllNodes().Extent();
+ for ( Standard_Integer anIndex = 1; anIndex <= aLen; anIndex++ )
+ aNodes->ChangeMap().Add( anIndex );
+ aMesh->SetHiddenNodes( aNodes );
+ aMesh->SetSelectableNodes ( aNodes );
+
+ VDisplayAISObject(argv[1], aMesh);
aContext->Deactivate( aMesh );
Draw::Set( argv[1], new XSDRAWSTLVRML_DrawableMesh( aMesh ) );
- Handle( V3d_View ) V = ViewerTest::CurrentView();
- if ( !V.IsNull() )
- V->FitAll();
+ Handle( V3d_View ) aView = ViewerTest::CurrentView();
+ if ( !aView.IsNull() )
+ aView->FitAll();
return 0;
}
-//-----------------------------------------------------------------------------
-Handle( MeshVS_Mesh ) getMesh( const char* name, Draw_Interpretor& di)
+
+Handle( MeshVS_Mesh ) getMesh( const char* theName, Draw_Interpretor& di)
{
Handle( XSDRAWSTLVRML_DrawableMesh ) aDrawMesh =
- Handle( XSDRAWSTLVRML_DrawableMesh )::DownCast( Draw::Get( name ) );
+ Handle( XSDRAWSTLVRML_DrawableMesh )::DownCast( Draw::Get( theName ) );
if( aDrawMesh.IsNull() )
{
return aMesh;
}
}
-//-----------------------------------------------------------------------------
-static Standard_Integer meshdm
-(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
-{
- if (argc<3)
- di << "wrong number of parameters" << "\n";
- else
- {
- Handle( MeshVS_Mesh ) aMesh = getMesh( argv[1], di );
- if( !aMesh.IsNull() )
- {
- Standard_Integer DisplayMode = Draw::Atoi (argv[2]);
- Handle( AIS_InteractiveContext ) aContext = ViewerTest::GetAISContext();
-
- if( aContext.IsNull() )
- di << "The context is null" << "\n";
- else
- {
- Standard_Boolean HasLocal = aContext->HasOpenedContext();
- if( HasLocal )
- aContext->CloseLocalContext();
-
- aContext->SetDisplayMode( aMesh, DisplayMode );
- di << "Setting display mode: " << DisplayMode << "\n";
-
- if( HasLocal )
- aContext->OpenLocalContext();
- }
- }
- }
- return 0;
-}
-//-----------------------------------------------------------------------------
-static Standard_Integer meshsm
-(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
-{
- if (argc<3)
- di << "wrong number of parameters" << "\n";
- else
- {
- Handle( MeshVS_Mesh ) aMesh = getMesh( argv[1], di );
- if( !aMesh.IsNull() )
- {
- Standard_Integer SelMode = Draw::Atoi (argv[2]);
-
- Handle( AIS_InteractiveContext ) aContext = ViewerTest::GetAISContext();
-
- if( aContext.IsNull() )
- di << "The context is null" << "\n";
- else
- {
- if( !aContext->HasOpenedContext() )
- aContext->OpenLocalContext();
-
- aContext->Load( aMesh, -1 );
-
- if( SelMode==-1 )
- aContext->CloseAllContexts();
-
- else if( SelMode==0 )
- aContext->Activate( aMesh, 0 );
-
- else if( SelMode>0 )
- {
- aContext->Deactivate( aMesh, 0 );
-
- if( SelMode & 1 )
- aContext->Activate( aMesh, 1 );
- else
- aContext->Deactivate( aMesh, 1 );
-
- if( SelMode & 4 )
- aContext->Activate( aMesh, 4 );
- else
- aContext->Deactivate( aMesh, 4 );
-
- if( SelMode & 8 )
- aContext->Activate( aMesh, 8 );
- else
- aContext->Deactivate( aMesh, 8 );
- }
-
- di << "Setting selection mode: " << SelMode << "\n";
- }
- }
- }
- return 0;
-}
//-----------------------------------------------------------------------------
static Standard_Integer setcolor
-(Draw_Interpretor& di, Standard_Integer argc, const char** argv, Standard_Integer Param )
+(Draw_Interpretor& di, Standard_Integer argc, const char** argv, Standard_Integer theParam )
{
if (argc<5)
- di << "wrong number of parameters" << "\n";
+ di << "Wrong number of parameters" << "\n";
else
{
Handle( MeshVS_Mesh ) aMesh = getMesh( argv[1], di );
if( !aMesh.IsNull() )
{
- Standard_Real r = Draw::Atof (argv[2]);
- Standard_Real g = Draw::Atof (argv[3]);
- Standard_Real b = Draw::Atof (argv[4]);
- aMesh->GetDrawer()->SetColor( (MeshVS_DrawerAttribute)Param, Quantity_Color( r, g, b, Quantity_TOC_RGB ) );
+ Standard_Real aRed = Draw::Atof (argv[2]);
+ Standard_Real aGreen = Draw::Atof (argv[3]);
+ Standard_Real aBlue = Draw::Atof (argv[4]);
+ aMesh->GetDrawer()->SetColor( (MeshVS_DrawerAttribute)theParam,
+ Quantity_Color( aRed, aGreen, aBlue, Quantity_TOC_RGB ) );
Handle( AIS_InteractiveContext ) aContext = ViewerTest::GetAISContext();
}
//-----------------------------------------------------------------------------
static Standard_Integer meshcolor
-(Draw_Interpretor& interp, Standard_Integer argc, const char** argv )
+(Draw_Interpretor& theInterp, Standard_Integer argc, const char** argv )
{
- return setcolor( interp, argc, argv, MeshVS_DA_InteriorColor );
+ return setcolor( theInterp, argc, argv, MeshVS_DA_InteriorColor );
}
//-----------------------------------------------------------------------------
static Standard_Integer linecolor
-(Draw_Interpretor& interp, Standard_Integer argc, const char** argv )
+(Draw_Interpretor& theInterp, Standard_Integer argc, const char** argv )
{
- return setcolor( interp, argc, argv, MeshVS_DA_EdgeColor );
+ return setcolor( theInterp, argc, argv, MeshVS_DA_EdgeColor );
}
//-----------------------------------------------------------------------------
static Standard_Integer meshmat
(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
{
if (argc<3)
- di << "wrong number of parameters" << "\n";
+ di << "Wrong number of parameters" << "\n";
else
{
Handle( MeshVS_Mesh ) aMesh = getMesh( argv[1], di );
if( !aMesh.IsNull() )
{
- Standard_Integer mat = Draw::Atoi (argv[2]);
+ Standard_Integer aMaterial = Draw::Atoi (argv[2]);
Graphic3d_MaterialAspect aMatAsp =
- (Graphic3d_MaterialAspect)(Graphic3d_NameOfMaterial)mat;
+ (Graphic3d_MaterialAspect)(Graphic3d_NameOfMaterial)aMaterial;
+ if (argc == 4)
+ {
+ Standard_Real aTransparency = Draw::Atof(argv[3]);
+ aMatAsp.SetTransparency(aTransparency);
+ }
aMesh->GetDrawer()->SetMaterial( MeshVS_DA_FrontMaterial, aMatAsp );
aMesh->GetDrawer()->SetMaterial( MeshVS_DA_BackMaterial, aMatAsp );
(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
{
if (argc<3)
- di << "wrong number of parameters" << "\n";
+ di << "Wrong number of parameters" << "\n";
else
{
Handle( MeshVS_Mesh ) aMesh = getMesh( argv[1], di );
if( !aMesh.IsNull() )
{
- Standard_Real sh = Draw::Atof (argv[2]);
- aMesh->GetDrawer()->SetDouble( MeshVS_DA_ShrinkCoeff, sh );
+ Standard_Real aShrinkCoeff = Draw::Atof (argv[2]);
+ aMesh->GetDrawer()->SetDouble( MeshVS_DA_ShrinkCoeff, aShrinkCoeff );
Handle( AIS_InteractiveContext ) aContext = ViewerTest::GetAISContext();
(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
{
if (argc<2)
- di << "wrong number of parameters" << "\n";
+ di << "Wrong number of parameters" << "\n";
else
{
Handle( MeshVS_Mesh ) aMesh = getMesh( argv[1], di );
(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
{
if (argc<2)
- di << "wrong number of parameters" << "\n";
+ di << "Wrong number of parameters" << "\n";
else
{
Handle( MeshVS_Mesh ) aMesh = getMesh( argv[1], di );
static Standard_Integer hidesel
(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
{
- if (argc<1)
+ if (argc<2)
{
- di << "wrong number of parameters" << "\n";
+ di << "Wrong number of parameters" << "\n";
+ di << "Use: " << argv[0] << " <mesh name>" << "\n";
return 0;
}
-
Handle( AIS_InteractiveContext ) aContext = ViewerTest::GetAISContext();
Handle( MeshVS_Mesh ) aMesh = getMesh( argv[1], di );
if( aMesh.IsNull() )
else
{
Handle(TColStd_HPackedMapOfInteger) aHiddenNodes = aMesh->GetHiddenNodes();
+ if (aHiddenNodes.IsNull())
+ {
+ aHiddenNodes = new TColStd_HPackedMapOfInteger();
+ }
Handle(TColStd_HPackedMapOfInteger) aHiddenElements = aMesh->GetHiddenElems();
+ if (aHiddenElements.IsNull())
+ {
+ aHiddenElements = new TColStd_HPackedMapOfInteger();
+ }
for( aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected() )
{
Handle( MeshVS_MeshEntityOwner ) anOwner =
static Standard_Integer showonly
(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
{
- if (argc<1)
+ if (argc<2)
{
- di << "wrong number of parameters" << "\n";
+ di << "Wrong number of parameters" << "\n";
+ di << "Use: " << argv[0] << " <mesh name>" << "\n";
return 0;
}
Handle( MeshVS_MeshEntityOwner )::DownCast( aContext->SelectedOwner() );
if( !anOwner.IsNull() )
{
- if( anOwner->Type()==MeshVS_ET_Node )
+ if( anOwner->Type() == MeshVS_ET_Node )
{
aHiddenNodes->ChangeMap().Remove( anOwner->ID() );
}
static Standard_Integer showall
(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
{
- if (argc<1)
+ if (argc<2)
{
- di << "wrong number of parameters" << "\n";
+ di << "Wrong number of parameters" << "\n";
+ di << "Use: " << argv[0] << " <mesh name>" << "\n";
return 0;
}
di << "The context is null" << "\n";
else
{
- aMesh->SetHiddenNodes( 0 );
- aMesh->SetHiddenElems( 0 );
+ aMesh->SetHiddenNodes( new TColStd_HPackedMapOfInteger() );
+ aMesh->SetHiddenElems( new TColStd_HPackedMapOfInteger() );
aContext->Redisplay( aMesh );
}
return 0;
}
-//-----------------------------------------------------------------------------
-static Standard_Integer delmesh
-(Draw_Interpretor& di, Standard_Integer argc, const char** argv )
-{
- if (argc<2)
- {
- di << "wrong number of parameters" << "\n";
- return 0;
- }
-
- Handle( MeshVS_Mesh ) aMesh = getMesh( argv[1], di );
-
- if( aMesh.IsNull() )
- {
- di << "The mesh is invalid" << "\n";
- return 0;
- }
- else
- {
- Handle( AIS_InteractiveContext ) aContext = ViewerTest::GetAISContext();
- aContext->ClearSelected();
-
- if( aContext->HasOpenedContext() )
- aContext->CloseAllContexts();
-
- aContext->Remove( aMesh );
- aContext->SelectionManager()->Remove( aMesh );
- aMesh->ClearSelections();
- aContext->MainSelector()->Clear();
-
- Draw::Set( argv[1], Handle(XSDRAWSTLVRML_DrawableMesh)() );
-
- Standard::Purge();
- }
- return 0;
-}
//-----------------------------------------------------------------------------
-
static Standard_Integer meshcolors( Draw_Interpretor& di,
Standard_Integer argc,
const char** argv )
try
{
OCC_CATCH_SIGNALS
- if ( argc < 2 )
+ if ( argc < 4 )
{
- di << "Use : meshcolors meshname mode isreflect" << "\n";
+ di << "Wrong number of parameters" << "\n";
+ di << "Use : meshcolors <mesh name> <mode> <isreflect>" << "\n";
di << "mode : {elem1|elem2|nodal|nodaltex|none}"<< "\n";
di << " elem1 - different color for each element" << "\n";
di << " elem2 - one color for one side"<<"\n";
if( aMode.IsEqual("elem1") || aMode.IsEqual("elem2") || aMode.IsEqual("nodal") || aMode.IsEqual("nodaltex") || aMode.IsEqual("none") )
{
Handle(MeshVS_PrsBuilder) aTempBuilder;
- Standard_Integer reflection = Draw::Atoi(argv[3]);
+ Standard_Integer aReflection = Draw::Atoi(argv[3]);
- for (int count = 0 ; count < aMesh->GetBuildersCount(); count++ ){
+ for (Standard_Integer aCount = 0 ; aCount < aMesh->GetBuildersCount(); aCount++ ){
aTempBuilder = Handle(MeshVS_PrsBuilder)::DownCast(aMesh->FindBuilder("MeshVS_ElementalColorPrsBuilder"));
if( !aTempBuilder.IsNull())
aMesh->RemoveBuilderById(aTempBuilder->GetId());
aViewer->ActiveView()->SetSurfaceDetail(V3d_TEX_ALL);
}
- aMesh->GetDrawer()->SetBoolean ( MeshVS_DA_ColorReflection, Standard_Boolean(reflection) );
+ aMesh->GetDrawer()->SetBoolean ( MeshVS_DA_ColorReflection, Standard_Boolean(aReflection) );
anIC->Redisplay( aMesh );
}
return 0;
}
//-----------------------------------------------------------------------------
+static Standard_Integer meshvectors( Draw_Interpretor& di,
+ Standard_Integer argc,
+ const char** argv )
+{
+ if ( argc < 3 )
+ {
+ di << "Wrong number of parameters" << "\n";
+ di << "Use : meshvectors <mesh name> < -mode {elem|nodal|none} > [-maxlen len] [-color name] [-arrowpart ratio] [-issimple {1|0}]" << "\n";
+ di << "Supported mode values:"<< "\n";
+ di << " elem - vector per element" << "\n";
+ di << " nodal - vector per node"<< "\n";
+ di << " none - clear"<< "\n";
+
+ return 0;
+ }
+
+ Handle( MeshVS_Mesh ) aMesh = getMesh( argv[ 1 ], di );
+
+ if ( aMesh.IsNull() )
+ {
+ di << "Mesh not found" << "\n";
+ return 0;
+ }
+ Handle(AIS_InteractiveContext) anIC = ViewerTest::GetAISContext();
+ if ( anIC.IsNull() )
+ {
+ di << "The context is null" << "\n";
+ return 0;
+ }
+
+ TCollection_AsciiString aParam;
+ TCollection_AsciiString aMode("none");
+ Standard_Real aMaxlen(1.0);
+ Quantity_Color aColor(Quantity_NOC_ORANGE);
+ Standard_Real anArrowPart(0.1);
+ Standard_Boolean isSimplePrs(Standard_False);
+
+ for (Standard_Integer anIdx = 2; anIdx < argc; anIdx++)
+ {
+ if (!aParam.IsEmpty())
+ {
+ if (aParam == "-mode")
+ {
+ aMode = argv[anIdx];
+ }
+ else if (aParam == "-maxlen")
+ {
+ aMaxlen = Draw::Atof(argv[anIdx]);
+ }
+ else if (aParam == "-color")
+ {
+ aColor = ViewerTest::GetColorFromName(argv[anIdx]);
+ }
+ else if (aParam == "-arrowpart")
+ {
+ anArrowPart = Draw::Atof(argv[anIdx]);
+ }
+ else if (aParam == "-issimple")
+ {
+ isSimplePrs = Draw::Atoi(argv[anIdx]);
+ }
+ aParam.Clear();
+ }
+ else if (argv[anIdx][0] == '-')
+ {
+ aParam = argv[anIdx];
+ }
+ }
+
+ if( !aMode.IsEqual("elem") && !aMode.IsEqual("nodal") && !aMode.IsEqual("none") )
+ {
+ di << "Wrong mode name" << "\n";
+ return 0;
+ }
+
+ Handle(MeshVS_PrsBuilder) aTempBuilder;
+
+ aTempBuilder = Handle(MeshVS_PrsBuilder)::DownCast(aMesh->FindBuilder("MeshVS_VectorPrsBuilder"));
+ if( !aTempBuilder.IsNull())
+ aMesh->RemoveBuilderById(aTempBuilder->GetId());
+
+ if( !aMode.IsEqual("none") )
+ {
+ Handle(MeshVS_VectorPrsBuilder) aBuilder = new MeshVS_VectorPrsBuilder( aMesh.operator->(),
+ aMaxlen,
+ aColor,
+ MeshVS_DMF_VectorDataPrs,
+ 0,
+ -1,
+ MeshVS_BP_Vector,
+ isSimplePrs);
+
+ Standard_Boolean anIsElement = aMode.IsEqual("elem");
+ const TColStd_PackedMapOfInteger& anAllIDs = anIsElement ? aMesh->GetDataSource()->GetAllElements() :
+ aMesh->GetDataSource()->GetAllNodes();
+
+ Standard_Integer aNbNodes;
+ MeshVS_EntityType aEntType;
+
+ TColStd_MapIteratorOfPackedMapOfInteger anIter( anAllIDs );
+ for ( ; anIter.More(); anIter.Next() )
+ {
+ TColStd_Array1OfReal aCoords(1, 3);
+ if (anIsElement)
+ aMesh->GetDataSource()->GetNormal(anIter.Key(), 3, aCoords.ChangeValue(1), aCoords.ChangeValue(2), aCoords.ChangeValue(3));
+ else
+ aMesh->GetDataSource()->GetGeom(anIter.Key(), Standard_False, aCoords, aNbNodes, aEntType);
+
+ gp_Vec aNorm = gp_Vec(aCoords.Value(1), aCoords.Value(2), aCoords.Value(3));
+ if( !aNorm.Magnitude() )
+ aNorm = gp_Vec(0,0,1);
+ aBuilder->SetVector(anIsElement, anIter.Key(), aNorm.Normalized());
+ }
+
+ aMesh->AddBuilder( aBuilder, Standard_False );
+ aMesh->GetDrawer()->SetDouble ( MeshVS_DA_VectorArrowPart, anArrowPart );
+ }
+
+ anIC->Redisplay( aMesh );
+
+ return 0;
+}
+//-----------------------------------------------------------------------------
+
+static Standard_Integer meshtext( Draw_Interpretor& di,
+ Standard_Integer argc,
+ const char** argv )
+{
+ if ( argc < 2 )
+ {
+ di << "Wrong number of parameters" << "\n";
+ di << "Use : meshtext <mesh name>" << "\n";
+ return 0;
+ }
+
+ Handle( MeshVS_Mesh ) aMesh = getMesh( argv[ 1 ], di );
+
+ if ( aMesh.IsNull() )
+ {
+ di << "Mesh not found" << "\n";
+ return 0;
+ }
+
+ Handle(AIS_InteractiveContext) anIC = ViewerTest::GetAISContext();
+ if ( anIC.IsNull() )
+ {
+ di << "The context is null" << "\n";
+ return 0;
+ }
+
+ // Prepare triangle labels
+ MeshVS_DataMapOfIntegerAsciiString aLabels;
+ Standard_Integer aLen = aMesh->GetDataSource()->GetAllElements().Extent();
+ for ( Standard_Integer anIndex = 1; anIndex <= aLen; anIndex++ ){
+ aLabels.Bind( anIndex, TCollection_AsciiString( anIndex ) );
+ }
+
+ Handle(MeshVS_TextPrsBuilder) aTextBuilder = new MeshVS_TextPrsBuilder( aMesh.operator->(), 20., Quantity_NOC_YELLOW );
+ aTextBuilder->SetTexts( Standard_True, aLabels );
+ aMesh->AddBuilder( aTextBuilder );
+
+ return 0;
+}
+
+static Standard_Integer meshdeform( Draw_Interpretor& di,
+ Standard_Integer argc,
+ const char** argv )
+{
+ if ( argc < 3 )
+ {
+ di << "Wrong number of parameters" << "\n";
+ di << "Use : meshdeform <mesh name> < -mode {on|off} > [-scale scalefactor]" << "\n";
+ return 0;
+ }
+
+ Handle( MeshVS_Mesh ) aMesh = getMesh( argv[ 1 ], di );
+
+ if ( aMesh.IsNull() )
+ {
+ di << "Mesh not found" << "\n";
+ return 0;
+ }
+ Handle(AIS_InteractiveContext) anIC = ViewerTest::GetAISContext();
+ if ( anIC.IsNull() )
+ {
+ di << "The context is null" << "\n";
+ return 0;
+ }
+
+ TCollection_AsciiString aParam;
+ TCollection_AsciiString aMode("off");
+ Standard_Real aScale(1.0);
+
+ for (Standard_Integer anIdx = 2; anIdx < argc; anIdx++)
+ {
+ if (!aParam.IsEmpty())
+ {
+ if (aParam == "-mode")
+ {
+ aMode = argv[anIdx];
+ }
+ else if (aParam == "-scale")
+ {
+ aScale = Draw::Atof(argv[anIdx]);
+ }
+ aParam.Clear();
+ }
+ else if (argv[anIdx][0] == '-')
+ {
+ aParam = argv[anIdx];
+ }
+ }
+
+ if(!aMode.IsEqual("on") && !aMode.IsEqual("off"))
+ {
+ di << "Wrong mode name" << "\n";
+ return 0;
+ }
+
+ Handle ( MeshVS_DeformedDataSource ) aDefDS =
+ new MeshVS_DeformedDataSource( aMesh->GetDataSource() , aScale );
+
+ const TColStd_PackedMapOfInteger& anAllIDs = aMesh->GetDataSource()->GetAllNodes();
+
+ Standard_Integer aNbNodes;
+ MeshVS_EntityType aEntType;
+
+ TColStd_MapIteratorOfPackedMapOfInteger anIter( anAllIDs );
+ for ( ; anIter.More(); anIter.Next() )
+ {
+ TColStd_Array1OfReal aCoords(1, 3);
+ aMesh->GetDataSource()->GetGeom(anIter.Key(), Standard_False, aCoords, aNbNodes, aEntType);
+
+ gp_Vec aNorm = gp_Vec(aCoords.Value(1), aCoords.Value(2), aCoords.Value(3));
+ if( !aNorm.Magnitude() )
+ aNorm = gp_Vec(0,0,1);
+ aDefDS->SetVector(anIter.Key(), aNorm.Normalized());
+ }
+
+ aMesh->SetDataSource(aDefDS);
+
+ anIC->Redisplay( aMesh );
+
+ Handle( V3d_View ) aView = ViewerTest::CurrentView();
+ if ( !aView.IsNull() )
+ aView->FitAll();
+
+ return 0;
+}
static Standard_Integer mesh_edge_width( Draw_Interpretor& di,
Standard_Integer argc,
OCC_CATCH_SIGNALS
if ( argc < 3 )
{
- di << "Wrong number of parameters. Use : mesh_edge_width mesh width" << "\n";
+ di << "Wrong number of parameters" << "\n";
+ di << "Use : mesh_edge_width <mesh name> <width>" << "\n";
return 0;
}
//purpose :
//=======================================================================
-static Standard_Integer tovrml(Draw_Interpretor& /*di*/, Standard_Integer n, const char** a)
+static Standard_Integer tovrml(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
{
- if (n < 3) return 1;
- XSDRAWSTLVRML_ToVRML avrml;
- TopoDS_Shape sh = DBRep::Get (a[1]);
- const char* filename = a[2];
- if (!avrml.Write (sh,filename)) return 1;
+ if ( argc < 3 )
+ {
+ di << "Wrong number of parameters" << "\n";
+ di << "Use : tovrml <shape name> <file name>" << "\n";
+ return 0;
+ }
+ XSDRAWSTLVRML_ToVRML aVrml;
+ TopoDS_Shape aShape = DBRep::Get (argv[1]);
+ const char* aFilename = argv[2];
+ if (!aVrml.Write (aShape,aFilename)) return 1;
return 0;
}
theCommands.Add ("loadvrml" , "shape file",__FILE__,loadvrml,g);
theCommands.Add ("storevrml" , "shape file defl [type]",__FILE__,storevrml,g);
- theCommands.Add ("meshfromstl", "creates MeshVS_Mesh from STL file", __FILE__, createmesh, g );
- theCommands.Add ("meshdispmode", "changes MeshVS_Mesh display mode", __FILE__, meshdm, g );
- theCommands.Add ("meshselmode", "changes MeshVS_Mesh selection mode", __FILE__, meshsm, g );
- theCommands.Add ("meshshadcolor", "change MeshVS_Mesh shading color", __FILE__, meshcolor, g );
- theCommands.Add ("meshlinkcolor", "change MeshVS_Mesh line color", __FILE__, linecolor, g );
- theCommands.Add ("meshmat", "change MeshVS_Mesh material", __FILE__, meshmat, g );
- theCommands.Add ("meshshrcoef", "change MeshVS_Mesh shrink coeff", __FILE__, shrink, g );
- theCommands.Add ("meshshow", "display MeshVS_Mesh object", __FILE__, mdisplay, g );
- theCommands.Add ("meshhide", "erase MeshVS_Mesh object", __FILE__, merase, g );
- theCommands.Add ("meshhidesel", "hide selected entities", __FILE__, hidesel, g );
- theCommands.Add ("meshshowsel", "show only selected entities", __FILE__, showonly, g );
- theCommands.Add ("meshshowall", "show all entities", __FILE__, showall, g );
- theCommands.Add ("meshdelete", "delete MeshVS_Mesh object", __FILE__, delmesh, g );
- theCommands.Add ("meshcolors", "display color presentation", __FILE__, meshcolors, g );
- theCommands.Add ("mesh_edge_width", "set width of edges", __FILE__, mesh_edge_width, g );
+ theCommands.Add ("meshfromstl", "creates MeshVS_Mesh from STL file", __FILE__, createmesh, g );
+ theCommands.Add ("mesh3delem", "creates 3d element mesh to test", __FILE__, create3d, g );
+ theCommands.Add ("meshshadcolor", "change MeshVS_Mesh shading color", __FILE__, meshcolor, g );
+ theCommands.Add ("meshlinkcolor", "change MeshVS_Mesh line color", __FILE__, linecolor, g );
+ theCommands.Add ("meshmat", "change MeshVS_Mesh material and transparency", __FILE__, meshmat, g );
+ theCommands.Add ("meshshrcoef", "change MeshVS_Mesh shrink coeff", __FILE__, shrink, g );
+ theCommands.Add ("meshshow", "display MeshVS_Mesh object", __FILE__, mdisplay, g );
+ theCommands.Add ("meshhide", "erase MeshVS_Mesh object", __FILE__, merase, g );
+ theCommands.Add ("meshhidesel", "hide selected entities", __FILE__, hidesel, g );
+ theCommands.Add ("meshshowsel", "show only selected entities", __FILE__, showonly, g );
+ theCommands.Add ("meshshowall", "show all entities", __FILE__, showall, g );
+ theCommands.Add ("meshcolors", "display color presentation", __FILE__, meshcolors, g );
+ theCommands.Add ("meshvectors", "display sample vectors", __FILE__, meshvectors, g );
+ theCommands.Add ("meshtext", "display text labels", __FILE__, meshtext, g );
+ theCommands.Add ("meshdeform", "display deformed mesh", __FILE__, meshdeform, g );
+ theCommands.Add ("mesh_edge_width", "set width of edges", __FILE__, mesh_edge_width, g );
}
//==============================================================================
--- /dev/null
+-- Created on: 2014-08-04
+-- Created by: Artem NOVIKOV
+-- Copyright (c) 2014 OPEN CASCADE SAS
+--
+-- This file is part of Open CASCADE Technology software library.
+--
+-- This library is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU Lesser General Public License version 2.1 as published
+-- by the Free Software Foundation, with special exception defined in the file
+-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+-- distribution for complete text of the license and disclaimer of any warranty.
+--
+-- Alternatively, this file may be used under the terms of Open CASCADE
+-- commercial license or contractual agreement.
+
+class DataSource3D from XSDRAWSTLVRML inherits DataSource from MeshVS
+
+ ---Purpose: The sample DataSource3D for working with STLMesh_Mesh
+
+uses
+ Mesh from StlMesh,
+
+ Integer from Standard,
+ Boolean from Standard,
+ Address from Standard,
+
+ Array1OfReal from TColStd,
+ Array1OfInteger from TColStd,
+ SequenceOfInteger from TColStd,
+ PackedMapOfInteger from TColStd,
+
+ EntityType from MeshVS,
+
+ HArray1OfInteger from TColStd,
+ HArray2OfInteger from TColStd,
+ HArray2OfReal from TColStd,
+
+ HArray1OfSequenceOfInteger from MeshVS,
+ DataMapOfHArray1OfSequenceOfInteger from MeshVS
+
+is
+
+ Create returns DataSource3D from XSDRAWSTLVRML;
+ ---Purpose: Constructor
+
+ GetGeom ( me; theID : Integer;
+ theIsElement : Boolean;
+ theCoords : out Array1OfReal;
+ theNbNodes : out Integer;
+ theType : out EntityType ) returns Boolean;
+ ---Purpose: Returns geometry information about node ( if IsElement is False ) or element ( IsElement is True )
+ -- by co-ordinates. For element this method must return all its nodes co-ordinates in the strict order: X, Y, Z and
+ -- with nodes order is the same as in wire bounding the face or link. NbNodes is number of nodes of element.
+ -- It is recommended to return 1 for node. Type is an element type.
+
+ Get3DGeom ( me; theID : Integer;
+ theNbNodes : out Integer;
+ theData : out HArray1OfSequenceOfInteger from MeshVS ) returns Boolean is redefined virtual;
+ ---Purpose: This method returns topology information about 3D-element
+ -- Returns false if element with ID isn't 3D or because other troubles
+
+ GetGeomType ( me; theID : Integer;
+ theIsElement : Boolean;
+ theType : out EntityType ) returns Boolean;
+ ---Purpose: This method is similar to GetGeom, but returns only element or node type. This method is provided for
+ -- a fine performance.
+
+ GetAddr ( me; theID : Integer;
+ theIsElement : Boolean ) returns Address;
+ ---Purpose: This method returns by number an address of any entity which represents element or node data structure.
+
+ GetNodesByElement ( me; theID : Integer;
+ theNodeIDs : out Array1OfInteger from TColStd;
+ theNbNodes : out Integer ) returns Boolean is redefined;
+ ---Purpose: This method returns information about what node this element consist of.
+
+ GetAllNodes ( me ) returns PackedMapOfInteger;
+ ---C++: return const &
+ ---Purpose: This method returns map of all nodes the object consist of.
+
+ GetAllElements ( me ) returns PackedMapOfInteger;
+ ---C++: return const &
+ ---Purpose: This method returns map of all elements the object consist of.
+
+ GetNormal ( me; theID : Integer;
+ theMax : Integer;
+ theNx, theNy, theNz : out Real ) returns Boolean is redefined virtual;
+ ---Purpose: This method calculates normal of face, which is using for correct reflection presentation.
+ -- There is default method, for advance reflection this method can be redefined.
+
+fields
+ myNodes : PackedMapOfInteger from TColStd;
+ myElements : PackedMapOfInteger from TColStd;
+ myElemNbNodes : HArray1OfInteger from TColStd;
+ myNodeCoords : HArray2OfReal from TColStd;
+ myElemNodes : HArray2OfInteger from TColStd;
+
+end DataSource3D;
--- /dev/null
+// Created on: 2014-08-04
+// Created by: Artem NOVIKOV
+// Copyright (c) 2014 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <XSDRAWSTLVRML_DataSource3D.ixx>
+
+#include <StlMesh_SequenceOfMeshTriangle.hxx>
+#include <StlMesh_MeshTriangle.hxx>
+#include <TColgp_SequenceOfXYZ.hxx>
+#include <TColStd_DataMapOfIntegerReal.hxx>
+#include <TColStd_DataMapOfIntegerInteger.hxx>
+
+//================================================================
+// Function : Constructor
+// Purpose :
+//================================================================
+XSDRAWSTLVRML_DataSource3D::XSDRAWSTLVRML_DataSource3D()
+{
+ for (Standard_Integer aNodeID = 1; aNodeID <= 16; aNodeID++)
+ {
+ myNodes.Add( aNodeID );
+ }
+
+ for (Standard_Integer anElemID = 1; anElemID <= 5; anElemID++)
+ {
+ myElements.Add( anElemID );
+ }
+
+ myNodeCoords = new TColStd_HArray2OfReal(1, 16, 1, 3);
+
+ myNodeCoords->SetValue( 1, 1, 5 );
+ myNodeCoords->SetValue( 1, 2, 5 );
+ myNodeCoords->SetValue( 1, 3, 20 );
+
+ myNodeCoords->SetValue( 2, 1, 0 );
+ myNodeCoords->SetValue( 2, 2, 10 );
+ myNodeCoords->SetValue( 2, 3, 10 );
+
+ myNodeCoords->SetValue( 3, 1, 10 );
+ myNodeCoords->SetValue( 3, 2, 0 );
+ myNodeCoords->SetValue( 3, 3, 10 );
+
+ myNodeCoords->SetValue( 4, 1, 0 );
+ myNodeCoords->SetValue( 4, 2, 0 );
+ myNodeCoords->SetValue( 4, 3, 10 );
+
+ myNodeCoords->SetValue( 5, 1, -10 );
+ myNodeCoords->SetValue( 5, 2, 0 );
+ myNodeCoords->SetValue( 5, 3, 10 );
+
+ myNodeCoords->SetValue( 6, 1, -10 );
+ myNodeCoords->SetValue( 6, 2, 10 );
+ myNodeCoords->SetValue( 6, 3, 10 );
+
+ myNodeCoords->SetValue( 7, 1, -10 );
+ myNodeCoords->SetValue( 7, 2, 10 );
+ myNodeCoords->SetValue( 7, 3, 0 );
+
+ myNodeCoords->SetValue( 8, 1, -10 );
+ myNodeCoords->SetValue( 8, 2, 0 );
+ myNodeCoords->SetValue( 8, 3, 0 );
+
+ myNodeCoords->SetValue( 9, 1, 0 );
+ myNodeCoords->SetValue( 9, 2, 0 );
+ myNodeCoords->SetValue( 9, 3, 0 );
+
+ myNodeCoords->SetValue( 10, 1, 0 );
+ myNodeCoords->SetValue( 10, 2, 10 );
+ myNodeCoords->SetValue( 10, 3, 0 );
+
+ myNodeCoords->SetValue( 11, 1, 0 );
+ myNodeCoords->SetValue( 11, 2, -10 );
+ myNodeCoords->SetValue( 11, 3, 10 );
+
+ myNodeCoords->SetValue( 12, 1, 10 );
+ myNodeCoords->SetValue( 12, 2, -10 );
+ myNodeCoords->SetValue( 12, 3, 10 );
+
+ myNodeCoords->SetValue( 13, 1, 10 );
+ myNodeCoords->SetValue( 13, 2, -10 );
+ myNodeCoords->SetValue( 13, 3, 0 );
+
+ myNodeCoords->SetValue( 14, 1, 0 );
+ myNodeCoords->SetValue( 14, 2, -10 );
+ myNodeCoords->SetValue( 14, 3, 0 );
+
+ myNodeCoords->SetValue( 15, 1, 10 );
+ myNodeCoords->SetValue( 15, 2, 0 );
+ myNodeCoords->SetValue( 15, 3, 0 );
+
+ myNodeCoords->SetValue( 16, 1, 5 );
+ myNodeCoords->SetValue( 16, 2, 5 );
+ myNodeCoords->SetValue( 16, 3, -10 );
+
+ myElemNbNodes = new TColStd_HArray1OfInteger(1, 5);
+
+ myElemNbNodes->SetValue( 1, 4 );
+ myElemNbNodes->SetValue( 2, 8 );
+ myElemNbNodes->SetValue( 3, 6 );
+ myElemNbNodes->SetValue( 4, 8 );
+ myElemNbNodes->SetValue( 5, 4 );
+
+ myElemNodes = new TColStd_HArray2OfInteger(1, 5, 1, 8);
+
+ myElemNodes->SetValue(1, 1, 1);
+ myElemNodes->SetValue(1, 2, 2);
+ myElemNodes->SetValue(1, 3, 3);
+ myElemNodes->SetValue(1, 4, 4);
+
+ myElemNodes->SetValue(2, 1, 2);
+ myElemNodes->SetValue(2, 2, 4);
+ myElemNodes->SetValue(2, 3, 5);
+ myElemNodes->SetValue(2, 4, 6);
+ myElemNodes->SetValue(2, 5, 7);
+ myElemNodes->SetValue(2, 6, 8);
+ myElemNodes->SetValue(2, 7, 9);
+ myElemNodes->SetValue(2, 8, 10);
+
+ myElemNodes->SetValue(3, 1, 2);
+ myElemNodes->SetValue(3, 2, 3);
+ myElemNodes->SetValue(3, 3, 4);
+ myElemNodes->SetValue(3, 4, 10);
+ myElemNodes->SetValue(3, 5, 15);
+ myElemNodes->SetValue(3, 6, 9);
+
+ myElemNodes->SetValue(4, 1, 4);
+ myElemNodes->SetValue(4, 2, 3);
+ myElemNodes->SetValue(4, 3, 12);
+ myElemNodes->SetValue(4, 4, 11);
+ myElemNodes->SetValue(4, 5, 14);
+ myElemNodes->SetValue(4, 6, 13);
+ myElemNodes->SetValue(4, 7, 15);
+ myElemNodes->SetValue(4, 8, 9);
+
+ myElemNodes->SetValue(5, 1, 16);
+ myElemNodes->SetValue(5, 2, 15);
+ myElemNodes->SetValue(5, 3, 10);
+ myElemNodes->SetValue(5, 4, 9);
+}
+
+//================================================================
+// Function : GetGeom
+// Purpose :
+//================================================================
+Standard_Boolean XSDRAWSTLVRML_DataSource3D::GetGeom
+( const Standard_Integer theID, const Standard_Boolean theIsElement,
+ TColStd_Array1OfReal& theCoords, Standard_Integer& theNbNodes,
+ MeshVS_EntityType& theType ) const
+{
+ if (theIsElement)
+ {
+ if (theID >= 1 && theID <= myElements.Extent())
+ {
+ theType = MeshVS_ET_Volume;
+ theNbNodes = myElemNbNodes->Value(theID);
+
+ for (Standard_Integer aNodeI = 1, aGlobCoordI = 1; aNodeI <= theNbNodes; aNodeI++)
+ {
+ Standard_Integer anIdxNode = myElemNodes->Value(theID, aNodeI);
+ for(Standard_Integer aCoordI = 1; aCoordI <= 3; aCoordI++, aGlobCoordI++ )
+ theCoords(aGlobCoordI) = myNodeCoords->Value(anIdxNode, aCoordI);
+ }
+
+ return Standard_True;
+ }
+ else
+ return Standard_False;
+ }
+ else
+ if (theID >= 1 && theID <= myNodes.Extent())
+ {
+ theType = MeshVS_ET_Node;
+ theNbNodes = 1;
+
+ theCoords( 1 ) = myNodeCoords->Value(theID, 1);
+ theCoords( 2 ) = myNodeCoords->Value(theID, 2);
+ theCoords( 3 ) = myNodeCoords->Value(theID, 3);
+ return Standard_True;
+ }
+ else
+ return Standard_False;
+}
+
+//================================================================
+// Function : Get3DGeom
+// Purpose :
+//================================================================
+Standard_Boolean XSDRAWSTLVRML_DataSource3D::Get3DGeom
+( const Standard_Integer theID, Standard_Integer& theNbNodes,
+ Handle(MeshVS_HArray1OfSequenceOfInteger)& theData ) const
+{
+ Handle(MeshVS_HArray1OfSequenceOfInteger) aMeshData;
+ if (theID == 1 || theID == 5)
+ {
+ aMeshData = new MeshVS_HArray1OfSequenceOfInteger(1,4);
+ theNbNodes = 4;
+ for (Standard_Integer anElemI = 1; anElemI <= 4; anElemI++)
+ {
+ aMeshData->ChangeValue(anElemI).Append( (anElemI - 1) % 4 );
+ aMeshData->ChangeValue(anElemI).Append( anElemI % 4 );
+ aMeshData->ChangeValue(anElemI).Append( (anElemI + 1) % 4 );
+ }
+ theData = aMeshData;
+ return Standard_True;
+ }
+
+ if (theID == 2 || theID == 4)
+ {
+ aMeshData = new MeshVS_HArray1OfSequenceOfInteger(1,6);
+ theNbNodes = 8;
+ for (Standard_Integer anElemI = 1, k = 1; anElemI <= 4; anElemI++)
+ {
+ aMeshData->ChangeValue(anElemI).Append( (k - 1) % 8 );
+ aMeshData->ChangeValue(anElemI).Append( k % 8 );
+ aMeshData->ChangeValue(anElemI).Append( (k + 1) % 8 );
+ aMeshData->ChangeValue(anElemI).Append( (k + 2) % 8 );
+ k+=2;
+ }
+
+ aMeshData->ChangeValue(5).Append( 0 );
+ aMeshData->ChangeValue(5).Append( 3 );
+ aMeshData->ChangeValue(5).Append( 4 );
+ aMeshData->ChangeValue(5).Append( 7 );
+
+ aMeshData->ChangeValue(6).Append( 1 );
+ aMeshData->ChangeValue(6).Append( 2 );
+ aMeshData->ChangeValue(6).Append( 5 );
+ aMeshData->ChangeValue(6).Append( 6 );
+
+ theData = aMeshData;
+ return Standard_True;
+ }
+
+ if (theID == 3)
+ {
+ aMeshData = new MeshVS_HArray1OfSequenceOfInteger(1,5);
+ theNbNodes = 6;
+ for (Standard_Integer anElemI = 1; anElemI <= 2; anElemI++)
+ {
+ aMeshData->ChangeValue(anElemI).Append( (anElemI - 1) * 3 );
+ aMeshData->ChangeValue(anElemI).Append( (anElemI - 1) * 3 + 1 );
+ aMeshData->ChangeValue(anElemI).Append( (anElemI - 1) * 3 + 2 );
+ }
+ for (Standard_Integer anElemI = 1; anElemI <= 3; anElemI++)
+ {
+ aMeshData->ChangeValue(2 + anElemI).Append( (anElemI - 1) % 3 );
+ aMeshData->ChangeValue(2 + anElemI).Append( anElemI % 3 );
+ aMeshData->ChangeValue(2 + anElemI).Append( anElemI % 3 + 3 );
+ aMeshData->ChangeValue(2 + anElemI).Append( (anElemI - 1) % 3 + 3 );
+ }
+ theData = aMeshData;
+ return Standard_True;
+ }
+
+ return Standard_False;
+}
+
+//================================================================
+// Function : GetGeomType
+// Purpose :
+//================================================================
+Standard_Boolean XSDRAWSTLVRML_DataSource3D::GetGeomType
+( const Standard_Integer theID,
+ const Standard_Boolean theIsElement,
+ MeshVS_EntityType& theType ) const
+{
+ if (theIsElement)
+ {
+ if (theID >= 1 && theID <= myElements.Extent())
+ {
+ theType = MeshVS_ET_Volume;
+ return Standard_True;
+ }
+ }
+ else
+ if (theID >= 1 && theID <= myNodes.Extent())
+ {
+ theType = MeshVS_ET_Node;
+ return Standard_True;
+ }
+
+ return Standard_False;
+}
+
+//================================================================
+// Function : GetAddr
+// Purpose :
+//================================================================
+Standard_Address XSDRAWSTLVRML_DataSource3D::GetAddr
+( const Standard_Integer, const Standard_Boolean ) const
+{
+ return NULL;
+}
+
+//================================================================
+// Function : GetNodesByElement
+// Purpose :
+//================================================================
+Standard_Boolean XSDRAWSTLVRML_DataSource3D::GetNodesByElement
+( const Standard_Integer theID,
+ TColStd_Array1OfInteger& theNodeIDs,
+ Standard_Integer& theNbNodes ) const
+{
+ Standard_Integer aLow;
+ if (theID == 1 || theID == 5)
+ {
+ theNbNodes = 4;
+ aLow = theNodeIDs.Lower();
+ theNodeIDs (aLow) = myElemNodes->Value(theID, 1 );
+ theNodeIDs (aLow + 1) = myElemNodes->Value(theID, 2 );
+ theNodeIDs (aLow + 2) = myElemNodes->Value(theID, 3 );
+ theNodeIDs (aLow + 3) = myElemNodes->Value(theID, 4 );
+ return Standard_True;
+ }
+
+ if (theID == 2 || theID == 4)
+ {
+ theNbNodes = 8;
+ aLow = theNodeIDs.Lower();
+ theNodeIDs (aLow) = myElemNodes->Value(theID, 1 );
+ theNodeIDs (aLow + 1) = myElemNodes->Value(theID, 2 );
+ theNodeIDs (aLow + 2) = myElemNodes->Value(theID, 3 );
+ theNodeIDs (aLow + 3) = myElemNodes->Value(theID, 4 );
+ theNodeIDs (aLow + 4) = myElemNodes->Value(theID, 5 );
+ theNodeIDs (aLow + 5) = myElemNodes->Value(theID, 6 );
+ theNodeIDs (aLow + 6) = myElemNodes->Value(theID, 7 );
+ theNodeIDs (aLow + 7) = myElemNodes->Value(theID, 8 );
+ return Standard_True;
+ }
+
+ if (theID == 3)
+ {
+ theNbNodes = 6;
+ aLow = theNodeIDs.Lower();
+ theNodeIDs (aLow) = myElemNodes->Value(theID, 1 );
+ theNodeIDs (aLow + 1) = myElemNodes->Value(theID, 2 );
+ theNodeIDs (aLow + 2) = myElemNodes->Value(theID, 3 );
+ theNodeIDs (aLow + 3) = myElemNodes->Value(theID, 4 );
+ theNodeIDs (aLow + 4) = myElemNodes->Value(theID, 5 );
+ theNodeIDs (aLow + 5) = myElemNodes->Value(theID, 6 );
+ return Standard_True;
+ }
+
+ return Standard_False;
+}
+
+//================================================================
+// Function : GetAllNodes
+// Purpose :
+//================================================================
+const TColStd_PackedMapOfInteger& XSDRAWSTLVRML_DataSource3D::GetAllNodes() const
+{
+ return myNodes;
+}
+
+//================================================================
+// Function : GetAllElements
+// Purpose :
+//================================================================
+const TColStd_PackedMapOfInteger& XSDRAWSTLVRML_DataSource3D::GetAllElements() const
+{
+ return myElements;
+}
+
+//================================================================
+// Function : GetNormal
+// Purpose :
+//================================================================
+Standard_Boolean XSDRAWSTLVRML_DataSource3D::GetNormal
+( const Standard_Integer /*theID*/, const Standard_Integer /*theMax*/,
+ Standard_Real& /*theNx*/, Standard_Real& /*theNy*/,Standard_Real& /*theNz*/ ) const
+{
+ return Standard_False;
+}
meshfromstl m [locate_data_file shape.stl]
-meshdispmode m 34
+meshtext m
+
+vsetdispmode m 34
set aFile $imagedir/shape.pdf
set status 0
-if { ${List1} != ${List2}} {
- set status 0
+if { ${List1} != ${List2} && [ regexp {Progress:} $List2 ] } {
+ puts "$BugNumber OK"
} else {
- set status 1
-}
-
-if { [ regexp {Progress:} $List2 ] } {
- puts "${BugNumber} OK"
- set status 0
-} else {
- puts "${BugNumber} Faulty"
- set status 1
-}
-if { $status != 0 } {
puts "Faulty $BugNumber"
-} else {
- puts "OK $BugNumber"
-}
-
-set 3dviewer 0
-
-
+}
\ No newline at end of file
-puts "TODO OCC12345 ALL: An exception was caught"
-puts "TODO OCC12345 ALL: \\*\\* Exception \\*\\*.*"
-puts "TODO OCC12345 ALL: TEST INCOMPLETE"
-
puts "============"
puts "OCC10702"
puts "============"
pload XDE
+vinit
+
meshfromstl m [locate_data_file OMF6391_box.stl]
set x_coord 180
set y_coord 260
-meshdispmode m 2
+vsetdispmode m 2
puts "\nMesh displayed in shading mode"
checkcolor $x_coord $y_coord 0 0 0.36
-meshselmode m 8
+vselmode m 8 1
puts "\nSelection of elements is activated"
vselect $x_coord $y_coord 1
checkcolor $x_coord $y_coord 0 0 0.36
-nodalcolor_id m
+meshcolors m nodal 0
puts "\nDisplay nodal color presentation"
checkcolor $x_coord $y_coord 0.46 0.12 0.37
pload XDE
+vinit
+
meshfromstl m [locate_data_file OMF6391_box.stl]
set x_coord 210
mesh_edge_width m 20
puts "\nSet big mesh edge width"
-checkcolor $x_coord $y_coord 1 1 1
+checkcolor $x_coord $y_coord 1 1 0
set only_screen 1
pload XDE
+vinit
+
meshfromstl m [locate_data_file OMF6391_box.stl]
set x_coord 157
vmoveto $x_coord $y_coord
-meshdispmode m 3
+vsetdispmode m 3
puts "\nSet shrinked display mode\n"
set x_coord 137
vfit
vsetdispmode 1
-vselmode FACE ON
+# FACE ON
+vselmode 4 1
+
set x 170
set y 80
vselect $x $y
vfit
vsetdispmode 1
-vselmode FACE ON
+# FACE ON
+vselmode 4 1
+
set x 170
set y 80
vselect $x $y
vfit
vsetdispmode 1
-vselmode FACE ON
+# FACE ON
+vselmode 4 1
+
set x 170
set y 80
vselect $x $y
meshfromstl m [locate_data_file shape.stl]
-meshdispmode m 34
+meshtext m
+
+vsetdispmode m 34
set aFile $imagedir/${test_image}.pdf
proc check_cross_picking { pick object name } {
- vselmode 0 0
+ vselmode 0 1
for {set i 1} {$i < 3} {incr i} {
}
vselmode $object $i 0
}
- vselmode 0 0
+ vselmode 0 1
}
# pick coord { [flyout], dimension line, text }
set ymax 500
set shift 0
-vselmode 0 0
+vselmode 0 1
vselect $xmin $ymin $xmax $ymax $shift
vdump $anImage1
vdump $anImage2
vselect 0 0 0 0 0
-vselmode 0 0
+vselmode 0 1
vselmode 2 1
vselect $xmin $ymin $xmax $ymax $shift
vdump $anImage3
pload XDE
set BugNumber OCC6652
+vinit
+
meshfromstl result [locate_data_file OCC6652.stl]
-meshdispmode result 3
-meshselmode result 8
+vsetdispmode result 3
+vselmode result 8 1
vselect 5 5 400 400
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
dchrono tmr start
set dispmode 2
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
dchrono tmr start
set dispmode 3
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
dchrono tmr start
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
dchrono tmr start
for {set i 1} {$i < 100} {incr i} {
- meshselmode m 1
- meshselmode m -1
+ vselmode m 1 1
+ vselmode m 0 0
}
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
dchrono tmr start
for {set i 1} {$i < 100} {incr i} {
- meshselmode m 8
- meshselmode m -1
+ vselmode m 8 1
+ vselmode m 0 0
}
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
dchrono tmr start
for {set i 1} {$i < 100} {incr i} {
- meshselmode m 0
- meshselmode m -1
+ vselmode m 0 1
+ vselmode m 0 0
}
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
-meshselmode m 0
+vselmode m 0 1
dchrono tmr start
set dispmode 2
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
-meshselmode m 0
+vselmode m 0 1
dchrono tmr start
set dispmode 3
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
-meshselmode m 0
+vselmode m 0 1
dchrono tmr start
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
-
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
-
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
-
-meshselmode m 0
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
+
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
+
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
+
+vselmode m 0 1
dchrono tmr start
set dispmode 2
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
-
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
-
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
-
-meshselmode m 0
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
+
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
+
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
+
+vselmode m 0 1
dchrono tmr start
set dispmode 3
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
-
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
-
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
-
-meshselmode m 0
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
+
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
+
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
+
+vselmode m 0 1
dchrono tmr start
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
-meshselmode m 1
+vselmode m 1 1
dchrono tmr start
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
-meshselmode m 8
+vselmode m 8 1
dchrono tmr start
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
-
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
-
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
-
-meshselmode m 1
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
+
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
+
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
+
+vselmode m 1 1
dchrono tmr start
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
-
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
-
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
-
-meshselmode m 8
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
+
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
+
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
+
+vselmode m 8 1
dchrono tmr start
pload XSDRAW
vinit
-meshdispmode m 2
+vsetdispmode m 2
meshfromstl m [locate_data_file b.stl]
meshfromstl m2 [locate_data_file b2.stl]
vtrihedron tri
set dispmode 2
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
vzoom 0.5
vtrihedron tri
set dispmode 3
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
vzoom 0.5
vtrihedron tri
set dispmode 1
-meshdispmode m ${dispmode}
-meshdispmode m2 ${dispmode}
-meshdispmode m3 ${dispmode}
-meshdispmode m4 ${dispmode}
-meshdispmode m5 ${dispmode}
-meshdispmode m6 ${dispmode}
-meshdispmode m7 ${dispmode}
-meshdispmode m8 ${dispmode}
-meshdispmode m9 ${dispmode}
+vsetdispmode m ${dispmode}
+vsetdispmode m2 ${dispmode}
+vsetdispmode m3 ${dispmode}
+vsetdispmode m4 ${dispmode}
+vsetdispmode m5 ${dispmode}
+vsetdispmode m6 ${dispmode}
+vsetdispmode m7 ${dispmode}
+vsetdispmode m8 ${dispmode}
+vsetdispmode m9 ${dispmode}
-meshdispmode m11 ${dispmode}
-meshdispmode m12 ${dispmode}
-meshdispmode m13 ${dispmode}
-meshdispmode m14 ${dispmode}
-meshdispmode m15 ${dispmode}
-meshdispmode m16 ${dispmode}
-meshdispmode m17 ${dispmode}
-meshdispmode m18 ${dispmode}
-meshdispmode m19 ${dispmode}
+vsetdispmode m11 ${dispmode}
+vsetdispmode m12 ${dispmode}
+vsetdispmode m13 ${dispmode}
+vsetdispmode m14 ${dispmode}
+vsetdispmode m15 ${dispmode}
+vsetdispmode m16 ${dispmode}
+vsetdispmode m17 ${dispmode}
+vsetdispmode m18 ${dispmode}
+vsetdispmode m19 ${dispmode}
-meshdispmode m21 ${dispmode}
-meshdispmode m22 ${dispmode}
-meshdispmode m23 ${dispmode}
-meshdispmode m24 ${dispmode}
-meshdispmode m25 ${dispmode}
-meshdispmode m26 ${dispmode}
-meshdispmode m27 ${dispmode}
-meshdispmode m28 ${dispmode}
-meshdispmode m29 ${dispmode}
+vsetdispmode m21 ${dispmode}
+vsetdispmode m22 ${dispmode}
+vsetdispmode m23 ${dispmode}
+vsetdispmode m24 ${dispmode}
+vsetdispmode m25 ${dispmode}
+vsetdispmode m26 ${dispmode}
+vsetdispmode m27 ${dispmode}
+vsetdispmode m28 ${dispmode}
+vsetdispmode m29 ${dispmode}
vzoom 0.5
puts "Object haves wireframe mode"
-meshdispmode m 1
+vsetdispmode m 1
dchrono tmr start
puts "Object haves shading mode"
-meshdispmode m 2
+vsetdispmode m 2
dchrono tmr start
puts "Object haves shrink mode"
-meshdispmode m 3
+vsetdispmode m 3
dchrono tmr start
puts "Object haves wireframe mode"
-meshdispmode m 1
+vsetdispmode m 1
dchrono tmr start
for {set i 1} {$i < 100} {incr i} {
- meshselmode m 1
- meshselmode m -1
+ vselmode m 1 1
+ vselmode m 0 0
}
puts "Object haves wireframe mode"
-meshdispmode m 1
+vsetdispmode m 1
dchrono tmr start
for {set i 1} {$i < 100} {incr i} {
- meshselmode m 8
- meshselmode m -1
+ vselmode m 8 1
+ vselmode m 0 0
}
puts "Object haves wireframe mode"
-meshdispmode m 1
+vsetdispmode m 1
dchrono tmr start
for {set i 1} {$i < 100} {incr i} {
- meshselmode m 0
- meshselmode m -1
+ vselmode m 0 1
+ vselmode m 0 0
}
puts "Object haves wireframe mode"
-meshdispmode m 1
-meshselmode m 0
+vsetdispmode m 1
+vselmode m 0 1
dchrono tmr start
puts "Object haves shading mode"
-meshdispmode m 2
-meshselmode m 0
+vsetdispmode m 2
+vselmode m 0 1
dchrono tmr start
puts "Object haves shrink mode"
-meshdispmode m 3
-meshselmode m 0
+vsetdispmode m 3
+vselmode m 0 1
dchrono tmr start
puts "Object haves wireframe mode"
-meshdispmode m 1
-meshselmode m 0
+vsetdispmode m 1
+vselmode m 0 1
dchrono tmr start
puts "Object haves shading mode"
-meshdispmode m 2
-meshselmode m 0
+vsetdispmode m 2
+vselmode m 0 1
dchrono tmr start
puts "Object haves shrink mode"
-meshdispmode m 3
-meshselmode m 0
+vsetdispmode m 3
+vselmode m 0 1
dchrono tmr start
puts "Object haves wireframe mode"
-meshdispmode m 1
-meshselmode m 1
+vsetdispmode m 1
+vselmode m 1 1
dchrono tmr start
puts "Object haves wireframe mode"
-meshdispmode m 1
-meshselmode m 8
+vsetdispmode m 1
+vselmode m 8 1
dchrono tmr start
puts "Object haves wireframe mode"
-meshdispmode m 1
-meshselmode m 1
+vsetdispmode m 1
+vselmode m 1 1
dchrono tmr start
puts "Object haves wireframe mode"
-meshdispmode m 1
-meshselmode m 8
+vsetdispmode m 1
+vselmode m 8 1
dchrono tmr start
vinit
meshfromstl m [locate_data_file b.stl]
vtrihedron tri
-meshdispmode m 2
+vsetdispmode m 2
vzoom 0.1
vinit
meshfromstl m [locate_data_file b.stl]
vtrihedron tri
-meshdispmode m 3
+vsetdispmode m 3
vzoom 0.1
vinit
meshfromstl m [locate_data_file b.stl]
vtrihedron tri
-meshdispmode m 1
+vsetdispmode m 1
vzoom 0.1
catch { vfit }
-if { ![info exists to_dump_screen] && [ catch { vdump $imagedir/${test_image}.png } catch_result ] } {
- puts $catch_result
+if { ![info exists subgroup] || $subgroup != "mesh" } {
+ if { ![info exists to_dump_screen] && [ catch { vdump $imagedir/${test_image}.png } catch_result ] } {
+ puts $catch_result
+ }
}
catch { vglinfo }
--- /dev/null
+vclear
+meshfromstl m [locate_data_file b.stl]
+vselmode m 8 1
+vselect 150 100 1
+vselect 200 200 1
+vselect 250 250 1
+vselect 200 100 1
+vselect 250 100 1
+meshhidesel m
+vrotate -0.9 0 0
+vdump $::imagedir/${::casename}.png
--- /dev/null
+vclear
+meshfromstl m [locate_data_file b.stl]
+vselmode m 8 1
+vselect 150 100 1
+vselect 200 200 1
+vselect 250 250 1
+vselect 200 100 1
+vselect 250 100 1
+meshshowsel m
+vdump $::imagedir/${::casename}.png
--- /dev/null
+vclear
+meshfromstl m [locate_data_file b.stl]
+vselmode m 1 1
+vselect 0 0 500 500
+meshshowsel m
+vdump $::imagedir/${::casename}.png
--- /dev/null
+vclear
+meshfromstl m [locate_data_file b.stl]
+meshshowall m
+vselmode m 1 1
+vselect 0 0 250 200
+meshhidesel m
+vdump $::imagedir/${::casename}.png
--- /dev/null
+vclear
+meshfromstl m1 [locate_data_file b.stl]
+meshfromstl m2 [locate_data_file b2.stl]
+meshfromstl m3 [locate_data_file b3.stl]
+vsetdispmode m1 2
+vsetdispmode m2 3
+vdump $::imagedir/${::casename}_dsd.png
+meshhide m3
+vdump $::imagedir/${::casename}_hdn.png
--- /dev/null
+vclear
+meshfromstl m1 [locate_data_file b.stl]
+meshfromstl m2 [locate_data_file bug24961_m.stl]
+meshfromstl m3 [locate_data_file b2.stl]
+meshfromstl m4 [locate_data_file b3.stl]
+meshcolors m1 elem1 0
+meshcolors m2 elem2 0
+meshcolors m3 nodal 1
+meshcolors m4 nodaltex 1
+vdump $::imagedir/${::casename}.png
--- /dev/null
+meshfromstl m [locate_data_file b.stl]
+meshtext m
+vsetdispmode m 33
+vrotate 0.3 0 0
+vdump $::imagedir/${::casename}_txt.png
+meshvectors m -mode elem -maxlen 10 -color green -arrowpart 0.5 -issipmle 0
+vsetdispmode m 5
+vdump $::imagedir/${::casename}_vct1.png
+meshvectors m -mode nodal -maxlen 20 -color white -issimple 1
+vfit
+vdump $::imagedir/${::casename}_vct2.png
--- /dev/null
+vclear
+meshfromstl m [locate_data_file bug24961_m.stl]
+meshdeform m -mode on -scale 20
+vdump $::imagedir/${::casename}.png
--- /dev/null
+vclear
+mesh3delem m
+vrotate 1.5 0 0
+vrotate 0 0.5 0
+vdump $::imagedir/${::casename}_crtd.png
+vsetdispmode m 2
+vdump $::imagedir/${::casename}_m2.png
+vsetdispmode m 3
+vdump $::imagedir/${::casename}_m3.png
+meshhide m
+vdump $::imagedir/${::casename}_hdn.png
--- /dev/null
+vclear
+mesh3delem m
+vrotate 1.5 0 0
+vrotate 0 0.5 0
+vselmode m 16 1
+vselect 200 200 1
+vselect 200 300 1
+meshhidesel m
+vdump $::imagedir/${::casename}.png
--- /dev/null
+vclear
+mesh3delem m
+vrotate 1.5 0 0
+vrotate 0 0.5 0
+vselmode m 16 1
+vselect 200 200 1
+vselect 200 300 1
+meshshowsel m
+vdump $::imagedir/${::casename}.png
--- /dev/null
+vclear
+mesh3delem m
+vrotate 1.5 0 0
+vrotate 0 0.5 0
+vselmode m 1 1
+vselect 0 0 300 200
+meshshowsel m
+vdump $::imagedir/${::casename}.png
--- /dev/null
+vclear
+mesh3delem m
+vrotate 1.5 0 0
+vrotate 0 0.5 0
+meshshowall m
+vselmode m 1 1
+vselect 0 0 300 200
+meshhidesel m
+vdump $::imagedir/${::casename}.png
--- /dev/null
+vclear
+mesh3delem m
+vrotate 1.5 0 0
+vrotate 0 0.5 0
+meshcolors m elem1 0
+vdump $::imagedir/${::casename}_el1.png
+meshcolors m nodal 1
+vdump $::imagedir/${::casename}_nd.png
+meshcolors m nodaltex 1
+vdump $::imagedir/${::casename}_ndtx.png
--- /dev/null
+vclear
+mesh3delem m
+vrotate 1.5 0 0
+vrotate 0 0.5 0
+meshtext m
+vsetdispmode m 33
+vdump $::imagedir/${::casename}_txt.png
+meshvectors m -mode elem -maxlen 10 -color green -arrowpart 0.5 -issipmle 0
+vsetdispmode m 5
+vdump $::imagedir/${::casename}_vct1.png
+meshvectors m -mode nodal -maxlen 20 -color white -issimple 1
+vfit
+vdump $::imagedir/${::casename}_vct2.png
--- /dev/null
+vclear
+mesh3delem m
+vrotate 1.5 0 0
+vrotate 0 0.5 0
+meshdeform m -mode on -scale 20
+vrotate 0 -0.7 0
+vdump $::imagedir/${::casename}.png
--- /dev/null
+set subgroup "mesh"
+pload XSDRAW
+vinit
\ No newline at end of file