乐筑天下

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

为什么已经切换当前数据库,acedSSGet还是对老的数据库操作?

[复制链接]

8

主题

28

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2006-3-1 11:17:00 | 显示全部楼层 |阅读模式
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;
}
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 16:42 , Processed in 0.299887 second(s), 54 queries .

© 2020-2025 乐筑天下

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