明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2079|回复: 6

C#中如何创建边界?

[复制链接]
发表于 2012-8-13 15:34:21 | 显示全部楼层 |阅读模式
我现在有一个功能是在Winform的界面中有一个按钮,点击后到AutoCAD中根据拾取点得到边界线段,并返回这个多段线。
发表于 2012-8-13 22:36:35 | 显示全部楼层
记得有高手说过用ray旋转扫略
 楼主| 发表于 2012-8-16 10:15:24 | 显示全部楼层
logoin 发表于 2012-8-13 22:36
记得有高手说过用ray旋转扫略

请问有没有详细的资料呢?
发表于 2012-8-17 15:42:55 | 显示全部楼层
  1.         /// <summary>
  2.         /// 通过选择点创建边界
  3.         /// </summary>
  4.         public class CreateBound
  5.         {
  6.                 /// <summary>
  7.                 /// 创建边界,边界对象已加入数据库
  8.                 /// </summary>
  9.                 /// <returns></returns>
  10.                 public static ObjectId MakeBound()
  11.                 {
  12.                         ObjectId id = new ObjectId();

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

  14.                         using (Transaction tr = Tools.Database.TransactionManager.StartTransaction())
  15.                         {
  16.                                 if (ppr.Status != PromptStatus.OK)
  17.                                 {
  18.                                         tr.Commit();
  19.                                         return id;
  20.                                 }
  21.                                 try
  22.                                 {
  23.                                         DBObjectCollection objs = Tools.Editor.TraceBoundary(ppr.Value, false);
  24.                                         if (objs.Count == 0)
  25.                                         {
  26.                                                 tr.Commit();
  27.                                                 return id;
  28.                                         }
  29.                                         id = Tools.AddToCurrentSpace(objs[0] as Entity);
  30.                                         tr.Commit();
  31.                                         return id;
  32.                                 }
  33.                                 catch
  34.                                 {
  35.                                         tr.Commit();
  36.                                         return id;
  37.                                 }
  38.                         }
  39.                 }
  40.         }
发表于 2012-8-17 15:44:05 | 显示全部楼层
这是我的部分源代码,仅供参考使用,不过核心方法已给出
发表于 2012-8-17 16:45:11 | 显示全部楼层
本帖最后由 liuxu042 于 2012-8-17 16:45 编辑

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

你这个方法应该只能在cad2011以上版本才支持
发表于 2012-9-9 11:54:19 | 显示全部楼层
这个需要CAD版本去支持的,我现在还用CAD2006呢,实现不了,除非你用C++去开发!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 16:27 , Processed in 0.200570 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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