天气与日历 切换到窄版

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

AutoCAD Automation

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

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    #pragma once


    #ifdef _ACAD2004
    #include // AutoCAD2004 et supérieurs
    #else
    #include // AutoCAD2002
    #endif

    #define ERR_NOERROR 0
    #define ERR_CLSIDFROMPRGID -1
    #define ERR_GETACTIVEOBJECT -2
    #define ERR_UNK_QUERYINTERFACE -3
    #define ERR_ACAD_QUERYINTERFACE -4
    #define ERR_GETDOCUMENTS -5
    #define ERR_OPENFILE -6


    class CAcadDriver
    {
    public:
    CAcadDriver(void);
    ~CAcadDriver(void);
    private:
    int Init(void);
    IAcadApplication *pAcad;
    IAcadDocuments *m_acaddocs;
    public:
    int OpenDoc(char *filename);
    int CloseDoc(void);
    public:
    IAcadDocument *pdoc;
    CString m_strCurrentFile;
    };


    // acaddriver.cpp


    #include "StdAfx.h"
    #include "acaddriver.h"
    #include // ConvertStringToBSTR

    // Acad 2007

    extern const IID IID_IAcadApplication =
    {0x8F17437C,0x2EFB,0x4FC4,{0x81,0x88,0xEE,0xFA,0x50,0xFE,0x71,0x47}};

    CAcadDriver::CAcadDriver(void)
    {
    pAcad = NULL;
    m_acaddocs = NULL;
    m_strCurrentFile = "";
    pdoc = NULL;
    }


    int CAcadDriver::Init(void)
    {
    HRESULT hr = ERR_NOERROR;
    CLSID clsid;
    LPUNKNOWN pUnk = NULL;
    LPDISPATCH pAcadDisp = NULL;

    CString m_strMessage;

    hr = ::CLSIDFromProgID(L"AutoCAD.Application",&clsid);

    if (FAILED(hr))
    {
    return(ERR_CLSIDFROMPRGID);
    }

    if(::GetActiveObject(clsid, NULL, &pUnk) != S_OK) // AutoCAD Actif ..
    {
    return(ERR_GETACTIVEOBJECT);
    }

    hr = pUnk->QueryInterface(IID_IDispatch, (LPVOID*) &pAcadDisp);
    pUnk->Release();

    if (FAILED(hr))
    {
    return(ERR_UNK_QUERYINTERFACE);
    }

    hr = pAcadDisp->QueryInterface(IID_IAcadApplication,(void**)&pAcad);

    pAcadDisp->Release();

    if (FAILED(hr))
    {
    return(ERR_ACAD_QUERYINTERFACE);
    }

    //pAcad->put_Visible(false);

    hr = pAcad->get_Documents(&m_acaddocs);

    if (FAILED(hr))
    {
    return(ERR_GETDOCUMENTS);
    }

    return(ERR_NOERROR);
    }

    CAcadDriver::~CAcadDriver(void)
    {
    if ( m_acaddocs != NULL )
    {
    m_acaddocs->Release();
    m_acaddocs = NULL;
    }

    if ( pAcad != NULL )
    {
    pAcad->Release();
    pAcad = NULL;
    }
    }

    int CAcadDriver::OpenDoc( char *filename )
    {
    HRESULT hr = ERR_NOERROR;
    COleVariant
    covTrue((short)TRUE),
    covFalse((short)FALSE),
    covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

    if( m_acaddocs == NULL )
    {
    int init = this->Init();
    if( init != ERR_NOERROR )
    return(init);
    }

    if( pdoc != NULL )
    {
    this->CloseDoc();
    }

    // convert to unicode

    BSTR strFile = _com_util::ConvertStringToBSTR( filename );

    #ifdef _ACAD2004 // AutoCAD2004 et supérieurs
    hr = m_acaddocs->Open( strFile, covTrue, COleVariant(""), &pdoc);
    #else
    hr = m_acaddocs->Open( strFile, covTrue, &pdoc);
    #endif

    SysFreeString(strFile);

    if (FAILED(hr))
    {
    return(ERR_OPENFILE);
    }

    IAcadDatabase *pDatabase;

    pdoc->get_Database( &pDatabase );

    return ERR_NOERROR;
    }

    int CAcadDriver::CloseDoc(void)
    {
    COleVariant
    covTrue((short)TRUE),
    covFalse((short)FALSE),
    covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

    if( pdoc != NULL )
    {
    pdoc->Close(covFalse,covOptional);
    pdoc->Release();
    pdoc = NULL;
    }
    return 0;
    }

     

     

     

     

    AutoCAD Automation
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-7-1 05:17 , Processed in 0.055806 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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