|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
|
|
namespace GeoSigmaViewer
|
|
|
|
|
|
{
|
|
|
|
|
|
public class DrawTool
|
|
|
|
|
|
{
|
|
|
|
|
|
private Cursor cursor;
|
|
|
|
|
|
protected Drawer drawer;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Tool cursor.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public Cursor ToolCursor
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return cursor; }
|
|
|
|
|
|
set { cursor=value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Drawer SigmaDrawer
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return drawer; }
|
|
|
|
|
|
set { drawer = value; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public DrawItemType ItemType { get; set; }
|
|
|
|
|
|
private bool _EnableEnd = true;
|
|
|
|
|
|
public bool EnableEnd { get { return _EnableEnd; } set { _EnableEnd=value; } }
|
|
|
|
|
|
public virtual void Start()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
public virtual void End()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
public virtual void Execute(string cmdString)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Left nous button is pressed
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="drawArea"></param>
|
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
|
public virtual void OnLButtonDown(Drawer drawArea, MouseEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
public virtual void OnMouseClick(Drawer drawArea, MouseEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Mouse is moved, left mouse button is pressed or none button is pressed
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="drawArea"></param>
|
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
|
public virtual void OnMouseMove(Drawer drawArea, MouseEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Left mouse button is released
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="drawArea"></param>
|
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
|
public virtual void OnLButtonUp(Drawer drawArea, MouseEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
public virtual void Cancel(Drawer drawArea) { }
|
|
|
|
|
|
public virtual void OK(Drawer drawArea) { }
|
|
|
|
|
|
public virtual void EndObject(Drawer drawArea, MouseEventArgs e) { }
|
|
|
|
|
|
//protected Point GetEventPointInArea(WellViewer drawArea, MouseEventArgs e)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// Point p = new Point(Math.Abs(drawArea.AutoScrollPosition.X) + e.X, Math.Abs(drawArea.AutoScrollPosition.Y) + e.Y);
|
|
|
|
|
|
// string status = "X: " + p.X + ", Y: " + p.Y;
|
|
|
|
|
|
// //((MainForm)drawArea.Parent).SetStatusStrip(status);
|
|
|
|
|
|
// return p;
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
public enum DrawToolType
|
|
|
|
|
|
{
|
|
|
|
|
|
Default,
|
|
|
|
|
|
Select,
|
|
|
|
|
|
Pointer,
|
|
|
|
|
|
ViewPan,
|
|
|
|
|
|
ViewWindow,
|
|
|
|
|
|
Connection,
|
|
|
|
|
|
Convexity,
|
|
|
|
|
|
Model,
|
|
|
|
|
|
Fault,
|
|
|
|
|
|
FaultReverse,
|
|
|
|
|
|
Rectangle,
|
|
|
|
|
|
Ellipse,
|
|
|
|
|
|
Curve, //Line,
|
|
|
|
|
|
Arc,
|
|
|
|
|
|
Chord,
|
|
|
|
|
|
Pie,
|
|
|
|
|
|
Polygon,
|
|
|
|
|
|
Proportion, //比例尺
|
|
|
|
|
|
Point,
|
|
|
|
|
|
Text,
|
|
|
|
|
|
Equilateral, //等边多边形
|
|
|
|
|
|
RectangularCSGrid, //直角坐标网
|
|
|
|
|
|
BreakDirect, //直接打断
|
|
|
|
|
|
Break, //打断
|
|
|
|
|
|
Delete, //删除
|
|
|
|
|
|
DeleteIn, //删除区域内元素
|
|
|
|
|
|
DeleteOut, //删除区域外元素
|
|
|
|
|
|
NumberOfDrawTools
|
|
|
|
|
|
}
|
|
|
|
|
|
public enum DrawItemType
|
|
|
|
|
|
{
|
|
|
|
|
|
ITEM_DEFAULT = 999,
|
|
|
|
|
|
ITEM_VIEW_PAN = 1000,
|
|
|
|
|
|
ITEM_VIEW_WINDOW = 1001,
|
|
|
|
|
|
ITEM_STATE =1003, //状态
|
|
|
|
|
|
ITEM_ERASER=1004, //橡皮
|
|
|
|
|
|
ITEM_HYPERLINK=1005, //超级联接
|
|
|
|
|
|
ITEM_SELECT=1006, //元素选择
|
|
|
|
|
|
ITEM_RECTANGLE=1007, //画矩形
|
|
|
|
|
|
ITEM_CIRCLE=1008, //画圆
|
|
|
|
|
|
ITEM_GRID=1009, //坐标网
|
|
|
|
|
|
ITEM_MATRIX_MARK=1010, //矩阵符号
|
|
|
|
|
|
ITEM_CURVE=1011, //曲线
|
|
|
|
|
|
ITEM_LINK_CURVE=1012, //连接曲线
|
|
|
|
|
|
ITEM_SOLID=1013, //填充区域
|
|
|
|
|
|
ITEM_PUT_INTO_CURVE=1014, //内插曲线
|
|
|
|
|
|
ITEM_BREAK_CURVE=1015, //打断曲线
|
|
|
|
|
|
ITEM_IMAGE_TRACE=1016, //图像矢量化
|
|
|
|
|
|
ITEM_EXTEND_CURVE=1017, //曲线延伸
|
|
|
|
|
|
ITEM_TRIM_CURVE=1018, //剪切曲线
|
|
|
|
|
|
ITEM_PROPORTION=1019, //比例尺
|
|
|
|
|
|
ITEM_LINK_POINT=1020, //连接点成曲线
|
|
|
|
|
|
ITEM_2POINT_TO_RECT=1021, //连接两点成矩形
|
|
|
|
|
|
ITEM_3POINT_TO_RGN=1022, //连接三点成四边形
|
|
|
|
|
|
ITEM_ARC=1023, //插入弧、弦、饼
|
|
|
|
|
|
ITEM_EQUILATERAL=1024, //等边多边形
|
|
|
|
|
|
ITEM_IMAGE=1025, //图像
|
|
|
|
|
|
ITEM_MXN=1026, //SEGY类数据
|
|
|
|
|
|
ITEM_INSERT_DRAW=1027, //新符号
|
|
|
|
|
|
ITEM_POINT=1028, //点增加
|
|
|
|
|
|
ITEM_FRAME=1029, //边框
|
|
|
|
|
|
ITEM_TEXT=1030, //文字
|
|
|
|
|
|
ITEM_MESH =1031, //MESH文件
|
|
|
|
|
|
ITEM_ELLIPSE=1032, //椭圆
|
|
|
|
|
|
ITEM_NET=1034, //经纬度网
|
|
|
|
|
|
ITEM_REDUNDANT=1035, //曲线冗余
|
|
|
|
|
|
ITEM_SCALE_EMBELLISH=1036, //放缩比例
|
|
|
|
|
|
ITEM_SCALE_OBJECT=1037, //放缩元素
|
|
|
|
|
|
ITEM_SAVE_TO_MARK=1038, //保存为符号
|
|
|
|
|
|
ITEM_DELETE=1039, //删除
|
|
|
|
|
|
ITEM_FIND=1040, //查找\替换
|
|
|
|
|
|
ITEM_MATH_FIND =1041, //数学发现
|
|
|
|
|
|
ITEM_CLIPBOARD =1042, //剪切板COPY与PAST
|
|
|
|
|
|
ITEM_CURVE_PROCESS=1043, //曲线处理类
|
|
|
|
|
|
ITEM_POINT_PROCESS=1044, //点处理
|
|
|
|
|
|
ITEM_TEXT_EDIT=1045, //对文本数据的批量设置
|
|
|
|
|
|
ITEM_EXPRESSION=1046, //对x,y,z,l进行表达式计算
|
|
|
|
|
|
ITEM_ARC_EDIT=1047, //对弧、弦、饼进行编辑
|
|
|
|
|
|
ITEM_SELECT_ELEMENT=1048, //选择一个元素类
|
|
|
|
|
|
ITEM_SELECT_GOTO=1049, //选择转移
|
|
|
|
|
|
ITEM_CALIBRATE =1050, //校正
|
|
|
|
|
|
ITEM_SECTION=1051, //Section数据
|
|
|
|
|
|
ITEM_CHANGE_COLOR=1052, //改变颜色
|
|
|
|
|
|
ITEM_OPEN_FILE=1053, //打开文件
|
|
|
|
|
|
ITEM_BK_GRID=1054, //背景网格
|
|
|
|
|
|
ITEM_CURVE_EDIT=1055, //曲线编辑
|
|
|
|
|
|
ITEM_POINT_EDIT=1056, //点编辑
|
|
|
|
|
|
ITEM_WMF=1058, //WMF和EMF文件
|
|
|
|
|
|
ITEM_ALIGN=1059, //元素对齐处理
|
|
|
|
|
|
ITEM_CALIBRATE_LINE=1060, //直线校正
|
|
|
|
|
|
ITEM_ROTATE=1061, //旋转
|
|
|
|
|
|
ITEM_TOOLTIP=1062, //信息提示
|
|
|
|
|
|
ITEM_XPOINT_EDIT=1063, //x点编辑
|
|
|
|
|
|
ITEM_OLE=1064, //OLE元素
|
|
|
|
|
|
ITEM_INSERT_TABLE=1065, //插入表格
|
|
|
|
|
|
ITEM_STAT_ELEMENTS=1066, //统计元素
|
|
|
|
|
|
ITEM_MESH_PROCESS=1067, //曲面计算
|
|
|
|
|
|
ITEM_CUT_OUT=1068, //剪裁外部
|
|
|
|
|
|
ITEM_MATRIX_COPY=1069, //矩阵复制
|
|
|
|
|
|
ITEM_CURVE_INNAME=1070, //编辑曲线内部名字
|
|
|
|
|
|
ITEM_CURVE_NAME_AUTO=1071, //根据步长自动设置等值线名称
|
|
|
|
|
|
ITEM_CURVE_NAME_EXPRESSION=1072, //对曲线名称进行表达式运算
|
|
|
|
|
|
ITEM_MAKE_MARK=1073, //符号制作
|
|
|
|
|
|
ITEM_INSERT_OLD=1074, //老符号
|
|
|
|
|
|
ITEM_OTHER=1075, //其它的一些处理
|
|
|
|
|
|
ITEM_GET_RANGE=1076, //拾取区域
|
|
|
|
|
|
ITEM_MARK=1077, //导入编辑
|
|
|
|
|
|
ITEM_BREAK_CURVE_DIRECT=1078, //打断曲线
|
|
|
|
|
|
ITEM_SCALE=1079, //通过定置两条任意曲线拉伸元素
|
|
|
|
|
|
ITEM_CUT_IN=1080, //剪裁内部
|
|
|
|
|
|
ITEM_CURVE_CENTER_NAME=1081, //编辑曲线内部名字
|
|
|
|
|
|
ITEM_COPY_AS_IMAGE=1082, //编辑曲线内部名字
|
|
|
|
|
|
ITEM_SCALE_RULER=1083, //标尺编辑
|
|
|
|
|
|
ITEM_TRACE_TO_LOG=1084, //矢量化数据转换为测井数据
|
|
|
|
|
|
ITEM_CHANGE_LAYER =1085, //改变类别
|
|
|
|
|
|
ITEM_CROSSPOINT_EDIT=1086, //十字点编辑
|
|
|
|
|
|
ITEM_CROSSPOINT=1087, //十字点插入
|
|
|
|
|
|
ITEM_TWOPOINT_EDIT=1088, //分数点编辑
|
|
|
|
|
|
ITEM_TWOPOINT=1089, //分数点插入
|
|
|
|
|
|
ITEM_IMAGE_PROCESS=1090, //图像处理
|
|
|
|
|
|
ITEM_SOLID_LINK =1091, //连接曲线填充区域
|
|
|
|
|
|
ITEM_CURVE_Z_SETTING=1092, //根据步长自动设置曲线Z值
|
|
|
|
|
|
ITEM_BREAK_CONTOUR =1093, //打断等值线(结合逆断层)为了给断层内的等值线上虚线
|
|
|
|
|
|
ITEM_PATH_FILL=1094, //路径充填
|
|
|
|
|
|
|
|
|
|
|
|
ITEM_WELL =1095, //添加井
|
|
|
|
|
|
ITEM_ADD_WELL=1096, //编辑井
|
|
|
|
|
|
|
|
|
|
|
|
ITEM_CHART=1097, //添加图版
|
|
|
|
|
|
ITEM_CHARTEX =1098, //统计图
|
|
|
|
|
|
ITEM_CHARTEX_EDIT=1099,
|
|
|
|
|
|
|
|
|
|
|
|
ITEM_CREATE_CONTOUR=1100 //生成等值线
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|