判断ARX程序是否加载及加载卸载操作

本文介绍了一组用于管理AutoCAD ARX程序加载状态的实用函数,包括检查ARX是否加载、动态加载及卸载等功能。这些函数简化了ARX程序在AutoCAD环境中的管理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Arx操作中,经常碰到要判断一个ARX是否被加载了,以及需要在程序中动态加载或者卸载一个ARX程序,于是封装了这几个函数

 

 

// 检查arx程序是否加载,格式“arxname.arx”,不要路径名
// 返回:RTNORM-已加载   RTERROR-没加载
int  YgxAcadUtil::IsArxLoaded(const char* appName)
{
 char tBuf[80];
 size_t appL, tBufL, i;
 int retCode;
 struct resbuf* rb1, * rb2;
 appL = strlen(appName);
 for (rb2 = rb1 = acedArxLoaded(); rb2 != NULL; rb2 = rb2->rbnext) {
  if (rb2->restype = RTSTR) {
   retCode = RTNORM;
   strcpy(tBuf, rb2->resval.rstring);
   tBufL = strlen(tBuf);
   if (appL != tBufL) retCode = RTERROR;
   else {
    for (i=0; i<appL; i++) {
     if (toupper(appName[i]) != toupper(tBuf[i])) {
      retCode = RTERROR;
      break;
     }
    }
    if (retCode == RTNORM) break;
    else retCode = RTERROR;
   }
  }
 }
 acutRelRb(rb1);
 
 return retCode;
 
}

// 不管arx有没有加载,都可以调用,appName为全路径或在CAD搜索路径范围内
// 正常-RTNORM
int  YgxAcadUtil::ArxLoad(const char* appName)
{
 char DriveName[_MAX_DRIVE],PathName[_MAX_PATH],FileName[_MAX_FNAME],Ext[_MAX_EXT];
 _splitpath(appName, DriveName, PathName, FileName, Ext);
 
 char szAppname[80];
 sprintf(szAppname, "%s.%s", FileName, Ext);
 if (RTNORM == YgxAcadUtil::IsArxLoaded(szAppname))
  return RTNORM;
 else
  return acedArxLoad(appName);
}

// 不管arx有没有加载,都可以调用,格式“arxname.arx”,不要路径
// 正常-RTNORM
int  YgxAcadUtil::ArxUnload(const char* appname)
{
 if (RTNORM == YgxAcadUtil::IsArxLoaded(appname))
  return acedArxUnload(appname);
 else return RTNORM;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值