明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2412|回复: 5

错误,无法将类型“Autodesk.AutoCAD.Geometry.Point3d”转换为“double[]“

[复制链接]
发表于 2012-2-7 18:53:23 | 显示全部楼层 |阅读模式
代码如下:
public static void SelectEntitiesWithProperties()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
            Database db = HostApplicationServices.WorkingDatabase;
            TypedValue[] tvs = new TypedValue[]
              {
                 new TypedValue((int)DxfCode.Operator, "<or"),
                 new TypedValue((int)DxfCode.Operator, "<and"),
                 new TypedValue((int)DxfCode.LayerName, "0"),
                 new TypedValue((int)DxfCode.Start, "LINE"),
                 new TypedValue((int)DxfCode.Operator, "and>"),
                 new TypedValue((int)DxfCode.Operator, "<and"),
                 new TypedValue((int)DxfCode.Start, "CIRCLE"),
                 new TypedValue((int)DxfCode.Operator, ">="),
                 new TypedValue((int)DxfCode.Real, 10.0),// Circle Radius
                 new TypedValue((int)DxfCode.Operator, "and>"),
                 new TypedValue((int)DxfCode.Operator, "or>")
             };
            SelectionFilter sf = new SelectionFilter(tvs);
            PromptSelectionResult psr = ed.SelectAll(sf);
            if (psr.Status == PromptStatus.OK)
            {
                SelectionSet SS = psr.Value;
                ObjectId[] idArray = SS.GetObjectIds();
                using (Transaction trans = db.TransactionManager.StartTransaction())
                {
                    for (int i = 0; i < idArray.Length; i++)
                    {
                        Entity entObject = trans.GetObject(idArray, OpenMode.ForWrite) as Entity;                       
                        entObject.Highlight();
                        if (entObject.GetType().Name == "line")
                        {                           
                            Line returnLine = (Line)entObject;
                            double[] lineStartPoint = new Double[2];
                            double[] lineEndPoint = new Double[2];
                            lineStartPoint = (Double[])(returnLine.StartPoint);//错误行提示
                            lineEndPoint = (Double[])returnLine.EndPoint;//错误行提示
                            Application.ShowAlertDialog("直线的起点坐标为:" + lineStartPoint[0].ToString()
                                + "," + lineStartPoint[1].ToString()
                                + "," + lineStartPoint[2].ToString()
                                + "\n" + "直线的终点坐标为:" + lineEndPoint[0].ToString()
                                + "," + lineEndPoint[1].ToString()
                                + "," + lineEndPoint[2].ToString());
                        }
                        ed.WriteMessage(i + ":" + entObject.ObjectId.ToString() + "," + entObject.GetType().Name);                        
                    }
                }
            }
}

谢谢了
发表于 2012-2-8 08:42:09 | 显示全部楼层
本帖最后由 liuxu042 于 2012-2-8 15:39 编辑

坐标转为数组使用ToArray()如: Line myline = ent as Line;
double[] startPoint = myline.StartPoint.ToArray();

评分

参与人数 1明经币 +1 收起 理由
lzx838 + 1 热心帮助

查看全部评分

发表于 2012-2-8 09:04:54 | 显示全部楼层
学了一招。
我以前都是x、y、z分别赋值的。
 楼主| 发表于 2012-2-8 09:17:55 | 显示全部楼层
liuxu042 发表于 2012-2-8 08:42
坐标转为数组使用ToArray()如: Line myline = ent as Line;
double[] startPoint = myline.StartPoint.To ...

谢谢了,昨天试了一晚上也没搞定,原来方法后面忘了加(),晕死。谢谢了。
发表于 2012-2-8 09:20:03 | 显示全部楼层
好好加油,经验是慢慢积累起来的.
 楼主| 发表于 2012-2-8 10:16:48 | 显示全部楼层
lzx838 发表于 2012-2-8 09:20
好好加油,经验是慢慢积累起来的.

谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 06:38 , Processed in 0.182216 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表