关于Geometry下Point3d实例返回值是否为空的判断方法
2010-10-28 14:09
169 查看
问题说明:
在c#中,定义一个Geometry.point3d,然后用ed.getpoint 方法获取CAD文档屏幕上的点.如果我在获取时不想选点,也不输入坐标.以下面实例化一个点Point3d TmpPt为例:PromptPointOptions promptPtOp = new PromptPointOptions(prompt);
PromptPointResult resPt;
resPt = ed.GetPoint(promptPtOp);
//实例化一个点Point3d TmpPt
Point3d TmpPt;
//正常输入情况下
if (resPt.Status == PromptStatus.OK)
{
//正常输入可以得到值。
TmpPt = resPt.Value;
}
//如果
else if (resPt.Status == PromptStatus.Cancel)//用户取消
{
//ed.WriteMessage("用户按了取消ESC键/n");
//调试用
ed.WriteMessage("null/n");
}
在正常选择情况下TmpPt可以得到一个值,那么在用户按了ESC或其他取消键(鼠标右键后),由于point3d的X,Y,Z三个坐标是double类型 那么它的X,Y,Z的值在返回时就算不输入还是会返回为 TmpPt.X=0,TmpPt.Y=0,TmpPt.Z=0.
如果我在实例化point3d过后,在使用时,如果取消了选择点,我要怎么才能判断这个实例的值为null呢?不可能x,y,z均为0就表示为空吧?因为用户有可能就选择0,0,0为坐标。所以,我觉得应该在调用getpoint方法后再作一个判断,判断返回的值到底是用户输入的0,0,0,还是程序的默认值0,0,0。 我的解决方法如下:
封装GetPoint类,然后在自己的方法WDGetpoint中加入一个参数 out bool isNull =false 表示是否输入了坐标值 true表示没有输入值
/// <summary>
/// AutoCAD中屏幕中选择一个点
/// </summary>
/// <param name="prompt">在输入时的提示</param>
/// <param name="isNull">表示是否输入了坐标值 true表示没有输入值</param>
/// <returns>返回选择的点坐标,坐标为一个数组 如果不输入isNull=true 否则为false</returns>
public static Point3d WDGetpoint(string prompt, out bool isNull)
{
PromptPointOptions promptPtOp = new PromptPointOptions(prompt);
promptPtOp.AllowNone = true;
PromptPointResult resPt;
resPt = ed.GetPoint(promptPtOp);
Point3d TmpPt;
isNull = true; //初始化为true 表示返回的值为null
//判断用户输入
if (resPt.Status == PromptStatus.OK)//正常输入
{
//得到正确的坐标值。
TmpPt = resPt.Value;
isNull = false; //表示返回值不为null 用户做了有用的输入
}
else if (resPt.Status == PromptStatus.Cancel)//用户取消
{
//调试用
ed.WriteMessage("null/n");
}
else if (resPt.Status == PromptStatus.None)
{
//调试用
ed.WriteMessage("null/n");
}
return TmpPt;
}
//=============方法调用=============//
void test()
{
Point3d pt=WDGetpoint("选择一个点:",out isNull );
if(isNull==true)
{
ed.WriteMessage("没有输入点/n");
return; //没有输入点,return退出本方法。
}
else
{
ed.WriteMessage("/n点坐标 X={0} Y={1} Z={2}",pt.X,pt.Y,pt.Z);
}
}
也就是在实例中先判断isnull返回的值,然后再进行下面的步骤.这就可以解决用户到底输入点没有的问题了。 这是我现在想到的我认为最好方法,也不知还有没有更好的方法或是我不知道的属性来判断。
在c#中,定义一个Geometry.point3d,然后用ed.getpoint 方法获取CAD文档屏幕上的点.如果我在获取时不想选点,也不输入坐标.以下面实例化一个点Point3d TmpPt为例:PromptPointOptions promptPtOp = new PromptPointOptions(prompt);
PromptPointResult resPt;
resPt = ed.GetPoint(promptPtOp);
//实例化一个点Point3d TmpPt
Point3d TmpPt;
//正常输入情况下
if (resPt.Status == PromptStatus.OK)
{
//正常输入可以得到值。
TmpPt = resPt.Value;
}
//如果
else if (resPt.Status == PromptStatus.Cancel)//用户取消
{
//ed.WriteMessage("用户按了取消ESC键/n");
//调试用
ed.WriteMessage("null/n");
}
在正常选择情况下TmpPt可以得到一个值,那么在用户按了ESC或其他取消键(鼠标右键后),由于point3d的X,Y,Z三个坐标是double类型 那么它的X,Y,Z的值在返回时就算不输入还是会返回为 TmpPt.X=0,TmpPt.Y=0,TmpPt.Z=0.
如果我在实例化point3d过后,在使用时,如果取消了选择点,我要怎么才能判断这个实例的值为null呢?不可能x,y,z均为0就表示为空吧?因为用户有可能就选择0,0,0为坐标。所以,我觉得应该在调用getpoint方法后再作一个判断,判断返回的值到底是用户输入的0,0,0,还是程序的默认值0,0,0。 我的解决方法如下:
封装GetPoint类,然后在自己的方法WDGetpoint中加入一个参数 out bool isNull =false 表示是否输入了坐标值 true表示没有输入值
/// <summary>
/// AutoCAD中屏幕中选择一个点
/// </summary>
/// <param name="prompt">在输入时的提示</param>
/// <param name="isNull">表示是否输入了坐标值 true表示没有输入值</param>
/// <returns>返回选择的点坐标,坐标为一个数组 如果不输入isNull=true 否则为false</returns>
public static Point3d WDGetpoint(string prompt, out bool isNull)
{
PromptPointOptions promptPtOp = new PromptPointOptions(prompt);
promptPtOp.AllowNone = true;
PromptPointResult resPt;
resPt = ed.GetPoint(promptPtOp);
Point3d TmpPt;
isNull = true; //初始化为true 表示返回的值为null
//判断用户输入
if (resPt.Status == PromptStatus.OK)//正常输入
{
//得到正确的坐标值。
TmpPt = resPt.Value;
isNull = false; //表示返回值不为null 用户做了有用的输入
}
else if (resPt.Status == PromptStatus.Cancel)//用户取消
{
//调试用
ed.WriteMessage("null/n");
}
else if (resPt.Status == PromptStatus.None)
{
//调试用
ed.WriteMessage("null/n");
}
return TmpPt;
}
//=============方法调用=============//
void test()
{
Point3d pt=WDGetpoint("选择一个点:",out isNull );
if(isNull==true)
{
ed.WriteMessage("没有输入点/n");
return; //没有输入点,return退出本方法。
}
else
{
ed.WriteMessage("/n点坐标 X={0} Y={1} Z={2}",pt.X,pt.Y,pt.Z);
}
}
也就是在实例中先判断isnull返回的值,然后再进行下面的步骤.这就可以解决用户到底输入点没有的问题了。 这是我现在想到的我认为最好方法,也不知还有没有更好的方法或是我不知道的属性来判断。
相关文章推荐
- Unix学习笔记-------目录遍历实例----Linux下判断是否是一个目录还是一个文件的方法
- 关于判断字符串参数是否是整型参数或者浮点型参数的方法
- JS判断指定dom元素是否在屏幕内的方法实例
- 为什么不能用返回值类型来判断方法是否重载呢?
- 关于JS判断图片是否加载完成且获取图片宽度的方法
- js判断某个方法是否存在实例代码
- php关于使用strpos方法判断字符串中是否存在字符串的一些细节说明
- js判断某个方法是否存在实例代码
- 关于JS判断图片是否加载完成且获取图片宽度的方法
- Android判断后台服务是否开启的两种方法实例详解
- 自己收集整理的关于 判断 网页是否加载完毕的方法(特别是多框架Frame),然后获取网页源码
- 关于JS判断图片是否加载完成且获取图片宽度的方法
- AS3 判断某个类型(注意:不是实例)是否继承于某个类型的方法
- 判断程序实例是否已经运行的N种方法
- 判断程序实例是否已经运行的N种方法
- ASP.NET 关于判断是否是客户端“刷新”页面的方法 [转]
- ASP.NET 关于判断是否是客户端“刷新”页面的方法 [转]
- 关于无向图判断是否存在回路的方法
- 关于最小生成树中的kruskal算法中判断两个点是否在同一个连通分量的方法总结
- [关于判断输入数据是否在数据库中的方法。]