[ARX]求助,请高手指点!!!
我的程序在VC中编译没错,但运行到输入标号,按回车后就出现异常,但CAD不会退出!请高手指点一二!!!我的程序如下:void ACADbiaohao()
{
#ifdef OARXWIZDEBUG
acutPrintf ("\nOARXWIZDEBUG - ACADbiaohao() called.");
#endif // OARXWIZDEBUG
// TODO: Implement the command
AcGePoint3d sp,ep,dp,textp;
AcGeVector3d normal(0,0,1);
char cha;
if(acedGetPoint(NULL,"\n请选择所标对象:",asDblArray(sp))!=RTNORM)
return;
if(acedGetPoint(asDblArray(sp),"\n请选定标号位置:",asDblArray(dp))!=RTNORM)
return;
if(acedGetString(Adesk::kTrue,"\n请输入标号:",cha)!=RTNORM)
return;
if(dp>sp)
{
ep=dp+10;
ep=dp;
ep=0;
textp=dp+3;
textp=dp+1;
textp=0;
}
else
{
ep=dp-10;
ep=dp;
ep=0;
textp=dp-7;
textp=dp+1;
textp=0;
}
AcDbBlockTable *pbt;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pbt,AcDb::kForRead);
AcDbBlockTableRecord *pbtr;
pbt->getAt(ACDB_MODEL_SPACE,pbtr,AcDb::kForWrite);
pbt->close();
AcDbLine *pline=new AcDbLine(sp,dp);
AcDbLine *pline1=new AcDbLine(dp,ep);
AcDbCircle *pcircle=new AcDbCircle(sp,normal,0.3);
AcDbObjectId lineid;
AcDbObjectId lineid1;
AcDbObjectId circleid;
pbtr->appendAcDbEntity(lineid,pline);
pbtr->appendAcDbEntity(lineid1,pline1);
pbtr->appendAcDbEntity(circleid,pcircle);
AcDbText *ptext=new AcDbText(textp,cha,NULL,3,0);
pbtr->appendAcDbEntity(ptext);
ptext->close();
pcircle->close();
pbtr->close();
pline->close();
pline1->close();
} 楼主请再说详细一点好么? 回车是直接就回车还是输入了一串字符再回车? 异常是什么样的异常? 有没有什么错误报告跳出来? 还是就直接退出程序没有进行后面的操作? 是输入几个数字后回车,比如23,7.然后就弹出异常出错对话框,在视图区没有任何线条和数字出现,多谢你了!!对话框出错说我的ARX文件命令中发生异常, 我的环境是VC6+ARX2002,我编译了你的源代码,并加入了如下的头文件,没有出现任何异常,并且出现了标注的线条和数字,你把你的头文件包含下面的试试
#include "geassign.h"
#include "dbsymtb.h"
#include "dbents.h" 除了头文件之外, 楼主也看看是不是因为char cha太小了, 放不下多于三个字的字串..23,7这样的字串里逗号也是要算字符的..改成试一下..虽然偶不觉得这个会造成fatal error, 但是有些时候什么事情都会发生.. 谢谢你们了!!! 真的cha的大原因!!多谢多谢!!!!
页:
[1]