乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 72|回复: 3

按其控制柄选择块

[复制链接]

3

主题

13

帖子

1

银币

初来乍到

Rank: 1

铜币
25
发表于 2018-9-24 11:07:46 | 显示全部楼层 |阅读模式
早上好,
有人知道如何通过控制柄选择块吗?目前,我有一些代码用于将图形中的动态块属性与excel文件中的属性进行比较。然而,我不得不花很长时间运行代码,因为它循环遍历blocktablerecord中的每一项,以找到需要更改的块
正在寻找更直接的方法,因为我有需要更改的块的块句柄/// //句柄,。
///所需的ObjectId或ObjectId.Null。
公共静态ObjectId GetObjectIDFromHandle(字符串句柄)。
{。
if(handle.Length。
尝试。
{。
//将十六进制字符串转换为64位。
long ln=Convert.ToInt64(句柄,16);。
//现在从长整数创建句柄。
句柄hn=new句柄(ln);。
//并尝试获取句柄的ObjectId。
ObjectId id=Active.Database.GetObjectId(false, hn,0);。
//返回对象ID,如果它存在,ObjectId.Null如果它不存在。
如果(id.IsEffectivelyErased
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2018-9-24 11:32:11 | 显示全部楼层
id.IsErased)返回ObjectId.Null;。
返回id;。
}。
捕捉。
{。
返回ObjectId.Null;。
}。
}。
我喜欢Gile的TryGetObjectId方法,但BricsCAD不支持它,太糟糕了,对我来说似乎是一个更好的方法。
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2018-9-24 12:06:33 | 显示全部楼层
@a的,你可以为BricsCAD实现一个TryGetObjectId扩展方法,也可以重载它直接取字符串作为参数静态类扩展。
{。
公共静态bool TryGetObjectId(此数据库db、句柄句柄、out ObjectId id)。
{。
尝试。
{。
id=db.GetObjectId(false,句柄,0);。
返回true;。
}。
捕捉。
{。
id=ObjectId.Null;。
返回false;。
}。
}。


公共静态bool TryGetObjectId(此数据库db,字符串句柄,输出ObjectId id)。
{。
返回db.TryGetObjectId(新句柄(Convert.ToInt64(句柄,16)), out id);。
}。
}。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2018-9-24 12:29:14 | 显示全部楼层
非常感谢吉尔,我喜欢看你如何把事情放在一起!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 08:56 , Processed in 0.148563 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表