几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(C++) (http://www.dimcax.com/hust/forumdisplay.php?f=34)
-   -   【转帖】!stub.cpp@148错误提示? (http://www.dimcax.com/hust/showthread.php?t=6029)

yang686526 2009-04-14 02:29 PM

【转帖】!stub.cpp@148错误提示?
 
!stub.cpp@148错误提示?
!stub.cpp@148错误提示?
acdbobjectid blockid;
int retcode = 0;
acdbblocktable *pblocktable = null;
acdbblocktablerecord* pblockrecord
= new acdbblocktablerecord;

pblockrecord->setname("样式");
acgepoint3d basepoint(aspnt3d(pt));
pblockrecord->setorigin(basepoint);
acdbhostapplicationservices()->workingdatabase()
->getsymboltable(pblocktable, acdb::kforwrite);
pblocktable->add(blockid, pblockrecord);
pblocktable->close();
acdbpolyline *ppoly=new acdbpolyline();
//形成闭合多段线 已经定义pd1,pd2,pd3;
ppolya->addvertexat(0,pd1,0,-1,-1);
ppolya->addvertexat(1,pd2,0,-1,-1);
ppolya->addvertexat(2,pd3,0,-1,-1);
ppolya->setclosed(adesk::ktrue);

acdbobjectid id;
pblockrecord->appendacdbentity(ida, ppoly);
ppoly->close();
acdbobjectidarray idarr;
idarr.append(ida);
acgevector3d normal(0,0,1);
acdbhatch *p_acdbhatch1=new acdbhatch();
p_acdbhatch1->setnormal(normal);
p_acdbhatch1->setelevation(0.0);
p_acdbhatch1->setassociative(true);
p_acdbhatch1->setpatternscale(5);
p_acdbhatch1->evaluatehatch(false);
if(acad::eok!=p_acdbhatch1->appendloop(acdbhatch::kdefault ,idarr))
{

delete p_acdbhatch1;
return ;
}
//执行下面这条语句时候出现错误提示。autocad运行挺长时间才出现错误提示
//用vc调试,好像是进程已经exit(0)终止了
if( acad::eok!=p_acdbhatch1->setpattern(acdbhatch::kpredefined,"solid"))
{

delete p_acdbhatch1;
return ;
}
if( acad::eok!=p_acdbhatch1->sethatchstyle(acdbhatch::knormal))
{

delete p_acdbhatch1;
return ;
}
if(acad::eok!=p_acdbhatch1->evaluatehatch(false))
{
delete p_acdbhatch1;
return ;
}

acdbobjectid hatchid1;
pblockrecord->appendacdbentity(hatchid1,p_acdbhatch1);
p_acdbhatch1->close();
上面是定义块的一部分代码,在当前文档中使用没有问题,但是用executeinapplicationcontext(void (*procaddr)(void *)pfunc,void *pdata ) const = 0;
函数切换文档,打开另一个文件,时候,在pfunc函数中使用,执行上述代码出现的错误;新文档已经设置了当前文档和活动文档,并且设置了写保护,加入实体没有问题。
请帮忙分析一下,是什么原因引起?
新文档已经设置了当前文档和活动文档,并且设置了写保护,加入实体没有问题。
请问如何实现?可以设置当前活动文档,但是不能立即向该文档加入实体,必须另外重新再发一个命令。可以和你交流,欢迎和我联系?
qq:19154480
msn:freejustinji@hotmail.com
e-mail:justin3@citiz.net


所有的时间均为北京时间。 现在的时间是 04:52 PM.