天气与日历 切换到窄版

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

把你的ARX项目升级到CAD2015

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

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    早就想把PTOOL升级到支持CAD2015-2016了,几个月前安装了VS2012尝试过一次,但是有太多错误,加上当时很忙,所以就没有继续,今天一鼓作气,把一个个问题都给他解决了,并把问题和解决办法均记录了下来,详细列出如下:

    1、GsPreviewCtrl出现了很多问题
    解决办法:
    GsPreviewCtrl.h中进行如下修改:
    修改A

    #if _MSC_VER <= 1600

    virtual void            setGsNode       (AcGsNode * gsnode)
        {
            m_pNode = gsnode;
        }
        virtual AcGsNode*       gsNode          (void) const
        {
            return m_pNode;
        }
    #endif
    修改B

    #if _MSC_VER <= 1600
            AcGsClassFactory    *mpFactory;
    #else
            AcGsGraphicsKernel  *mpFactory;
    #endif

    GsPreviewCtrl.cpp中进行如下修改:

    #if _MSC_VER <= 1600
            // get the GS class factory
            mpFactory = mpManager->getGSClassFactory();
            ASSERT(mpFactory);
    #else
            // get the Graphics Kernel
            AcGsKernelDescriptor descriptor;
            descriptor.addRequirement(AcGsKernelDescriptor::k3DDrawing);
            mpFactory = AcGsManager::acquireGraphicsKernel(descriptor);
            ASSERT(mpFactory);
    #endif

    #if _MSC_VER <= 1600
            mpDevice = mpManager->createAutoCADDevice(m_hWnd);
    #else
            mpDevice = mpManager->createAutoCADDevice(*mpFactory, m_hWnd);
    #endif

    #if _MSC_VER <= 1600
            mpModel = mpManager->createAutoCADModel();
    #else
            mpModel = mpManager->createAutoCADModel(*mpFactory);
    #endif

    另外,项目--》属性--》链接器--》输入--》附加依赖项里增加AcDrawBridge.lib
    相关网站
    Graphic changes in AutoCAD 2015:
    Solved: Re: AcGsClassFactory replacement?


    2、acedCommand不能用了
    写一个通用的函数

    .h
    static void SendCmd(CString strCmd);
    .cpp
    #if defined(_MSC_VER) && (_MSC_VER > 1500) // VS2010, VS2012
    #include "acedCmdNF.h"
    #endif
    void CDwgDatabaseUtil::SendCmd(CString strCmd)
    {
    #if defined(_MSC_VER) && (_MSC_VER == 1500) // VS2008
            acedCommand(RTSTR, strCmd, RTNONE);
    #elif defined(_MSC_VER) && (_MSC_VER > 1500) // VS2010, VS2012
            acedCommandS(RTSTR, strCmd, RTNONE);
    #endif
    }
    相关网站:
    acedCommand 2015


    3、acedGetString定义换了
    老版定义

    int acedGetString(
        int cronly,
        const ACHAR * prompt,
        ACHAR * result
    );

    新版定义

    int acedGetString(
        int cronly,
        const ACHAR * prompt,
        ACHAR * result,
        size_t bufsize
    );

    #if _MSC_VER <= 1600
            int rc = acedGetString(cronly, strPrompt, result);
    #else
            int intSize;
            int rc = acedGetString(cronly, strPrompt, result, intSize);
    #endif

     

     

     

     

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

    本版积分规则

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

    GMT+8, 2024-7-1 05:42 , Processed in 0.057652 second(s), 23 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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