ObjectARX怎么生成exe文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ObjectARX怎么生成exe文件相关的知识,希望对你有一定的参考价值。

AutoCAD 运用ObjectARX二次开发怎么生成.exe文件,以前生成的都是.arx文件,求高手回答,另外怎么给CAD添加新的菜单项

参考技术A 第一个问题:
acad的二次开发方式就是这样的,我们开发出的程序以dll的形式被动态加载到acad.exe的进程空间,再以命令驱动的方式运行。
也许你说的是打包安装文件,那个可以用installershield或setupFactory或VS中的打包msi功能。
第二个问题:
有两种方法:
一是自定义cui文件,以acad支持路径的方法在启动时加载你的cui文件。

二是通过acad提供的tlb库导出的CAcadMenuGroup\CAcadMenu等com类实时创建。

ObjectARX-给cad实体贴图

做cad二次开发的时候,有时会生成三维实体,例如生成3d的钢筋,但是使用3d生成的钢筋比较难看,可以使用下面代码对实体进行贴图,比如找一张铁锈的图片放在钢筋上,就会显示的比较生动


AcDbObjectId CBaseDwg::CreateMaterial(const CString & materialName, COLORREF clr, const CString & pictureFilePath, AcDbDatabase * pDb)
{
    if (NULL == pDb)
        pDb = acdbCurDwg();
    AcDbObjectId idMater = AcDbObjectId::kNull;
    AcDbDictionary* pMatDict = NULL;
    if (Acad::eOk != pDb->getMaterialDictionary(pMatDict, AcDb::kForWrite))
        return idMater;
    if (pMatDict->has(materialName))
    {
        pMatDict->getAt(materialName, idMater);
    }
    else
    {
        AcDbMaterial* pmatObj = new AcDbMaterial;
        pMatDict->setAt(materialName, pmatObj, idMater);
        //材质设置
        AcGiMaterialColor clrMat;
        clrMat.setMethod(AcGiMaterialColor::kOverride);
        clrMat.setFactor(1.0);
        clrMat.setColor(AcCmEntityColor(GetRValue(clr), GetGValue(clr), GetBValue(clr)));
        //添加图片
        AcGiImageFileTexture diffuseMapFile;
        diffuseMapFile.setSourceFileName(pictureFilePath);

        //diffuse map
        AcGiMaterialMap diffuseMap;
        diffuseMap.setTexture(&diffuseMapFile);

        //控制贴图比例
        AcGeMatrix3d transform;
        transform.setToIdentity();
        transform.setToScaling(0.1);
        AcGiMapper mapper;
        mapper = diffuseMap.mapper();
        mapper.setTransform(transform);
        diffuseMap.setMapper(mapper);
        pmatObj->setDiffuse(clrMat, diffuseMap);
        pmatObj->setMode(AcGiMaterialTraits::kRealistic);

        double value = 1.0;
        AcGiMaterialMap opacityMap;
        pmatObj->opacity(value, opacityMap);
        pmatObj->setOpacity(20, opacityMap);//?
        pmatObj->close();
    }
    pMatDict->close();
    return idMater;
}

void CBaseDwg::SetMaterialToEntity(const AcDbObjectId &entId, const AcDbObjectId & materialId)
{
    AcDbEntityPointer pointer;
    if (Acad::eOk != pointer.open(entId, AcDb::kForWrite))
        return;
    pointer->setMaterial(materialId, Adesk::kFalse);
}


函数里面有很多参数,这个要根据图片等细节去进行设置,可以考虑追加一个配置文件进行处理

以上是关于ObjectARX怎么生成exe文件的主要内容,如果未能解决你的问题,请参考以下文章

Objectarx 2010 安装时inc 和inc-win32在VS08中应该加哪个进入包含文件?

老旧ObjectARX SDK下载地址

用vs2010怎么生成exe文件

怎么生成exe文件

vs2008SP1+AutoCAD2010+ObjectARX2010编译出错

vs2010怎么生成exe文件