EntitiesCreator
Posted: 20 Nov 2008, 16:51
Hello,
I need to allow user to add lines and texts in editor. So i would like to use the class EntitiesCreator.
I read sample EditorDemo and i copy codes in my application but when i click in map nothing appear, i don't get start of line.
So i badly use EntitiesCreator but i don't find what is missing.
I join a simple sample, could you say me what is missing.
Other questions, how can i choose color and thickness of the line, rectangle, polyline, etc..
Best regards, yannick
public partial class frmEditor : Form
{
public frmEditor()
{
InitializeComponent();
Init();
LoadMap();
}
#region VAR
private CADImport.CADImage cadImage;
private System.Drawing.SizeF visibleArea;
private bool useDoubleBuffering;
private CADImport.FaceModule.ClipRect clipRectangle;
private System.Drawing.PointF pos;
protected CADPictureBox cadPictBox = null;
private System.Windows.Forms.PropertyGrid propGrid;
protected EntitiesCreator entCreator;
#endregion VAR
protected void Init()
{
cadPictBox = new CADPictureBox();
cadPictBox.BackColor = Color.Black;
cadPictBox.Dock = DockStyle.Fill;
this.Controls.Add(cadPictBox);
propGrid = new PropertyGrid();
CADImportFace.EntityPropertyGrid = this.propGrid;
this.cadPictBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.cadPictBox_MouseDown);
this.cadPictBox.Paint += new PaintEventHandler(cadPictureBox_Paint);
this.clipRectangle = new ClipRect(this.cadPictBox);
this.clipRectangle.MultySelect = false;
}
protected void LoadMap()
{
string sCompletMapFileName = @"D:\STARVW\Carte\CONDORCET.dwg";
this.cadImage = CADImage.CreateImageByExtension(sCompletMapFileName);
cadImage.LoadFromFile(sCompletMapFileName);
cadPictBox.Focus();
VisibleAreaSize = cadPictBox.Size;
ResetScaling();
cadImage.SetCurrentLayout(0);
cadImage.DefaultLayoutIndex = 0;
cadPictBox.Enabled = true;
cadImage.UseWinEllipse = false;
cadImage.IsShowLineWeight = false;
useDoubleBuffering = false;
cadImage.UseDoubleBuffering = useDoubleBuffering;
cadImage.DrawMode = CADDrawMode.Normal;
this.cadImage.IsDraw3DAxes = false;
cadImage.SelectionMode = SelectionEntityMode.Enabled;
ObjEntity.cadImage = cadImage;
ObjEntity.propGrid = this.propGrid;
this.entCreator = new EntitiesCreator(this.cadPictBox, Color.White);
this.entCreator.Image = this.cadImage;
cadImage.SelectionMode = SelectionEntityMode.Enabled;
cadImage.UseDoubleBuffering = false;
this.cadPictBox.Invalidate();
}
private void cadPictBox_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
try
{
CreatorType seltp = CreatorType.Line;
this.entCreator.EnableCreator(seltp);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
void cadPictureBox_Paint(object sender, PaintEventArgs e)
{
if (cadImage == null) return;
DrawCADImage(e.Graphics);
}
public void DrawCADImage(Graphics gr)
{
try
{
Cursor curs = Cursor.Current;
//Shift();
RectangleF tmp = ImageRectangleF;
SetSizePictureBox(new Size((int)tmp.Width, (int)tmp.Height));
cadImage.Draw(gr, tmp);
Cursor.Current = Cursors.Default;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
protected void ResetScaling()
{
LeftImagePosition = (cadPictBox.ClientRectangle.Width - VisibleAreaSize.Width) / 2.0f;
TopImagePosition = (cadPictBox.ClientRectangle.Height - VisibleAreaSize.Height) / 2.0f;
cadPictBox.Invalidate();
}
/*private void Shift()
{
LeftImagePosition = PreviousPosition.X - (PreviousPosition.X - LeftImagePosition) * ImageScale / ImagePreviousScale;
TopImagePosition = PreviousPosition.Y - (PreviousPosition.Y - TopImagePosition) * ImageScale / ImagePreviousScale;
ImagePreviousScale = ImageScale;
}*/
protected float ImageScale
{
get
{
return 1.0f;
}
}
protected float ImagePreviousScale
{
get
{
return 1.0f;
}
}
public void SetSizePictureBox(Size sz)
{
this.cadPictBox.SetVirtualSizeNoInvalidate(sz);
}
protected RectangleF ImageRectangleF
{
get
{
return new RectangleF(this.LeftImagePosition, this.TopImagePosition,
VisibleAreaSize.Width * ImageScale, VisibleAreaSize.Height * ImageScale);
}
}
protected SizeF VisibleAreaSize
{
get
{
return this.visibleArea;
}
set
{
this.visibleArea = value;
}
}
protected float LeftImagePosition
{
get
{
return this.pos.X;
}
set
{
this.pos.X = value;
}
}
protected float TopImagePosition
{
get
{
return this.pos.Y;
}
set
{
this.pos.Y = value;
}
}
}
I need to allow user to add lines and texts in editor. So i would like to use the class EntitiesCreator.
I read sample EditorDemo and i copy codes in my application but when i click in map nothing appear, i don't get start of line.
So i badly use EntitiesCreator but i don't find what is missing.
I join a simple sample, could you say me what is missing.
Other questions, how can i choose color and thickness of the line, rectangle, polyline, etc..
Best regards, yannick
public partial class frmEditor : Form
{
public frmEditor()
{
InitializeComponent();
Init();
LoadMap();
}
#region VAR
private CADImport.CADImage cadImage;
private System.Drawing.SizeF visibleArea;
private bool useDoubleBuffering;
private CADImport.FaceModule.ClipRect clipRectangle;
private System.Drawing.PointF pos;
protected CADPictureBox cadPictBox = null;
private System.Windows.Forms.PropertyGrid propGrid;
protected EntitiesCreator entCreator;
#endregion VAR
protected void Init()
{
cadPictBox = new CADPictureBox();
cadPictBox.BackColor = Color.Black;
cadPictBox.Dock = DockStyle.Fill;
this.Controls.Add(cadPictBox);
propGrid = new PropertyGrid();
CADImportFace.EntityPropertyGrid = this.propGrid;
this.cadPictBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.cadPictBox_MouseDown);
this.cadPictBox.Paint += new PaintEventHandler(cadPictureBox_Paint);
this.clipRectangle = new ClipRect(this.cadPictBox);
this.clipRectangle.MultySelect = false;
}
protected void LoadMap()
{
string sCompletMapFileName = @"D:\STARVW\Carte\CONDORCET.dwg";
this.cadImage = CADImage.CreateImageByExtension(sCompletMapFileName);
cadImage.LoadFromFile(sCompletMapFileName);
cadPictBox.Focus();
VisibleAreaSize = cadPictBox.Size;
ResetScaling();
cadImage.SetCurrentLayout(0);
cadImage.DefaultLayoutIndex = 0;
cadPictBox.Enabled = true;
cadImage.UseWinEllipse = false;
cadImage.IsShowLineWeight = false;
useDoubleBuffering = false;
cadImage.UseDoubleBuffering = useDoubleBuffering;
cadImage.DrawMode = CADDrawMode.Normal;
this.cadImage.IsDraw3DAxes = false;
cadImage.SelectionMode = SelectionEntityMode.Enabled;
ObjEntity.cadImage = cadImage;
ObjEntity.propGrid = this.propGrid;
this.entCreator = new EntitiesCreator(this.cadPictBox, Color.White);
this.entCreator.Image = this.cadImage;
cadImage.SelectionMode = SelectionEntityMode.Enabled;
cadImage.UseDoubleBuffering = false;
this.cadPictBox.Invalidate();
}
private void cadPictBox_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
try
{
CreatorType seltp = CreatorType.Line;
this.entCreator.EnableCreator(seltp);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
void cadPictureBox_Paint(object sender, PaintEventArgs e)
{
if (cadImage == null) return;
DrawCADImage(e.Graphics);
}
public void DrawCADImage(Graphics gr)
{
try
{
Cursor curs = Cursor.Current;
//Shift();
RectangleF tmp = ImageRectangleF;
SetSizePictureBox(new Size((int)tmp.Width, (int)tmp.Height));
cadImage.Draw(gr, tmp);
Cursor.Current = Cursors.Default;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
protected void ResetScaling()
{
LeftImagePosition = (cadPictBox.ClientRectangle.Width - VisibleAreaSize.Width) / 2.0f;
TopImagePosition = (cadPictBox.ClientRectangle.Height - VisibleAreaSize.Height) / 2.0f;
cadPictBox.Invalidate();
}
/*private void Shift()
{
LeftImagePosition = PreviousPosition.X - (PreviousPosition.X - LeftImagePosition) * ImageScale / ImagePreviousScale;
TopImagePosition = PreviousPosition.Y - (PreviousPosition.Y - TopImagePosition) * ImageScale / ImagePreviousScale;
ImagePreviousScale = ImageScale;
}*/
protected float ImageScale
{
get
{
return 1.0f;
}
}
protected float ImagePreviousScale
{
get
{
return 1.0f;
}
}
public void SetSizePictureBox(Size sz)
{
this.cadPictBox.SetVirtualSizeNoInvalidate(sz);
}
protected RectangleF ImageRectangleF
{
get
{
return new RectangleF(this.LeftImagePosition, this.TopImagePosition,
VisibleAreaSize.Width * ImageScale, VisibleAreaSize.Height * ImageScale);
}
}
protected SizeF VisibleAreaSize
{
get
{
return this.visibleArea;
}
set
{
this.visibleArea = value;
}
}
protected float LeftImagePosition
{
get
{
return this.pos.X;
}
set
{
this.pos.X = value;
}
}
protected float TopImagePosition
{
get
{
return this.pos.Y;
}
set
{
this.pos.Y = value;
}
}
}