乐筑天下

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

请教各位大虾指教一个非常刺手de问题

[复制链接]

16

主题

27

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
91
发表于 2003-6-5 23:19:00 | 显示全部楼层 |阅读模式
thisline.set(leftPnt3d,rightPnt3d);
   
        AcGePoint3dArray breakPts;
        AcDbBlockTable *pBlockTable1;
        //下面这段程序是遍历块表,找到与this AcDbmyEntity相交的others AcDbmyEntity实体
        acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable1, AcDb::kForRead);
        AcDbBlockTableRecord *pBlockTableRecord1;
        pBlockTable1->getAt(ACDB_MODEL_SPACE, pBlockTableRecord1, AcDb::kForRead);
        pBlockTable1->close();
        AcDbBlockTableRecordIterator *pBlockIterator;
        pBlockTableRecord1->newIterator(pBlockIterator);
        AcGePoint3d rightPt,leftPt;
        double qiangHeight,qiangwidth;
    AcDbEntity *pEntity;
    for (; !pBlockIterator->done();pBlockIterator->step())
    {
        pBlockIterator->getEntity(pEntity, AcDb::kForRead);
        if(pEntity->isKindOf(AcDbmyEntity::desc()))
        {
          AcDbmyEntity::cast(pEntity)->getRpoint(rightPt);
          AcDbmyEntity::cast(pEntity)->getLpoint(leftPt);
          AcDbmyEntity::cast(pEntity)->getHeight(qiangHeight);
          AcDbmyEntity::cast(pEntity)->getWidth(qiangwidth);
           otherline.set(rightPt,leftPt);
          Adesk::Boolean rc=thisline.intersectWith(otherline, ptmy);
          if(rc==Adesk::kTrue)
          {
           breakPts.append(ptmy);   
          //下面为删除others AcDbmyEntity实体
          AcDbmyEntity::cast(pEntity)->upgradeOpen();
          AcDbmyEntity::cast(pEntity)->erase(true);
          AcDbmyEntity::cast(pEntity)->close();
//问题在下面,如果不加下面1-15句,运行不会报错误,不知为什么出错,也不知道这样
//出实现下面的功能行不行,是否有其他的方法,请各位大虾指教
          //下面为用ptmy点重新生成两个AcDbmyEntity实体替换已删除others AcDbmyEntity实体
          //相当于把others AcDbmyEntity实体以ptmy点分为两段
   1      AcDbmyEntity* pTriangle0 = new AcDbmyEntity();
          pTriangle0->create(leftPt, ptmy,qiangwidth,qiangHeight);
          AcDbEquiTriangle* pTriangle1 = new AcDbmyEntity();
          Triangle1->create(ptmy,rightPt,qiangwidth,qiangHeight);         
          AcDbBlockTable *pBlockTable2;
          acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable2, AcDb::kForRead);
          AcDbBlockTableRecord *pBlockTableRecord2;
          pBlockTable2->getAt(ACDB_MODEL_SPACE, pBlockTableRecord2, AcDb::kForWrite);
          pBlockTable2->close();
          AcDbObjectId objectId1,objectId2;
          pBlockTableRecord2->appendAcDbEntity(objectId1, (AcDbmyEntity *)pTriangle0);
          pBlockTableRecord1->appendAcDbEntity(objectId2, (AcDbmyEntity *)pTriangle1);
          pBlockTableRecord2->close();
          pTriangle0->close();
   15          pTriangle1->close();
          }
          else
          {
          AcDbmyEntity::cast(pEntity)->close();
          }
        }
     }
    delete pBlockIterator;
    pBlockTableRecord1->close();
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 09:41 , Processed in 0.141855 second(s), 54 queries .

© 2020-2024 乐筑天下

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