前面提取文字的部分是自己写的,涉及了从cad图形中读取一个文字到数字的过程。分享供参考。
自己写到插件里时做了修改。
后面isNumberic是网上抄的。
class MyClass
{
public static Result Test1 (RhinoDoc doc)
{
const double somenumber = -7164;
double z = somenumber;
Rhino.DocObjects.ObjRef objRef;
#region GET Z
Rhino.DocObjects.ObjectType filter = Rhino.DocObjects.ObjectType.Annotation;
Result rc = Rhino.Input.RhinoGet.GetOneObject("Select text object", false, filter, out objRef);
if (rc != Result.Success) return rc;
if(objRef == null) return Result.Nothing;
Rhino.DocObjects.RhinoObject rhino_object = objRef.Object();
if (rhino_object == null) return Rhino.Commands.Result.Failure;
if (rhino_object.ObjectType != Rhino.DocObjects.ObjectType.Annotation)
return Result.Failure;
//Rhino.RhinoApp.WriteLine("Selected object is text");
Rhino.Geometry.TextEntity annotation = (Rhino.Geometry.TextEntity)rhino_object.Geometry;
string str = annotation.RichText.Trim();
if(string.IsNullOrEmpty(str) ) return Result.Failure;
if (!MyClass.isNumberic(str,out z))
{
return Result.Failure;
}
Rhino.RhinoApp.WriteLine("z = {0}",z);
if(z == somenumber)
{
rc = Rhino.Input.RhinoGet.GetNumber("请手动输入数据",false,ref z);
Rhino.RhinoApp.WriteLine("z = {0}", z);
if (rc != Result.Success) return Result.Failure;
}
#endregion
return Result.Success;
}
protected static bool isNumberic(string str, out double result)
{
//判断是否为整数字符串
//是的话则将其转换为数字并将其设为out类型的输出值、返回true, 否则为false
result = -1; //result 定义为out 用来输出值
try
{
//当数字字符串的为是少于4时,以下三种都可以转换,任选一种
//如果位数超过4的话,请选用Convert.ToInt32() 和int.Parse()
//result = int.Parse(message);
//result = Convert.ToInt16(message);
// result = Convert.ToInt32(str);
result = Convert.ToDouble(str);
return true;
}
catch
{
return false;
}
//可以将int改为double,如 double.Parse(),这样就可以判断是否为浮点数字符串
}
}
}
|
-
Rhino Common 获取文字的命令示例 Annotation TextEntity
|