|
- void InsertImage()
- {
- ACHAR* szName = 采用T(“MyTest”);
- ACHAR *fileName = 采用T(“C:\temp\newImage.jpeg”);
- AcGePoint3d org(10,10,0);
- AcDbDatabase *pDb =
- acdbHostApplicationServices()->workingDatabase();
- AcDbRasterImageDef* pImageDef = new AcDbRasterImageDef();
- Acad::ErrorStatus es = pImageDef->setSourceFileName(fileName);
- if(es != Acad::eOk)
- {
- delete pImageDef;
- return;
- }
- es = pImageDef->load();
- ASSERT(es == Acad::eOk);
- AcDbObjectId dictID = AcDbRasterImageDef::imageDictionary(pDb);
- if (dictID==AcDbObjectId::kNull)
- {
- es = AcDbRasterImageDef::createImageDictionary(pDb, dictID);
- if(es!= Acad::eOk)
- {
- delete pImageDef;
- ads采用printf(采用T(“nCould not create dictionaryn”));
- return;
- }
- }
- AcDbDictionary* pDict = NULL;
- es = acdbOpenObject((AcDbObject*&)pDict,
- dictID, AcDb::kForWrite);
- if(es != Acad::eOk)
- {
- delete pImageDef;
- ads采用printf(采用T(“nCould not open dictionaryn”));
- return;
- }
- BOOL bExist = pDict->has(szName);
- AcDbObjectId objID;
- if (!bExist)
- {
- pDict->setAt(szName, pImageDef, objID);
- }
- else
- {
- pDict->getAt(szName,
- (AcDbObject*&)pImageDef,AcDb::kForWrite);
- objID = pImageDef->objectId();
- }
- // close Dictionary and Definition.
- pDict->close();
- pImageDef->close();
- AcDbRasterImage* pImage = new AcDbRasterImage;
- es = pImage->setImageDefId(objID);
- if (es != Acad::eOk)
- {
- delete pImage;
- return;
- }
- AcDbObjectId modelId;
- modelId = acdbSymUtil()->blockModelSpaceId(pDb);
- AcDbBlockTableRecord *pBTRecord;
- acdbOpenAcDbObject((AcDbObject*&)pBTRecord,
- modelId, AcDb::kForWrite);
- es = pBTRecord->appendAcDbEntity(pImage);
- pBTRecord->close();
- AcDbObjectId entID = pImage->objectId();
- AcGePoint3d TempPoint3d(3.0, 0, 0);
- AcGeVector3d LowerRightVector = TempPoint3d.asVector();
- AcGePoint3d TempPoint3d2(0, 1.5, 0);
- AcGeVector3d OnPlaneVector = TempPoint3d2.asVector();
- if (pImage->setOrientation(org,
- LowerRightVector, OnPlaneVector) !=Adesk::kTrue)
- {
- ads采用printf(采用T(“nSet Orientation failed.”));
- pImage->close();
- return;
- }
- pImage->setDisplayOpt(AcDbRasterImage::kShow, Adesk::kTrue);
- pImage->setDisplayOpt(AcDbRasterImage::kTransparent,
- Adesk::kTrue);
- AcDbObjectPointer<AcDbRasterImageDefReactor>
- rasterImageDefReactor;
- // new it
- rasterImageDefReactor.create();
- // Set the entity to be its owner.
- es = rasterImageDefReactor->setOwnerId(pImage->objectId());
- // if ok
- if (es == Acad::eOk)
- {
- AcDbObjectId defReactorId;
- // assign the object an objectId
- es = pDb->addAcDbObject(defReactorId,
- rasterImageDefReactor.object());
- // if ok
- if (es == Acad::eOk)
- {
- // set the image reactor id
- pImage->setReactorId(defReactorId);
- AcDbObjectPointer<AcDbRasterImageDef>
- rasterImagedef(pImage->imageDefId(),
- AcDb::kForWrite);
- // if ok
- if (rasterImagedef.openStatus() == Acad::eOk)
- {
- rasterImagedef->addPersistentReactor(defReactorId);
- }
- }
- }
- pImage->close();
- }
复制代码 |
|