arx 插入图片
#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 插入图片的更多相关文章
- C#向PPT文档插入图片以及导出图片
PowerPoint演示文稿是我们日常工作中常用的办公软件之一,而图片则是PowerPoint文档的重要组成部分,那么如何向幻灯片插入图片以及导出图片呢?本文我将给大家分享如何使用一个免费版Power ...
- MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览
之前在 MWeb 中打开非文档库中的 Markdown 文档,如果文档中有引用到本机图片,是没办法在 MWeb 中显示出来和预览的.这是因为 Apple 规定在 Mac App Store(MAS) ...
- C#操作word的一些基本方法(word打印,插入文件,插入图片,定位页眉页脚,去掉横线)
Microsoft.Office.Interop.Word.Application wordApp = new ApplicationClass() word对象 2. Microsoft.Offic ...
- java POI实现向Excel中插入图片
做Web开发免不了要与Excel打交道.今天老大给我一个任务-导出Excel.开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可.但是有一点不同,就是要加入图片, ...
- MarkDown插入图片
MarkDown插入图片的语法 ·编辑器:MacDown 比如博客园的Logo,URL是 http://static.cnblogs.com/images/logo_small.gif 在要插入图片的 ...
- OpenXml入门---word里面插入图片
下面介绍如何在word里面插入图片,顺便小弟发现MSDN官网有完整的OpenXML教程,虽然是全英文的不过还是很有帮助的. Tips,原来摘抄代码里面没有模板,在copy过来发现插入word中的图片大 ...
- 【VBA】批量插入图片
解决如下问题: 需要批量导入图片到Excel 图片放在一个文件夹中 图片有严格的顺序关系,即按照:共通名_编号的方式命名. 图片格式统一,即均为同一格式. 有两种方式可以插入图片到Excel中,其一为 ...
- 【POI】使用POI处理xlsx的cell中的超链接 和 插入图片 和 设置打印区域
使用POI对xlsx中插入超链接和 插入图片 package com.it.poiTest; import java.awt.image.BufferedImage; import java.io.B ...
- LaTex 插入图片
\usepackage{mathrsfs} \usepackage{amsmath} \usepackage{graphicx} 宏包 \includegraphics{graph01.eps} %插 ...
随机推荐
- Eclipse插件开发中的选择监听机制(Selection Provider-Listener)
Eclipse插件开发中的选择监听机制(Selection Provider-Listener) 监听机制是eclipse插件开发或rcp应用开发中经常使用的技术,比方点击TableViewer或Tr ...
- SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行。
Oracle数据导入报错:SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行. 原因:进入sqlplus里是不能运行imp的(sqlplus不认 ...
- 华为云分布式数据库中间件DDM和开源MyCAT对比
前言 华为云分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离.弹性扩容等能力,应对海量 ...
- react 中的 setState
语法:setState(newState [,callback]) 1.只要有入门基础的同学都知道 setState({...}) 是更新组件中的 state 内容 2.但是,setState 是异步 ...
- Iteye已经沦陷
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHl5YXJpZXM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...
- 【bzoj3609】[Heoi2014]人人尽说江南好
可以算出合并多少次. #include<algorithm> #include<iostream> #include<cstdlib> #include<cs ...
- HNOI模拟 Day3.22
第一题: 盾盾的打字机 (drdrd) [题目描述] 盾盾有一个非常有意思的打字机,现在盾哥要用这台打字机来打出一段文章. 由于有了上次的经验,盾盾预先准备好了一段模板 A 存在了内存中,并以此为基础 ...
- 什么是sibling and tail recursive calls
1 tail call 在函数f中调用函数b,如果这个调用是函数f中执行的最后一条指令,那么这个调用就称为tail call. 例子: int foo(float a, float b) { ... ...
- 千万数据条 用户特征数据 写入mysql
from mysql_tool import * import copy s = ''' INSERT INTO `qqzone`.`myu` (`id`, `uid`, `age`, `gender ...
- CentOS下VI命令整理
Vi共分三种模式,分别是“一般模式”.“编辑模式”与“命令行命令模式”. l 一般模式:vi处理文件时,一进入该文件就是一般模式.在这个模式中,可以使用“上下左右”键来移动光标,可以使 ...