乐筑天下

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

检查嵌套与否

[复制链接]

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2017-8-14 22:27:15 | 显示全部楼层 |阅读模式
希望用户选择实体(多段线/直线/圆弧),无论其是否在外部参照中。除了提示输入一个点“near”,然后测试它是否嵌套,如果它返回一个有效的对象ID,我想不出任何其他方法。有更好的方法吗?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2017-8-15 01:42:43 | 显示全部楼层
不确定我是否完全遵循您的要求以及为什么需要提示输入它附近的点,但这里有一个示例,其中命令提示符选择外部参照中的对象,然后打开外部参照并缩放到它。它检查 ObjectId.Database.UnmangedObject 是否与当前 Database.UnmanagedObject 匹配, private static Handle? hnd = null;。
[CommandMethod(“zoomxref”)]。
public void zoomxref()。
{。
hnd = 空;。
var pneo = new PromptNestedEntityOptions(“\nSelect xref object”);。
var pner = Ed.GetNestedEntity(pneo);。
如果 (pner.状态 != PromptStatus.OK)。
{。
返回;。
}。

var id = pner.对象 Id;。
if (id.Database.UnmanagedObject == Db.UnmanagedObject)。
{。
Ed.WriteLine(“Select xref object”);。
返回;。
}。

foreach (ObjectId conId in pner.GetContainers())。
{。
if (conId.Database.UnmanagedObject == pner.ObjectId.Database.UnmanagedObject)。
{。
id = conId;。
}。

}。

using (Transaction trx = Doc.TransactionManager.StartTransaction())。
{。
var ent = id.GetEntity();。
hnd = ent.手柄;。
trx.Commit();。
}。

var doc = Application.DocumentManager.Open(pner.ObjectId.Database.Filename, false);。
医生,SendStringToExecute(“zoomxrefobject ”, true, false, false);。

}。


[CommandMethod(“zoomxrefobject”, CommandFlags.NoHistory)]。
public void zoomxrefobject()。
{。
如果 (!hnd.HasValue) 返回;。
var id = Db.GetObjectId(false, (Handle)hnd, 0);。
var ss = SelectionSet.FromObjectIds(new ObjectId[] { id });。
Ed.Command(“_Zoom”, “_Object”, ss, “”);。
}。



回复

使用道具 举报

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2017-8-15 21:37:36 | 显示全部楼层
谢谢
回复

使用道具 举报

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2017-8-18 22:07:35 | 显示全部楼层
令人窒息的是……一开始我甚至没有想过尝试……但提示嵌套实体的东西对我的对象有效,它不是外部参照或块XD,我不知道它会是这样的。哈哈哈
回复

使用道具 举报

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2017-8-21 08:43:07 | 显示全部楼层
Jeff,
您能解释一下为什么要使用数据库的UnmanagedObject属性,而不仅仅是比较数据库吗?是不是更正确?
回复

使用道具 举报

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2017-8-21 09:41:42 | 显示全部楼层
我试图记住为什么。
我稍后会更深入地研究,看看我为什么这样做。我认为在反射器中查看“==”它有一种严厉的检查方式。
回复

使用道具 举报

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2017-8-21 09:48:46 | 显示全部楼层
我试图查看reflector中的数据库对象,但找不到==运算符。这次我会更彻底地检查。
回复

使用道具 举报

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2017-8-21 16:58:10 | 显示全部楼层
它看起来像是从一次性包装机继承了它,并且几乎做了同样的事情?[return: MarshalAs(UnmanagedType.U1)]。
公共静态 bool operator ==(DisposableWrapper a, DisposableWrapper b)。
{。
如果 (a == null)。
{。
返回 (b == 空);。
}。
返回 a.等于(b);。
}。

[return: MarshalAs(UnmanagedType.U1)]。
public override bool Equals(object obj)。
{。
DisposableWrapper wrapper = obj as DisposableWrapper;。
if (wrapper == null)。
{。
返回 false;。
}。
断续器,KeepAlive(this);。
IntPtr unmanagedObject = wrapper,非托管对象;。
返回 (this.m_imp == 非托管对象);。
}。

我以为是有原因的,但也许不是。
回复

使用道具 举报

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2017-8-22 08:37:45 | 显示全部楼层
谢谢。我只是想确保我没有错过任何东西。
回复

使用道具 举报

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2017-8-22 09:16:26 | 显示全部楼层

Ahhh "== "调用Equals,它接受一个对象,在本例中不会产生太大的差别,但是当比较一堆对象时,转换可能是一个性能问题。
我认为这里有一个线索,Tony指出了这一点。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 13:01 , Processed in 0.208394 second(s), 72 queries .

© 2020-2025 乐筑天下

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