乐筑天下

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

一个内部错误。帮忙解决下。多谢!!!

[复制链接]

10

主题

19

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2005-1-6 18:21:00 | 显示全部楼层 |阅读模式
我的这段代码在arx/2002中运行后竟然有问题:
AcDbEntity*
selectEntity(AcDbObjectId& eId, AcDb::OpenMode openMode)
{
                         ads_name en;
                         ads_point pt;
                         acedEntSel("\nSelect an entity: ", en, pt);
                         // Exchange the ads_name for an object ID.
                         //
                         acdbGetObjectId(eId, en);
                         AcDbEntity * pEnt;
                         acdbOpenObject(pEnt, eId, openMode);
                         return pEnt;
}
// This is command 'SS3'
void css3()
{
                                                         // TODO: Implement the command

                         AcDbObjectId eId;
                                                         selectEntity(eId,AcDb::kForWrite);
}
运行后说内部错误,[b] !U:\\global\\src\\corecad\CORESRC\scandr.cpp@773:eWasOpenForWrite
急!多谢多谢
         
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2005-1-6 18:56:00 | 显示全部楼层
我在2004下没有问题,不过
selectEntity(eId,AcDb::kForWrite);你的函数是AcDbEntity*类型的(返回值)
AcDbEntity * ent = selectEntity(eId,AcDb::kForWrite);
回复

使用道具 举报

34

主题

372

帖子

7

银币

中流砥柱

Rank: 25

铜币
508
发表于 2005-1-6 21:12:00 | 显示全部楼层
前面定义的函数没有问题,问题可能在SS3命令的实现函数中,但是该函数的内容明显不全…
有可能在执行selectEntity函数之前eId对象没有被关闭。
回复

使用道具 举报

10

主题

19

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2005-1-6 21:32:00 | 显示全部楼层
非常感谢您的回答,我的代码就这个样子,没有省略什么,
就是说我的arx程序就这2个函数,而且ss3函数就那么2行。呵呵
这么说就是我的autocad2002破解版不好(用的D版),而且出现哪个错误对话框后,还跳出个对话框说要关闭autocad,接着还会跳出一个对话框说“版权锁”有问题。
多谢,下次我重装个autocad试试。然后把检查的结果发上来。

回复

使用道具 举报

10

主题

19

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2005-1-6 22:01:00 | 显示全部楼层
另一小问:
有谁有李世国的那本ARX编程及应用书的源代码?
谢了
回复

使用道具 举报

10

主题

19

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2005-1-7 00:56:00 | 显示全部楼层

这个问题不解决好多事都不能做,郁闷:下面这个完整的代码:
// This is command 'D'
void cd()
{
                         // TODO: Implement the command
                         // TODO: Implement the command
                         ads_name en;
                         double radius, height;
                         ads_point pt;
                         AcGePoint3d startPt,endPt,centerPt;
                         char *str, prompt[256];
                         AcDbLine *pLine;
                         AcDbCircle *pCircle;
                         AcDbText *pText;
                         if(ads_entsel("\n选择实体:",en,pt)!=RTNORM)
                         {
                                                  ads_printf("没有选择实体\n");
                                                  return;
                         }
                         AcDbObjectId eld;
                         acdbGetObjectId(eld,en);
                         AcDbEntity *pEnt;
                         acdbOpenObject(pEnt, eld, AcDb::kForWrite);
                         pEnt->highlight(kNullSubent);
                         if(strcmp(pEnt->isA()->name(),"AcDbLine")==0)
                         {
                                                  ads_printf(pEnt->linetype());
                                                  pEnt->setLinetype("center");
                                                  pEnt->setLinetypeScale(5.0);
                                                  pLine=AcDbLine::cast(pEnt);
                                                  ads_getpoint(NULL,"\起点:",asDblArray(startPt));
                                                  pLine->setStartPoint(startPt);
                                                  ads_getpoint(NULL,"\n终点:",asDblArray(endPt));
                                                  pLine->setEndPoint(endPt);

                         }
                         if(strcmp(pEnt->isA()->name(),"AcDbCircle")==0)
                         {
                                                  pCircle=AcDbCircle::cast(pEnt);
                                                  centerPt=pCircle->center();
                                                  pt[X]=centerPt[X];
                                                  pt[Y]=centerPt[Y];
                                                  pt[Z]=centerPt[Z];
                                                  ads_getpoint(pt,"\n圆心:",asDblArray(centerPt));
                                                  ads_getreal("\n半径:",&radius);
                                                  pCircle->setCenter(centerPt);
                                                  pCircle->setRadius(radius);

                         }
                         if(strcmp(pEnt->isA()->name(),"AcDbText")==0)
                         {
                                                  pText=AcDbText::cast(pEnt);
                                                  startPt=pText->position();
                                                  str=pText->textString();
                                                  pt[X]=startPt[X];
                                                  pt[Y]=startPt[Y];
                                                  pt[Z]=startPt[Z];

                                                  ads_getpoint(pt,"\n起点:",asDblArray(startPt));
                                                  ads_getreal("\n字高:",&height);
                                                  strcpy(prompt,"\ntext:");
                                                  ads_getstring(NULL,prompt,str);
                                                  pText->setPosition(startPt);
                                                  pText->setHeight(height);
                                                  pText->setTextString(str);

                         }
                         pEnt->close();
}

分配的指针也都close()了。可是我在autocad2002下就是不能运行。调试后发现问题也是出在哪个实体选择和取得指针哪里。呜呜~~~
郁闷啊。
请帮忙解决下谢谢

另,又装了autocad 2000,运行后也是内部错误,提示和原因相同~~
回复

使用道具 举报

10

主题

19

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2005-1-7 08:38:00 | 显示全部楼层
把整个源程序传上去看看。多谢
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:alaffbj13zu.rar 
下载次数:0  文件大小:18.16 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]

回复

使用道具 举报

10

主题

19

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2005-1-7 16:11:00 | 显示全部楼层
调试了一天,再仔细看了看代码,该关闭的指针什么的,都关闭了啊。奇怪,就是出问题,郁闷~~~~
上面的哪个代码太长了。选择传个只有几行代码的程序。麻烦高手指点迷津。
多谢。
getpoint.rar
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 03:53 , Processed in 0.161989 second(s), 73 queries .

© 2020-2025 乐筑天下

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