×

工业设计互动平台

手机短信,快捷登录

微信登录,快人一步

QQ登录

只需一步,快速开始

前面提取文字的部分是自己写的,涉及了从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

Rhino Common 获取文字的命令示例 Annotation TextEntity
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩回复

文明上网理性发言、请文明用语

成为第一个回答人