乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 52|回复: 3

当发生加载错误该怎样修改程序

[复制链接]

9

主题

22

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
58
发表于 2003-8-11 11:22:00 | 显示全部楼层 |阅读模式
我编写了一个计算.dwg文件中某一直线的程序,加载文件时提示发生如下错误,请问各位高手该如何修改,谢谢
_appload acrxGetApiVersion 在 E:\exeice\test\Debug\test.arx (程序目录)中未找到
确定与 rxapi.lib 存在有效的应用程序连接并输出该符号。AcRxDynamicLinker
加载E:\exeice\test\Debug\test.arx失败。
D:\program files\ 2002\acad.exe无法加载 test.arx 文件
回复

使用道具 举报

9

主题

22

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
58
发表于 2003-8-11 11:26:00 | 显示全部楼层
源程序的代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//提取属性
void
LineEdit()
{
    AcDbObjectId transId;
    AcDbDatabase* pDb;
    char *fname;
    struct resbuf *rb;
    //提示让用户选择一个图形文件
    rb = acutNewRb(RTSTR);
    int stat = acedGetFileD(&quotick a drawing", NULL, "dwg", 0, rb);
    //如果选择有误,则提示拥用户推出,命令
    if ((stat != RTNORM) || (rb == NULL))
        {
        acutPrintf("\nYou must pick a drawing file.");
        return;
    }
   //将获得的文件名转化为字符串
    fname = (char*)acad_malloc(strlen(rb->resval.rstring) + 1);
    strcpy(fname, rb->resval.rstring);
    acutRelRb(rb);
   // 打开前面选中的图形文件
    pDb = new AcDbDatabase(Adesk::kFalse);
    if (pDb->readDwgFile(fname) != Acad::eOk)
        {
        acutPrintf("\nSorry, that draing is probably already open.");
        return;
    }
    acutPrintf("\nThe name of the draing is : %s",fname);
        //获得这个图形文件数据库的块表
    AcDbBlockTable *pBlockTable;
    pDb->getSymbolTable(pBlockTable, AcDb::kForRead);
   
    //获得模型空间块表记录
        AcDbBlockTableRecord *pOtherMsBtr;
    pBlockTable->getAt(ACDB_MODEL_SPACE, pOtherMsBtr, AcDb::kForRead);
    pBlockTable->close();//    delete pDb;
//    pDb = NULL;
//    acad_free(fname);
     
    ads_name en;
        ads_point pt;
        AcDbEntity *pEnt;
        AcDbObjectId pEntId;
        //提示选择判断中心线
    acedEntSel("\nPlease Select a  center line which used to be tested.",en,pt);
        //获得选中对象的ID
        acdbGetObjectId(pEntId,en);
        //打开对象
    acdbOpenObject(pEnt,pEntId,AcDb::kForWrite);
        //获取实体的长度
   
        AcGePoint3d  sPnt,ePnt;
        double LineLength;
        if (pEnt->isKindOf(AcDbLine::desc()))
        {
                sPnt=((AcDbLine *)pEnt)->startPoint();
                ePnt=((AcDbLine *)pEnt)->endPoint();
        LineLength=sqrt(((sPnt.x)-(ePnt.x))*((sPnt.x)-(ePnt.x))+((sPnt.y)-(ePnt.y))*((sPnt.y)-(ePnt.y)));
  
                acutPrintf("\nThe length of the line is: %f",LineLength);
              
        }
        pOtherMsBtr->close();
        pEnt->close();
}
void
initApp()
{
    acedRegCmds->addCommand("test",
                "CHECK",
                "CHECK",
                ACRX_CMD_MODAL,
                LineEdit);
}
void unloadApp()
{
    acedRegCmds->removeGroup("test");
}
extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)
{
    switch (msg) {
    case AcRx::kInitAppMsg:
        acrxDynamicLinker->unlockApplication(appId);
        acrxDynamicLinker->registerAppMDIAware(appId);
        initApp();
        break;
    case AcRx::kUnloadAppMsg:
        unloadApp();
        break;
   
    }
    return AcRx::kRetOK;
}
回复

使用道具 举报

15

主题

66

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
126
发表于 2003-8-11 15:30:00 | 显示全部楼层
你的程序要調用這人庫嗎.如不要就不要包進來
回复

使用道具 举报

9

主题

22

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
58
发表于 2003-8-16 20:53:00 | 显示全部楼层
谢谢,我的问题解决了.
不过现在又出现了新问题,当调用上面的程序打开一个.dwg文件时,在AUTOCA工作区中并没有打开指定的文件,而且在AUTOCAD视图菜单中也没有列出指定的文件,虽然输出的文件名仍然是指定的文件名,请问各位前辈高手,该如何解决.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 11:51 , Processed in 0.171775 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表