使用硬指针管理图层
我的办公室里有一个用户,他用我想保留在图纸中的图层清除Autocad图纸。Augi论坛中的某人建议使用硬指针来防止图层被删除。有没有人做过类似的事情?我没有太多使用xrecords的经验。这是论坛帖子的一个示例。“硬指针应该防止指向的对象(在本例中为层)被清除。指针将驻留在扩展字典中的 XRecord 下,可能附加到 Layers 集合或名为对象字典的图形中。这是否有效,如果是这样,我将如何去做?**** Hidden Message ***** 翻译错误代码(429):请求 QPS 超过限制。 翻译错误代码(429):请求 QPS 超过限制。 翻译错误代码(429):请求 QPS 超过限制。 嗨,这是一个旧的(短)版本。以下是我现在使用的那个:公共静态T GetObject(。
此 ObjectId id,。
OpenMode mode = OpenMode.ForRead,。
布尔打开拉塞德 = 假,。
布尔力打开锁定层 = 假)。
其中 T : DBObject。
{。
if (id == ObjectId.Null)。
抛出新的 ArgumentException(“该值不能是 ObjectId.Null.”, “id”);。
。
Transaction tr = id.Database.TransactionManager.TopTransaction;。
if (tr == null)。
抛出新的 AcRx.Exception(ErrorStatus.NoActiveTransactions);。
。
返回 (T)tr.GetObject(id, mode, openErased, forceOpenOnLockedLayer);。
}无论如何,即使 ObjectId.GetObject() 的效率(略低于 Transaction.GetOject())(其效率低于 OpenCloseTransaction.GetObject() 或 ObjectId.Open()),这里的目标更多的是获得简洁易读的代码。
只是为了清楚,我没有在你的代码中挑漏洞。我知道你只是在向OP展示一个例子。我想也许你知道一些我不知道的事情,因为你对API的了解比我好。不过,谢谢你的澄清。 我也在想你。 对不起,我在这方面是个傻瓜,但如果我理解正确,我需要将我的所有层添加到此代码中,如第1层、第2层、第3层等。此外,我不知道如何实现这一点。我是否将其编译为dll文件?这是我的模板文件。我希望所有这些层都是不可切割的。我需要在这个文件的一侧运行这个代码吗? 告诉人们停止清除层不是更容易吗?
或
挫败窃听器....在这些图层上放置单个自动排列点...然后他不能清除他们...pdmode=1
他们甚至无法看到它们.... 翻译错误代码(429):请求 QPS 超过限制。
页:
[1]
2