1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-03 17:56:21 +03:00
luz paz a110c4a377 0031939: Coding - correction of spelling errors in comments [part 2]
Fix various typos

Fixed via `codespell v2.0.dev`
2020-11-30 14:04:03 +03:00

833 lines
28 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace IE_WPF_WinForms
{
public enum CurrentAction3d
{
CurAction3d_Nothing,
CurAction3d_DynamicZooming,
CurAction3d_WindowZooming,
CurAction3d_DynamicPanning,
CurAction3d_GlobalPanning,
CurAction3d_DynamicRotation
}
public enum CurrentPressedKey
{
CurPressedKey_Nothing,
CurPressedKey_Ctrl,
CurPressedKey_Shift
}
public enum ModelFormat
{
BREP,
STEP,
IGES,
VRML,
STL,
IMAGE
}
public enum DisplayMode
{
Wireframe,
Shading
}
public class OCCViewer : System.Windows.Forms.Form
{
public event EventHandler ZoomingFinished;
protected void RaiseZoomingFinished()
{
if ( ZoomingFinished != null )
{
ZoomingFinished( this, EventArgs.Empty );
}
}
public event EventHandler AvaliabiltyOfOperationsChanged;
protected void RaiseAvaliabiltyOfOperationsChanged()
{
if ( AvaliabiltyOfOperationsChanged != null )
{
AvaliabiltyOfOperationsChanged( this, EventArgs.Empty );
}
}
public OCCTProxy View { get; private set; }
public CurrentAction3d CurrentMode { get; private set; }
private CurrentPressedKey CurrentPressedKey { get; set; }
private bool IsRectVisible { get; set; }
public bool DegenerateMode { get; private set; }
public bool IsWireframeEnabled { get; private set; }
public bool IsShadingEnabled { get; private set; }
public bool IsTransparencyEnabled { get; private set; }
public bool IsColorEnabled { get; private set; }
public bool IsMaterialEnabled { get; private set; }
public bool IsDeleteEnabled { get; private set; }
private float myCurZoom;
private int myXmin;
private int myYmin;
private int myXmax;
private int myYmax;
private int myRectDownX;
private int myRectDownY;
private int myButtonDownX;
private int myButtonDownY;
private ContextMenu Popup { get; set; }
private MenuItem ContextWireframe;
private MenuItem ContextShading;
private MenuItem ContextColor;
private MenuItem ContextMaterial;
private MenuItem ContextDelete;
private MenuItem ContextBackground;
private MenuItem ContextTransparency;
public OCCViewer()
{
InitializeComponent();
View = new OCCTProxy();
View.InitOCCTProxy();
if ( !View.InitViewer( this.Handle ) )
{
MessageBox.Show( "Fatal Error during the graphic initialisation", "Error!" );
}
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
CurrentPressedKey = CurrentPressedKey.CurPressedKey_Nothing;
IsRectVisible = false;
DegenerateMode = true;
}
private void InitializeComponent()
{
ControlBox = false;
TopLevel = false;
this.ImeMode = System.Windows.Forms.ImeMode.NoControl;
SizeChanged += new System.EventHandler( OnSizeChanged );
Paint += new System.Windows.Forms.PaintEventHandler( OnPaint );
MouseDown += new System.Windows.Forms.MouseEventHandler( OnMouseDown );
MouseUp += new System.Windows.Forms.MouseEventHandler( OnMouseUp );
MouseMove += new System.Windows.Forms.MouseEventHandler( OnMouseMove );
Popup = new ContextMenu();
ContextWireframe = new MenuItem();
ContextShading = new MenuItem();
ContextColor = new MenuItem();
ContextMaterial = new MenuItem();
ContextTransparency = new MenuItem();
ContextDelete = new MenuItem();
ContextBackground = new MenuItem();
ContextWireframe.Text = "Wireframe";
ContextShading.Text = "Shading";
ContextColor.Text = "Color";
ContextMaterial.Text = "Material";
ContextTransparency.Text = "Transparency";
ContextDelete.Text = "Delete";
ContextBackground.Text = "Background";
ContextWireframe.Click += new System.EventHandler( ContextWireframe_Click );
ContextShading.Click += new System.EventHandler( ContextShading_Click );
ContextColor.Click += new System.EventHandler( ContextColor_Click );
ContextMaterial.Click += new System.EventHandler( ContextMaterial_Click );
ContextTransparency.Click += new System.EventHandler( ContextTransparency_Click );
ContextDelete.Click += new System.EventHandler( ContextDelete_Click );
ContextBackground.Click += new System.EventHandler( ContextBackground_Click );
Popup.MenuItems.AddRange( new MenuItem[] { ContextWireframe,
ContextShading,
ContextColor,
ContextMaterial,
ContextTransparency,
ContextDelete,
ContextBackground } );
Popup.Popup += new System.EventHandler( OnPopup );
}
private void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
View.RedrawView();
View.UpdateView();
}
private void OnSizeChanged(object sender, System.EventArgs e)
{
View.UpdateView();
}
public void ImportModel( ModelFormat theFormat )
{
int aFormat = 10;
OpenFileDialog anOpenDialog = new OpenFileDialog();
string aDataDir = Environment.GetEnvironmentVariable("CSF_OCCTDataPath");
string aFilter = "";
switch ( theFormat )
{
case ModelFormat.BREP:
anOpenDialog.InitialDirectory = (aDataDir + "\\occ");
aFormat = 0;
aFilter = "BREP Files (*.brep *.rle)|*.brep; *.rle";
break;
case ModelFormat.STEP:
anOpenDialog.InitialDirectory = (aDataDir + "\\step");
aFormat = 1;
aFilter = "STEP Files (*.stp *.step)|*.stp; *.step";
break;
case ModelFormat.IGES:
anOpenDialog.InitialDirectory = (aDataDir + "\\iges");
aFormat = 2;
aFilter = "IGES Files (*.igs *.iges)|*.igs; *.iges";
break;
default:
break;
}
anOpenDialog.Filter = aFilter + "|All files (*.*)|*.*";
if (anOpenDialog.ShowDialog() == DialogResult.OK)
{
string aFileName = anOpenDialog.FileName;
if (aFileName == "")
{
return;
}
Cursor = System.Windows.Forms.Cursors.WaitCursor;
if ( !View.TranslateModel( aFileName, aFormat, true ) )
{
MessageBox.Show( "Can't read this file", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning );
}
Cursor = System.Windows.Forms.Cursors.Default;
}
View.ZoomAllView();
}
public void ExportModel( ModelFormat theFormat )
{
int aFormat = 10;
SaveFileDialog saveDialog = new SaveFileDialog();
string aDataDir = Environment.GetEnvironmentVariable("CSF_OCCTDataPath");
string aFilter = "";
switch ( theFormat )
{
case ModelFormat.BREP:
saveDialog.InitialDirectory = ( aDataDir + "\\occ" );
aFormat = 0;
aFilter = "BREP Files (*.brep *.rle)|*.brep; *.rle";
break;
case ModelFormat.STEP:
saveDialog.InitialDirectory = ( aDataDir + "\\step" );
aFormat = 1;
aFilter = "STEP Files (*.stp *.step)|*.step; *.stp";
break;
case ModelFormat.IGES:
saveDialog.InitialDirectory = ( aDataDir + "\\iges" );
aFormat = 2;
aFilter = "IGES Files (*.igs *.iges)| *.iges; *.igs";
break;
case ModelFormat.VRML:
saveDialog.InitialDirectory = ( aDataDir + "\\vrml" );
aFormat = 3;
aFilter = "VRML Files (*.vrml)|*.vrml";
break;
case ModelFormat.STL:
saveDialog.InitialDirectory = ( aDataDir + "\\stl" );
aFormat = 4;
aFilter = "STL Files (*.stl)|*.stl";
break;
case ModelFormat.IMAGE:
saveDialog.InitialDirectory = ( aDataDir + "\\images" );
aFormat = 5;
aFilter = "Images Files (*.bmp)|*.bmp";
break;
default:
break;
}
saveDialog.Filter = aFilter;
if ( saveDialog.ShowDialog() == DialogResult.OK )
{
string aFileName = saveDialog.FileName;
if ( aFileName == "" )
{
return;
}
Cursor = System.Windows.Forms.Cursors.WaitCursor;
if ( !View.TranslateModel( aFileName, aFormat, false ) )
{
MessageBox.Show( "Can not write this file", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning );
}
Cursor = System.Windows.Forms.Cursors.Default;
}
}
public void FitAll()
{
View.ZoomAllView();
}
public void ZoomWindow()
{
CurrentMode = CurrentAction3d.CurAction3d_WindowZooming;
}
public void DynamicZooming()
{
CurrentMode = CurrentAction3d.CurAction3d_DynamicZooming;
}
public void DynamicPanning()
{
CurrentMode = CurrentAction3d.CurAction3d_DynamicPanning;
}
public void GlobalPanning()
{
myCurZoom = View.Scale();
CurrentMode = CurrentAction3d.CurAction3d_GlobalPanning;
}
public void AxoView()
{
View.AxoView();
}
public void FrontView()
{
View.FrontView();
}
public void TopView()
{
View.TopView();
}
public void LeftView()
{
View.LeftView();
}
public void BackView()
{
View.BackView();
}
public void RightView()
{
View.RightView();
}
public void Reset()
{
View.Reset();
}
public void BottomView()
{
View.BottomView();
}
public void HiddenOff()
{
View.SetDegenerateModeOff();
DegenerateMode = false;
}
public void HiddenOn()
{
View.SetDegenerateModeOn();
DegenerateMode = true;
}
public void DynamicRotation()
{
CurrentMode = CurrentAction3d.CurAction3d_DynamicRotation;
}
public void SelectionChanged()
{
switch ( View.DisplayMode() )
{
case -1:
IsShadingEnabled = false;
IsWireframeEnabled = false;
break;
case 0:
IsWireframeEnabled = false;
IsShadingEnabled = true;
IsTransparencyEnabled = false;
break;
case 1:
IsWireframeEnabled = true;
IsShadingEnabled = false;
IsTransparencyEnabled = true;
break;
case 10:
IsWireframeEnabled = true;
IsShadingEnabled = true;
IsTransparencyEnabled = true;
break;
default:
break;
}
if ( View.IsObjectSelected() )
{
IsColorEnabled = true;
IsMaterialEnabled = true;
IsDeleteEnabled = true;
}
else
{
IsColorEnabled = false;
IsMaterialEnabled = false;
IsTransparencyEnabled = false;
IsDeleteEnabled = false;
}
RaiseAvaliabiltyOfOperationsChanged();
}
public void ChangeColor( bool IsObjectColor )
{
int r, g, b;
if ( IsObjectColor )
{
r = View.GetObjColR();
g = View.GetObjColG();
b = View.GetObjColB();
}
else
{
r = View.GetBGColR();
g = View.GetBGColG();
b = View.GetBGColB();
}
System.Windows.Forms.ColorDialog ColDlg = new System.Windows.Forms.ColorDialog();
ColDlg.Color = System.Drawing.Color.FromArgb( r, g, b );
if ( ColDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK )
{
System.Drawing.Color c = ColDlg.Color;
r = c.R;
g = c.G;
b = c.B;
if ( IsObjectColor )
{
View.SetColor( r, g, b );
}
else
{
View.SetBackgroundColor( r, g, b );
}
}
View.UpdateCurrentViewer();
}
public void Wireframe()
{
View.SetDisplayMode( (int)DisplayMode.Wireframe );
View.UpdateCurrentViewer();
SelectionChanged();
RaiseZoomingFinished();
}
public void Shading()
{
View.SetDisplayMode( (int)DisplayMode.Shading );
View.UpdateCurrentViewer();
SelectionChanged();
RaiseZoomingFinished();
}
public void Color()
{
ChangeColor( true );
}
public void Background()
{
ChangeColor( false );
}
public void Material()
{
MaterialDlg aDlg = new MaterialDlg( View );
aDlg.ShowDialog();
}
public void Transparency()
{
TransparencyDialog dlg = new TransparencyDialog();
dlg.View = View;
dlg.ShowDialog( this );
}
public void Delete()
{
View.EraseObjects();
SelectionChanged();
}
public void OnKeyDown( System.Windows.Input.Key theKey )
{
if ( theKey == System.Windows.Input.Key.LeftShift ||
theKey == System.Windows.Input.Key.RightShift )
{
CurrentPressedKey = CurrentPressedKey.CurPressedKey_Shift;
}
else if (theKey == System.Windows.Input.Key.LeftCtrl ||
theKey == System.Windows.Input.Key.RightCtrl )
{
CurrentPressedKey = CurrentPressedKey.CurPressedKey_Ctrl;
}
}
public void OnKeyUp()
{
CurrentPressedKey = CurrentPressedKey.CurPressedKey_Nothing;
}
protected void MultiDragEvent( int x, int y, int theState )
{
if ( theState == -1 ) //mouse is down
{
myButtonDownX = x;
myButtonDownY = y;
}
else if ( theState == 1) //mouse is up
{
View.ShiftSelect( Math.Min( myButtonDownX, x ), Math.Min( myButtonDownY, y ),
Math.Max( myButtonDownX, x ), Math.Max( myButtonDownY, y ) );
}
}
protected void DragEvent( int x, int y, int theState )
{
if ( theState == -1 ) //mouse is down
{
myButtonDownX = x;
myButtonDownY = y;
}
else if ( theState == 1 ) //mouse is up
{
View.Select( Math.Min( myButtonDownX, x ), Math.Min( myButtonDownY, y ),
Math.Max( myButtonDownX, x ), Math.Max( myButtonDownY, y ) );
}
}
private void DrawRectangle( bool draw )
{
System.Drawing.Graphics gr = System.Drawing.Graphics.FromHwnd(Handle);
System.Drawing.Pen p = null;
if ( IsRectVisible || !draw )//erase the rect
{
int r = View.GetBGColR();
int g = View.GetBGColG();
int b = View.GetBGColB();
p = new System.Drawing.Pen( System.Drawing.Color.FromArgb(r, g, b) );
IsRectVisible = false;
View.UpdateView();
}
else if ( draw )
{
p = new System.Drawing.Pen( System.Drawing.Color.White );
IsRectVisible = true;
}
if ( p == null )
{
return;
}
int x = Math.Min( myXmin, myXmax );
int y = Math.Min( myYmin, myYmax );
gr.DrawRectangle( p, x, y, Math.Abs(myXmax - myXmin), Math.Abs(myYmax - myYmin) );
myRectDownX = Math.Max( myXmin, myXmax );
myRectDownY = Math.Max( myYmin, myYmax );
}
private void OnMouseDown( object sender, System.Windows.Forms.MouseEventArgs e )
{
if ( e.Button == MouseButtons.Left )
{
myXmin = e.X;
myXmax = e.X;
myYmin = e.Y;
myYmax = e.Y;
if ( CurrentPressedKey == CurrentPressedKey.CurPressedKey_Ctrl )
{
// start the dynamic zooming....
CurrentMode = CurrentAction3d.CurAction3d_DynamicZooming;
}
else
{
switch ( CurrentMode )
{
case CurrentAction3d.CurAction3d_Nothing:
if ( CurrentPressedKey == CurrentPressedKey.CurPressedKey_Shift )
{
MultiDragEvent( myXmax, myYmax, -1 );
}
else
{
DragEvent( myXmax, myYmax, -1 );
}
break;
case CurrentAction3d.CurAction3d_DynamicRotation:
if ( !DegenerateMode )
{
View.SetDegenerateModeOn();
}
View.StartRotation( e.X, e.Y );
break;
case CurrentAction3d.CurAction3d_WindowZooming:
Cursor = Cursors.Hand;
break;
default:
break;
}
}
}
else if ( e.Button == MouseButtons.Right )
{
if ( CurrentPressedKey == CurrentPressedKey.CurPressedKey_Ctrl )
{
if ( !DegenerateMode )
{
View.SetDegenerateModeOn();
}
View.StartRotation( e.X, e.Y );
}
else
{
Popup.Show( this, new System.Drawing.Point( e.X, e.Y ) );
}
}
}
private void OnMouseUp( object sender, System.Windows.Forms.MouseEventArgs e )
{
if ( e.Button == MouseButtons.Left )
{
if ( CurrentPressedKey == CurrentPressedKey.CurPressedKey_Ctrl )
{
return;
}
switch ( CurrentMode )
{
case CurrentAction3d.CurAction3d_Nothing:
if ( e.X == myXmin && e.Y == myYmin )
{
myXmax = e.X;
myYmax = e.Y;
if ( CurrentPressedKey == CurrentPressedKey.CurPressedKey_Shift )
{
View.ShiftSelect();
}
else
{
View.Select();
}
}
else
{
myXmax = e.X;
myYmax = e.Y;
DrawRectangle( false );
if ( CurrentPressedKey == CurrentPressedKey.CurPressedKey_Shift )
{
MultiDragEvent( myXmax, myYmax, 1 );
}
else
{
DragEvent( myXmax, myYmax, 1 );
}
}
break;
case CurrentAction3d.CurAction3d_DynamicZooming:
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
break;
case CurrentAction3d.CurAction3d_WindowZooming:
myXmax = e.X;
myYmax = e.Y;
DrawRectangle( false );
int ValZWMin = 1;
if ( Math.Abs(myXmax - myXmin) > ValZWMin &&
Math.Abs(myXmax - myYmax) > ValZWMin )
{
View.WindowFitAll( myXmin, myYmin, myXmax, myYmax );
}
Cursor = Cursors.Arrow;
RaiseZoomingFinished();
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
break;
case CurrentAction3d.CurAction3d_DynamicPanning:
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
break;
case CurrentAction3d.CurAction3d_GlobalPanning:
View.Place( e.X, e.Y, myCurZoom );
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
break;
case CurrentAction3d.CurAction3d_DynamicRotation:
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
if ( !DegenerateMode )
{
View.SetDegenerateModeOff();
}
else
{
View.SetDegenerateModeOn();
}
break;
default:
break;
}
}
else if ( e.Button == MouseButtons.Right )
{
if ( !DegenerateMode )
{
View.SetDegenerateModeOff();
}
else
{
View.SetDegenerateModeOn();
}
}
SelectionChanged();
}
private void OnMouseMove( object sender, System.Windows.Forms.MouseEventArgs e )
{
if ( e.Button == MouseButtons.Left ) //left button is pressed
{
if ( CurrentPressedKey == CurrentPressedKey.CurPressedKey_Ctrl )
{
View.Zoom(myXmax, myYmax, e.X, e.Y);
myXmax = e.X;
myYmax = e.Y;
}
else
{
switch ( CurrentMode )
{
case CurrentAction3d.CurAction3d_Nothing:
DrawRectangle( false );
myXmax = e.X;
myYmax = e.Y;
DrawRectangle( true );
break;
case CurrentAction3d.CurAction3d_DynamicZooming:
View.Zoom( myXmax, myYmax, e.X, e.Y );
myXmax = e.X;
myYmax = e.Y;
break;
case CurrentAction3d.CurAction3d_WindowZooming:
DrawRectangle( false );
myXmax = e.X;
myYmax = e.Y;
DrawRectangle( true );//add brush here
break;
case CurrentAction3d.CurAction3d_DynamicPanning:
View.Pan( e.X - myXmax, myYmax - e.Y );
myXmax = e.X;
myYmax = e.Y;
break;
case CurrentAction3d.CurAction3d_GlobalPanning:
break;
case CurrentAction3d.CurAction3d_DynamicRotation:
View.Rotation( e.X, e.Y );
View.RedrawView();
break;
default:
break;
}
}
}
else if ( e.Button == MouseButtons.Middle ) //middle button is pressed
{
if ( CurrentPressedKey == CurrentPressedKey.CurPressedKey_Ctrl )
{
View.Pan( e.X - myXmax, myYmax - e.Y );
myXmax = e.X;
myYmax = e.Y;
}
}
else if ( e.Button == MouseButtons.Right ) //right button is pressed
{
if ( CurrentPressedKey == CurrentPressedKey.CurPressedKey_Ctrl)
{
View.Rotation( e.X, e.Y );
}
}
else // no buttons are pressed
{
myXmax = e.X;
myYmax = e.Y;
View.MoveTo( e.X, e.Y );
}
}
private void OnPopup( object sender, System.EventArgs e )
{
ContextWireframe.Enabled = IsWireframeEnabled;
ContextShading.Enabled = IsShadingEnabled;
ContextColor.Enabled = IsColorEnabled;
ContextMaterial.Enabled = IsMaterialEnabled;
ContextDelete.Enabled = IsDeleteEnabled;
ContextTransparency.Enabled = IsTransparencyEnabled;
ContextBackground.Enabled = true;
}
private void ContextWireframe_Click( object sender, System.EventArgs e )
{
Wireframe();
}
private void ContextShading_Click( object sender, System.EventArgs e )
{
Shading();
}
private void ContextColor_Click( object sender, System.EventArgs e )
{
Color();
}
private void ContextMaterial_Click( object sender, System.EventArgs e )
{
Material();
}
private void ContextTransparency_Click( object sender, System.EventArgs e )
{
Transparency();
}
private void ContextDelete_Click( object sender, System.EventArgs e )
{
Delete();
}
private void ContextBackground_Click( object sender, System.EventArgs e )
{
Background();
}
}
}