#include <ShLwApi.h>
#pragma comment(lib, "ShLwApi.lib")
//插入影像图
Acad::ErrorStatus insertIMGFile(AcDbObjectId& ImgId,CString strCadLayerName,CString strFilePathName,CString KeyWord,AcGePoint2d pntLeftDown,AcGePoint2d pntRightUp)
{
#if _MSC_VER >= 1600
//一定要加载此文件,否则加载影像图时会失败
if (!acrxDynamicLinker->loadModule(_T("acISMobj19.dbx"), true))
{
acutPrintf(_T("无法加载acISMobj19.dbx\n"));
}
#elif _MSC_VER >= 1500
//一定要加载此文件,否则加载影像图时会失败
if (!acrxDynamicLinker->loadModule(_T("acISMobj18.dbx"), true))
{
acutPrintf(_T("无法加载acISMobj18.dbx\n"));
}
#elif _MSC_VER >= 1400
//一定要加载此文件,否则加载影像图时会失败
if (!acrxDynamicLinker->loadModule(_T("acISMobj17.dbx"), true))
{
acutPrintf(_T("无法加载acISMobj17.dbx\n"));
}
#elif _MSC_VER >= 1300
if (!acrxDynamicLinker->loadModule(_T("acISMobj16.dbx"), true))
{
acutPrintf(_T("无法加载acISMobj16.dbx\n"));
}
#else
if (!acrxDynamicLinker->loadModule(_T("acISMobj15.dbx"), true))
{
acutPrintf(_T("无法加载acISMobj15.dbx\n"));
}
#endif
if(strFilePathName.IsEmpty())
return Acad::eInvalidInput;
if(KeyWord.IsEmpty())
{
KeyWord = PathFindFileName(strFilePathName);
}
if(KeyWord.IsEmpty())//该影像已经加载
{
return Acad::eInvalidInput;
}
AcDbDictionary* pDictionary;
Adesk::Boolean bNameInUse;
AcDbObjectId DictionaryId;
AcDbObjectId RasterImgDefId;
AcDbObjectId RasterImgId;
AcDbRasterImageDef* pAcDbRasterImageDef;
Acad::ErrorStatus es; //找到当前数据库的imageDictionary
DictionaryId=AcDbRasterImageDef::imageDictionary(acdbHostApplicationServices()->workingDatabase());
if(!DictionaryId.isValid())
{
//该词典还未创建
es = AcDbRasterImageDef::createImageDictionary(acdbHostApplicationServices()->workingDatabase(),DictionaryId);
if(es!=Acad::eOk)
{
return es;
}
} //打开词典
es = acdbOpenObject((AcDbObject*&)pDictionary,DictionaryId,AcDb::kForWrite);
if(es!=Acad::eOk)
{
return es;
} bNameInUse=pDictionary->has(KeyWord);
//如果词典中不存在该影像
if(!bNameInUse)
{
pAcDbRasterImageDef=new AcDbRasterImageDef;
es = pAcDbRasterImageDef->setSourceFileName(strFilePathName);
if(es!=Acad::eOk)
{
pDictionary->close();
return es;
} es = pAcDbRasterImageDef->load();
if(es!=Acad::eOk)
{
pDictionary->close();
return es;
}
es = pDictionary->setAt(KeyWord,pAcDbRasterImageDef,RasterImgDefId);
if(es!=Acad::eOk)
{
pDictionary->close();
return es;
}
pAcDbRasterImageDef->close();
}
else
pDictionary->getAt(KeyWord,RasterImgDefId);
pDictionary->close(); //设置插入点以及宽度和高度
AcDbRasterImage *pRasterImg=new AcDbRasterImage();
AcGeVector3d CorVert,HigVert;
CorVert.x=pntRightUp.x-pntLeftDown.x;
CorVert.y=;
CorVert.z=;
HigVert.x=;
HigVert.y=pntRightUp.y-pntLeftDown.y;
HigVert.z=;
pRasterImg->setImageDefId(RasterImgDefId);
pRasterImg->setOrientation(AcGePoint3d(pntLeftDown.x,pntLeftDown.y,),CorVert,HigVert);
pRasterImg->setDisplayOpt(AcDbRasterImage::kTransparent , Adesk::kTrue);
es=pRasterImg->setLayer(strCadLayerName);
if(es!=Acad::eOk)
{
pRasterImg->close();
return es;
} //添加到数据库
AcDbDatabase *pDb=acdbHostApplicationServices()->workingDatabase();
AcDbBlockTable *pBt=NULL;
AcDbBlockTableRecord *pRc=NULL;
es=pDb->getBlockTable(pBt,AcDb::kForRead);
if(es!=Acad::eOk)
{
pRasterImg->close();
return es;
}
es=pBt->getAt(ACDB_MODEL_SPACE,pRc,AcDb::kForWrite);
if (es!=Acad::eOk)
{
pBt->close();
pBt=NULL;
pRasterImg->close();
return es;
} Acad::ErrorStatus result=pRc->appendAcDbEntity(RasterImgId,pRasterImg);
if(result!=Acad::eOk)
{
pRc->close();
pBt->close();
pRasterImg->close();
return es;
}
ImgId=RasterImgId; pRc->close();
pBt->close();
pRasterImg->close();
return es;
}

arx 插入图片的更多相关文章

  1. C#向PPT文档插入图片以及导出图片

    PowerPoint演示文稿是我们日常工作中常用的办公软件之一,而图片则是PowerPoint文档的重要组成部分,那么如何向幻灯片插入图片以及导出图片呢?本文我将给大家分享如何使用一个免费版Power ...

  2. MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览

    之前在 MWeb 中打开非文档库中的 Markdown 文档,如果文档中有引用到本机图片,是没办法在 MWeb 中显示出来和预览的.这是因为 Apple 规定在 Mac App Store(MAS) ...

  3. C#操作word的一些基本方法(word打印,插入文件,插入图片,定位页眉页脚,去掉横线)

    Microsoft.Office.Interop.Word.Application wordApp = new ApplicationClass() word对象 2. Microsoft.Offic ...

  4. java POI实现向Excel中插入图片

          做Web开发免不了要与Excel打交道.今天老大给我一个任务-导出Excel.开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可.但是有一点不同,就是要加入图片, ...

  5. MarkDown插入图片

    MarkDown插入图片的语法 ·编辑器:MacDown 比如博客园的Logo,URL是 http://static.cnblogs.com/images/logo_small.gif 在要插入图片的 ...

  6. OpenXml入门---word里面插入图片

    下面介绍如何在word里面插入图片,顺便小弟发现MSDN官网有完整的OpenXML教程,虽然是全英文的不过还是很有帮助的. Tips,原来摘抄代码里面没有模板,在copy过来发现插入word中的图片大 ...

  7. 【VBA】批量插入图片

    解决如下问题: 需要批量导入图片到Excel 图片放在一个文件夹中 图片有严格的顺序关系,即按照:共通名_编号的方式命名. 图片格式统一,即均为同一格式. 有两种方式可以插入图片到Excel中,其一为 ...

  8. 【POI】使用POI处理xlsx的cell中的超链接 和 插入图片 和 设置打印区域

    使用POI对xlsx中插入超链接和 插入图片 package com.it.poiTest; import java.awt.image.BufferedImage; import java.io.B ...

  9. LaTex 插入图片

    \usepackage{mathrsfs} \usepackage{amsmath} \usepackage{graphicx} 宏包 \includegraphics{graph01.eps} %插 ...

随机推荐

  1. 在head里的CSS link 竟然粗如今body里了?

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGVhY2Vfb2Zfc291bA==/font/5a6L5L2T/fontsize/400/fill/I0 ...

  2. POJ2773 Happy 2006【容斥原理】

    题目链接: http://poj.org/problem?id=2773 题目大意: 给你两个整数N和K.找到第k个与N互素的数(互素的数从小到大排列).当中 (1 <= m <= 100 ...

  3. linux 下查看一个进程执行路径

    在linux下查看进程大家都会想到用 ps -ef|grep XXX 但是看到的不是全路径.怎么看全路径呢? 每一个进程启动之后在 /proc以下有一个于pid相应的路径 比如:ps -ef|grep ...

  4. (三)Java 开发环境配置

    window系统安装java 下载JDK   首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downl ...

  5. Codeforces Round #344 (Div. 2) E. Product Sum 二分斜率优化DP

    E. Product Sum   Blake is the boss of Kris, however, this doesn't spoil their friendship. They often ...

  6. BZOJ1179 : [Apio2009]Atm 缩点+spfa

    1179: [Apio2009]Atm Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 2069  Solved: 826[Submit][Status ...

  7. Codevs 1744 格子染色==BZOJ 1296 粉刷匠

    1744 格子染色  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 有 n 条木板需要被粉 ...

  8. 利用JProfile 7分析内存OOM

    今天发现一个OOM问题,想来可能是有部分内存没有正确释放导致的 于是想到了之前使用的JProfile来分析一下 由于大概知道哪个类没有释放,可以在Memory Views里看一下对应的类有多少实例来确 ...

  9. luogu 1901 发射站

    题目大意: 一个数列,它左边第一个比它高的人和右边第一个比它高的人要加上它的权值 思路: 单调栈维护一个单调递减的栈 正反各维护一遍 #include<iostream> #include ...

  10. Python不兼容问题

    今天遇到了一个Python2与3不兼容的坑. ride是基于robot框架的python自动化ui,但它只支持python2,而我电脑环境只有python3,想跑别人基于ride编写的测试用例,折腾了 ...