乐筑天下

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

[求助] 块分解的问题

[复制链接]

10

主题

14

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2007-9-17 14:36:00 | 显示全部楼层 |阅读模式
pBlf=AcDbBlockReference::cast(pEnt);
        AcDbVoidPtrArray bentyset;
       pBlf->explode(bentyset);
  AcDbEntity *pblent=NULL;
for (int blent=0;blent[b]
{
pblent=(AcDbEntity*)bentyset.at(blent);
if (pblent->isA()==AcDb2dPolyline::desc())
            {
                 p2dpoly=AcDb2dPolyline::cast(pblent);
                 AcDbObjectIterator *pVertIter =p2dpoly->vertexIterator();
                AcDb2dVertex *pVertex;
                AcGePoint3d  location;
                AcDbObjectId  vertexObjId;
              for(int vertexNumber=0;!pVertIter->done();vertexNumber++,pVertIter->step())
                          {
                               AfxMessageBox("9");
                               vertexObjId=pVertIter->objectId();
// vertexObjId 不知为何是knull
                               if (vertexObjId!=AcDbObjectId::kNull)
                               {
                                    AfxMessageBox("qq");
                                    Acad::ErrorStatus es;
                                    es=acdbOpenObject(pVertex,vertexObjId,AcDb::kForRead);
                                    acutPrintf("%d",es);
                               }
                              
                              location=pVertex->position() ;
                               pointlist.append(location);
                              pVertex->close();*/
                          }
         
                      }
                      p2dpoly->close();
                 }
                 
           }
得到的vertexObjId 总为knull,请问程序有什么问题,为什么打不开对象
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
2
发表于 2007-9-22 10:21:00 | 显示全部楼层
看不懂
回复

使用道具 举报

1

主题

87

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
91
发表于 2007-9-22 10:35:00 | 显示全部楼层
objectId是要加入database之后才有的,explode出来的对象只是内存中的线,还没加入到当前图形数据库,当然也就不会存在什么objectId了
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2007-9-27 13:35:00 | 显示全部楼层
对楼上的说法怀疑!
objectId是跟随对象实例的,也就是只要生成了对象实例,实例就会拥有objectId属性,与实体对象是否已经提交到database无关,楼主的错误可能是到database去访问还没有提交到database的objectId
回复

使用道具 举报

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2007-10-10 16:58:00 | 显示全部楼层
请问楼主的问题解决了没有?能否告诉我啊?我也有类似的问题,我的毕业设计,这个问题解决不了很着急啊。
块爆炸后得到的实体怎样获取并显示阿?
我要做的是把插入的块explode ,然后得到其中爆炸后直线的端点。
各位大虾能否也帮帮忙
急啊。
回复

使用道具 举报

0

主题

6

帖子

2

银币

初来乍到

Rank: 1

铜币
6
发表于 2007-10-15 17:21:00 | 显示全部楼层

再遍历一遍不就可以获得直线了啊?
都炸开了后面的就简单了
我这倒是有代码~不过和你的要求不太一样~需要改一下哦
占且没时间改哦~工作中~
回复

使用道具 举报

0

主题

38

帖子

1

银币

初来乍到

Rank: 1

铜币
38
发表于 2007-10-24 18:24:00 | 显示全部楼层
先说说你想干什么吧。
vertexObjId=pVertIter->objectId();改成
pVertex = (AcDb2dVertex *)pVertIter->entity();得到对象。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-6 04:35 , Processed in 0.279760 second(s), 66 queries .

© 2020-2025 乐筑天下

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