乐筑天下

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

检查数据库驻留实体

[复制链接]

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-2-17 20:09:05 | 显示全部楼层 |阅读模式
下面是我正在处理的一些代码片段,是我正在处理的python arx包装器的代码片段,除非我以最好的方式解决这个问题,否则它将是这个链条中的薄弱环节!
当使用Python来回传递指针时,您以这种方式将指针包装在CPyObject(基本上是void*的容器)中代码0]
其中“del_ent”是指向用于清理的删除函数的函数。
这样,Python就有了一个指向新数据库实体的指针,可以做它需要做的事情,但是,一旦你返回到主机应用程序,Python就需要做它的清理工作,这就是我到目前为止所做的工作,它可以工作,但我不满意它-
  1. static void del_ent(void* ptr)
  2. {
  3.         /* just return and python will be happy, again, we need
  4.         to be careful with this as we could easily create a memory leak! */
  5.         AcDbEntity* e = (AcDbEntity*)ptr;
  6.         //e->upgradeOpen();
  7.         if(e->blockId() == AcDbObjectId::kNull) // it's not a db resident, we can delete it.
  8.                 delete ptr;
  9.         //e->close();
  10.         return;
  11. }

问题是文档说如果指针没有打开,就不应该“访问”指针,在实体没有打开的情况下使用e->BlockId()会违反规则吗??(好像很管用...)
有没有更好的方法可以在不打开的情况下检查实体/对象是否属于db?
谢谢。米克。

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

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

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-2-17 20:38:17 | 显示全部楼层
似乎只要您没有修改任何内容,就应该可以检查ObjectID的isNull或isValid代码2]
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-2-17 20:48:23 | 显示全部楼层
谢谢Dan.
我也在考虑这个问题,只是来回传递ObjectId可能会更安全......如果我删除了其中一个,我可能会遇到同样的问题(?)。
回复

使用道具 举报

28

主题

249

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2009-2-17 21:25:44 | 显示全部楼层
不,ObjectId可能是相同的,如果不是更糟的话!
我将尝试使用句柄,这也避免了传递指针,但有助于处理实体(打开等)。
回复

使用道具 举报

27

主题

193

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2009-2-20 13:47:23 | 显示全部楼层
只是猜测......如果实体不是db居民,那么它会没有OwnerId吗?....../猜测
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-2-20 15:18:13 | 显示全部楼层
谢谢Paul,是的,关闭是另一个问题,但无论如何都不会有什么坏处,因为对象在创建时会打开,无论如何我都会打开编辑对象,python会在失去焦点后调用此方法,所以我想这是一种安全网。
我不希望python接口过多地模仿arx,它会使它过于冗长,并且会破坏使用python的目的,我认为,我宁愿它更像是vb,它在幕后处理数据库交互,所以你可以专注于脚本。
干杯,
米克。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-6 04:10 , Processed in 0.189190 second(s), 64 queries .

© 2020-2025 乐筑天下

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