天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 116|回复: 0

[每日一码] ARX插入图像的代码

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-3-14 20:13:33 | 显示全部楼层 |阅读模式
    1. void InsertImage()
    2. {
    3.     ACHAR* szName = 采用T("MyTest");
    4.     ACHAR *fileName = 采用T("C:\\temp\\newImage.jpeg");
    5.     AcGePoint3d org(10,10,0);
    6.     AcDbDatabase *pDb =
    7.       acdbHostApplicationServices()->workingDatabase();
    8.      AcDbRasterImageDef* pImageDef = new AcDbRasterImageDef();
    9.      Acad::ErrorStatus es = pImageDef->setSourceFileName(fileName);
    10.      if(es != Acad::eOk)
    11.      {
    12.           delete pImageDef;
    13.           return;
    14.      }
    15.      es = pImageDef->load();
    16.      ASSERT(es == Acad::eOk);
    17.      AcDbObjectId dictID = AcDbRasterImageDef::imageDictionary(pDb);
    18.      if (dictID==AcDbObjectId::kNull)
    19.      {
    20.          es = AcDbRasterImageDef::createImageDictionary(pDb, dictID);
    21.          if(es!= Acad::eOk)
    22.          {
    23.               delete pImageDef;
    24.               ads采用printf(采用T("\nCould not create dictionary\n"));
    25.               return;
    26.          }
    27.      }
    28.      AcDbDictionary* pDict = NULL;
    29.      es = acdbOpenObject((AcDbObject*&)pDict,
    30.                                             dictID, AcDb::kForWrite);
    31.      if(es != Acad::eOk)
    32.      {
    33.           delete pImageDef;
    34.           ads采用printf(采用T("\nCould not open dictionary\n"));
    35.           return;
    36.      }
    37.      BOOL bExist = pDict->has(szName);
    38.      AcDbObjectId objID;
    39.      if (!bExist)
    40.      {
    41.           pDict->setAt(szName, pImageDef, objID);
    42.      }
    43.      else
    44.      {
    45.           pDict->getAt(szName,
    46.                     (AcDbObject*&)pImageDef,AcDb::kForWrite);
    47.           objID = pImageDef->objectId();
    48.      }
    49.      // close Dictionary and Definition.
    50.      pDict->close();
    51.      pImageDef->close();
    52.      AcDbRasterImage* pImage = new AcDbRasterImage;
    53.      es = pImage->setImageDefId(objID);
    54.      if (es != Acad::eOk)
    55.      {
    56.           delete pImage;
    57.           return;
    58.      }
    59.     AcDbObjectId modelId;
    60.     modelId = acdbSymUtil()->blockModelSpaceId(pDb);
    61.     AcDbBlockTableRecord *pBTRecord;
    62.     acdbOpenAcDbObject((AcDbObject*&)pBTRecord,
    63.                                     modelId, AcDb::kForWrite);
    64.      es = pBTRecord->appendAcDbEntity(pImage);
    65.      pBTRecord->close();
    66.      AcDbObjectId entID = pImage->objectId();
    67.      AcGePoint3d TempPoint3d(3.0, 0, 0);
    68.      AcGeVector3d LowerRightVector = TempPoint3d.asVector();
    69.      AcGePoint3d TempPoint3d2(0, 1.5, 0);
    70.      AcGeVector3d OnPlaneVector = TempPoint3d2.asVector();
    71.      if (pImage->setOrientation(org,
    72.                 LowerRightVector, OnPlaneVector) !=Adesk::kTrue)
    73.      {
    74.           ads采用printf(采用T("\nSet Orientation failed."));
    75.           pImage->close();
    76.           return;
    77.      }
    78.      pImage->setDisplayOpt(AcDbRasterImage::kShow, Adesk::kTrue);
    79.      pImage->setDisplayOpt(AcDbRasterImage::kTransparent,
    80.                                                     Adesk::kTrue);
    81.     AcDbObjectPointer<AcDbRasterImageDefReactor>
    82.                                             rasterImageDefReactor;
    83.     // new it
    84.     rasterImageDefReactor.create();
    85.     // Set the entity to be its owner.
    86.     es = rasterImageDefReactor->setOwnerId(pImage->objectId());
    87.     // if ok
    88.     if (es == Acad::eOk)
    89.     {
    90.         AcDbObjectId defReactorId;
    91.         // assign the object an objectId
    92.         es = pDb->addAcDbObject(defReactorId,
    93.                             rasterImageDefReactor.object());
    94.         // if ok
    95.         if (es == Acad::eOk)
    96.         {
    97.             // set the image reactor id
    98.             pImage->setReactorId(defReactorId);
    99.             AcDbObjectPointer<AcDbRasterImageDef>
    100.                 rasterImagedef(pImage->imageDefId(),
    101.                                             AcDb::kForWrite);
    102.             // if ok
    103.             if (rasterImagedef.openStatus() == Acad::eOk)
    104.             {
    105.                 rasterImagedef->addPersistentReactor(defReactorId);
    106.             }
    107.         }
    108.     }
    109.      pImage->close();
    110. }
    复制代码

     

     

     

     

    [每日一码] ARX插入图像的代码
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 13:29 , Processed in 0.164161 second(s), 28 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表