明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1757|回复: 8

[图元] 请问如何获取对象的唯一标识的ID号

[复制链接]
发表于 2014-3-4 22:59 | 显示全部楼层 |阅读模式
请问如何获取对象的唯一标识的ID号。想把对象关联到数据库,作为主键
发表于 2014-3-5 08:38 | 显示全部楼层


Dxf 5

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-3-5 08:43 | 显示全部楼层
Handle   句柄
 楼主| 发表于 2014-3-5 09:47 | 显示全部楼层
可以了,非常感谢,可以获取唯一值了。
还想麻烦大侠解决一个问题,如何在程序中指定Handle值,获取对象。
发表于 2014-3-5 10:08 | 显示全部楼层
handle可以换,不可以指定
 楼主| 发表于 2014-3-5 10:12 | 显示全部楼层
不好意思,可能我没说清楚
比如我现在获得的一条直线对象的handle是8C,如何通过8c这个值,获取直线这个对象,对这个对象进行操作
发表于 2014-3-5 10:51 | 显示全部楼层
public Autodesk.AutoCAD.DatabaseServices.ObjectId GetObjectId(bool createIfNotFound, Autodesk.AutoCAD.DatabaseServices.Handle objHandle, int identifier)
    Autodesk.AutoCAD.DatabaseServices.Database 的成员
发表于 2014-3-5 10:54 | 显示全部楼层
        /// <summary>
    /// 从句柄转换成ObjectId
    /// Version : 2010.03.29 Sieben
    /// </summary>
    /// <param name="handle">句柄,可以是Handle,string,int,long数据类型</param>
    /// <returns>成功返回句柄所对应的ObjectId,否则返回ObjectId.Null</returns>
    public static ObjectId HandleToObjectId(object handle)
    {
      try
      {
        if (handle == null) return ObjectId.Null;
        ObjectId tId2 = ObjectId.Null;
        if (handle is Handle)
          return sc.db.GetObjectId(false, (Handle)handle, 0);
        else if (handle is string)
        {
          string tStr = handle.ToString().Trim();

          if (tStr == "")
            return ObjectId.Null;
          else if (tStr == "0")
            return ObjectId.Null;
          else
          {
            long lNum = Convert.ToInt64(tStr, 16);
            if (lNum == 0L)
              return ObjectId.Null;
            else
              return sc.db.GetObjectId(false, new Handle(lNum), 0);
          }
        }
        else if (handle is int || handle is long)
        {
          long lNum = (long)handle;
          if (lNum == 0L)
            return ObjectId.Null;
          else
            return sc.db.GetObjectId(false, new Handle(lNum), 0);
        }
        else
          return ObjectId.Null;
      }
      catch
      {
        return ObjectId.Null;
      }
    }
 楼主| 发表于 2014-3-5 14:40 | 显示全部楼层
谢谢,我试试看!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 07:35 , Processed in 0.220139 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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