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


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-04-16, 07:23 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】为什么已经切换当前数据库,acedssget还是对老的数据库操作?

为什么已经切换当前数据库,acedssget还是对老的数据库操作?
为什么已经切换当前数据库,acedssget还是对老的数据库操作?
bool cblueprintdrawing::createblueprint(long lblueprinttemplateid, int ipageno)
{
acad::errorstatus es;
acdbdatabase *pdb;
cstring m_blueprintfilefullname;
cstring t_blueprinttemplatefilename;
pdb = new acdbdatabase;
//获取模板文件名
es = pdb->readdwgfile( t_blueprinttemplatefilename);
if( es != acad::eok )
{
acutprintf("\n没有发现 %c 文件!\n", t_blueprinttemplatefilename);
delete pdb;
return false;
}
acdbdatabase *polddb = acdbhostapplicationservices()->workingdatabase();
acdbhostapplicationservices()->setworkingdatabase(pdb);
acdbblocktable *pblocktable;
pdb->getsymboltable(pblocktable, acdb::kforread);
//acdbhostapplicationservices()->workingdatabase()->getsymboltable(pblocktable, acdb::kforread);
acdbblocktablerecord *pblocktablerecord;
pblocktable->getat(acdb_model_space, pblocktablerecord, acdb::kforwrite);
pblocktable->close();

//---- 绘制图形
cblueprintdrawing::createtablegroup( pblocktablerecord );

//---- 绘制图纸框架
//?????????????? 选择集出现问题
//如果polddb中在选择区域中有实体,就可以;反之不行。
//希望pdb中在选择区域中有实体,就可以;反之不行。
//pdb已经是当前数据库为什么还关联polddb
cblueprintdrawing::createframeline( pblocktablerecord );
//---- 关闭块表
pblocktablerecord->close();
//切换回原工作表
acdbhostapplicationservices()->setworkingdatabase(polddb);
//保存图纸
pdb->saveas(m_blueprintfilefullname);
delete pdb;
}
bool cblueprintdrawing::createframeline(acdbblocktablerecord *pblocktablerecord)
{
int stat;
long number;
ads_name ssname;
ads_point t_ptw0, t_ptw1;
acgepoint3d ptw0(0, 0, 0), ptw1(0, 297, 0);
number = 0;
t_ptw0[x] = 210.0;
t_ptw0[y] = 0.0;
t_ptw0[z] = 0.0;
t_ptw1[x] = 420.0;
t_ptw1[y] = 297.0;
t_ptw1[z] = 0.0;
//建一个交叉窗口选择集
stat = acedssget("c", t_ptw0, t_ptw1, null, ssname);
if ( stat != rtnorm )
{
acedalert("创建交叉选择集不成功!");
}
else
{
acedsslength(ssname, &number);
acedalert("创建交叉选择集成功!");
while ( number != 0 )
{
ptw0.x = t_ptw0[x];
ptw1.x = t_ptw1[x];
t_ptw0[x] += 210.0;
t_ptw1[x] += 210.0;
number = 0;
acedssfree(ssname);
acedssget("c", t_ptw0, t_ptw1, null, ssname);
acedsslength(ssname, &number);
}
}
//-- 绘制外框线
acgepoint3d pt0(0, 0, 0), pt1(0, 297, 0), pt2(0, 0, 0), pt3(0, 0, 0);
pt2.x = ptw1.x;
pt2.y = ptw1.y;
pt3.x = ptw1.x;
pt3.y = ptw0.y;
createline(pblocktablerecord, pt0, pt1);
createline(pblocktablerecord, pt1, pt2);
createline(pblocktablerecord, pt2, pt3);
createline(pblocktablerecord, pt3, pt0);
return true;
}
qq:19154480
msn:freejustinji@hotmail.com
e-mail:justin
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 09:56 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多