x_qingh 发表于 2012-8-13 15:34:21

C#中如何创建边界?

我现在有一个功能是在Winform的界面中有一个按钮,点击后到AutoCAD中根据拾取点得到边界线段,并返回这个多段线。

logoin 发表于 2012-8-13 22:36:35

记得有高手说过用ray旋转扫略

x_qingh 发表于 2012-8-16 10:15:24

logoin 发表于 2012-8-13 22:36 static/image/common/back.gif
记得有高手说过用ray旋转扫略

请问有没有详细的资料呢?

badboy518 发表于 2012-8-17 15:42:55

        /// <summary>
        /// 通过选择点创建边界
        /// </summary>
        public class CreateBound
        {
                /// <summary>
                /// 创建边界,边界对象已加入数据库
                /// </summary>
                /// <returns></returns>
                public static ObjectId MakeBound()
                {
                        ObjectId id = new ObjectId();

                        PromptPointResult ppr = Tools.Editor.GetPoint("\n请选择内部点: ");

                        using (Transaction tr = Tools.Database.TransactionManager.StartTransaction())
                        {
                                if (ppr.Status != PromptStatus.OK)
                                {
                                        tr.Commit();
                                        return id;
                                }
                                try
                                {
                                        DBObjectCollection objs = Tools.Editor.TraceBoundary(ppr.Value, false);
                                        if (objs.Count == 0)
                                        {
                                                tr.Commit();
                                                return id;
                                        }
                                        id = Tools.AddToCurrentSpace(objs as Entity);
                                        tr.Commit();
                                        return id;
                                }
                                catch
                                {
                                        tr.Commit();
                                        return id;
                                }
                        }
                }
        }

badboy518 发表于 2012-8-17 15:44:05

这是我的部分源代码,仅供参考使用,不过核心方法已给出

liuxu042 发表于 2012-8-17 16:45:11

本帖最后由 liuxu042 于 2012-8-17 16:45 编辑

if (ppr.Status != PromptStatus.OK)
{   
return id;
}
这句放到事务前面多好,并且objs.Count == 0或者异常的没必要提交事务呀

你这个方法应该只能在cad2011以上版本才支持

single-yu 发表于 2012-9-9 11:54:19

这个需要CAD版本去支持的,我现在还用CAD2006呢,实现不了,除非你用C++去开发!
页: [1]
查看完整版本: C#中如何创建边界?