找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 819|回复: 11

[ARX程序]:求助!快帮我看一下!

[复制链接]
发表于 2002-10-26 11:01:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
程序编译通过,在AutoCAD里加载后,执行,出现“Unhandled Exception at C00000005"在某个地址,然后就没办法进行了!这种错误我以前就碰到过,一直不知如何处理,程序也没有什么问题,希望高手能够帮忙解决以下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-26 11:05:33 | 显示全部楼层

Re: [ARX程序]:求助!快帮我看一下!

最初由 hsf-s 发布
[B]程序编译通过,在AutoCAD里加载后,执行,出现“Unhandled Exception at C00000005"在某个地址,然后就没办法进行了!这种错误我以前就碰到过,一直不知如何处理,程序也没有什么问题,希望高手能够帮忙解决以下。 [/B]


那就是运行时候错误了,你把加载初始化要执行的代码贴到论坛来吧。

一般是你错误的使用了一个内存地址。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-26 14:48:49 | 显示全部楼层
我现在还是初学者,是参照书写的,初始化部分是这样的:
void initApp()
{
        acedRegCmds->addCommand("A16","A16","A16",ACRX_CMD_MODAL,CallarxApp);
}
请多指教!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-26 16:51:34 | 显示全部楼层
从这句话发现问题可是比较难的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-26 17:00:03 | 显示全部楼层
最初由 hsf-s 发布
[B]我现在还是初学者,是参照书写的,初始化部分是这样的:
void initApp()
{
        acedRegCmds->addCommand("A16","A16","A16",ACRX_CMD_MODAL,CallarxApp);
}
请多指教! [/B]


你把这个CPP文件贴到论坛来吧,让斑竹老何给你看看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-27 22:41:19 | 显示全部楼层
有字数限制,我只好发两帖:
A16.cpp
#include <aced.h>
#include <dbgroup.h>
#include <dbsymtb.h>
#include <dbents.h>
#include <adslib.h>

void makeGroup();

void CallarxApp()
{
        makeGroup();
}

void initApp()
{
        acedRegCmds->addCommand("A16","A16","A16",ACRX_CMD_MODAL,CallarxApp);
}

void unloadApp()
{
        acedRegCmds->removeGroup("A16");
}
extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg,void *pkt)
{
        switch(msg)
        {
        case AcRx::kInitAppMsg:
                acrxDynamicLinker->unlockApplication(pkt);
                initApp();
                break;
        case AcRx::kUnloadAppMsg:
                unloadApp();
        }
        return AcRx::kRetOK;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-27 22:42:25 | 显示全部楼层
void makeGroup()
{
        AcDbDictionary *pGroupDict;
        acdbHostApplicationServices()->workingDatabase()->
                getGroupDictionary(pGroupDict,AcDb::kForWrite);
        AcDbGroup *pGroup0=new AcDbGroup();
        AcDbGroup *pGroup1=new AcDbGroup();
        AcDbGroup *pGroup2=new AcDbGroup();
        AcDbObjectId groupId0,groupId1,groupId2;
        pGroupDict->setAt("GROUP_ALL",pGroup0,groupId0);
        pGroupDict->setAt("GROUP_LINE",pGroup1,groupId1);
        pGroupDict->setAt("GROUP_TEXT",pGroup2,groupId2);
        pGroupDict->close();
        ads_name sset;
        if(ads_ssget(NULL,NULL,NULL,NULL,sset)!=RTNORM)
        {
                ads_printf("\n没有选中任何目标!");
                return;
        }
        long i,length;
        ads_name ename;
        AcDbObjectId entId;
        ads_sslength(sset,&length);
        for(i=0;i<length;i++)
        {
                ads_ssname(sset,i,ename);
                acdbGetObjectId(entId,ename);
                pGroup0->append(entId);
        }
        ads_ssfree(sset);
    AcDbGroupIterator *pIter=pGroup0->newIterator();
        AcDbObject *pObj;
        for(;!pIter->done();pIter->next())
        {
                pIter->getObject(pObj,AcDb::kForRead);
                        if(pObj->isKindOf(AcDbLine::desc())||pObj->isKindOf(AcDbText::desc()))
                        {
                                pObj->close();
                                pGroup0->remove(pIter->objectId());
                                if(pObj->isKindOf(AcDbLine::desc()))
                                        pGroup1->append(pIter->objectId());
                                else
                                        pGroup2->append(pIter->objectId());
                        }
                        else
                        {
                                pObj->close();
                        }
                        delete pIter;
                        pGroup0->setVisibility(AcDb::kInvisible);
                        pGroup1->setColorIndex(1);
                        pGroup2->setColorIndex(3);
                        pGroup2->setSelectable(Adesk::kFalse);
                        pGroup0->close();
                        pGroup1->close();
                        pGroup2->close();
        }
}
我用的是CAD2000,自然是盗版的,不会和这个有关系吧?!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-27 22:55:02 | 显示全部楼层
怪了!包含的头文件名怎么没贴上去,还有一句不完整!补充一下,头文件有aced.h dbgroup.h dbsymtb.h dbents.h adslib.h,不完整的那一句为“for(i=0;i<length;i++)
劳驾各位费点神!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-27 23:11:54 | 显示全部楼层
原来是小于号和小于号以后的部分都贴不上去!怎么回事呢?
不要嫌我罗嗦,那一句是:for(i=0;i小于length,i++)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-27 23:26:41 | 显示全部楼层
最初由 hsf-s 发布
[B]原来是小于号和小于号以后的部分都贴不上去!怎么回事呢?
不要嫌我罗嗦,那一句是:for(i=0;i小于length,i++) [/B]


可以编辑帖子,把所有 > < 后面留个空格就可以了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-28 14:12:09 | 显示全部楼层
错在delete pIter;放置位置不对。
另外:
if(ads_ssget(NULL,NULL,NULL,NULL,sset)!=RTNORM)
{
//这里应该加上对pGroup0~2的关闭或者删除
ads_printf("\n没有选中任何目标!");
return;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-28 20:32:17 | 显示全部楼层
谢谢,果然是这样!学无止境,努力学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 16:35 , Processed in 0.415894 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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