stoneball 发表于 2002-12-1 15:54:00

如何实现将我新建的AcdbDatabase插入到当前图形

如何实现将我新建的AcdbDatabase插入到当前图形,但不允许将图形保存到dwg图形;
或者说:我想把一幅图内某个指定范围的图形保留,而删掉不在范围内的图形???

leeyeafu 发表于 2002-12-2 10:37:00

没看懂你的问题

插入AcDbDatabase数据库的两种办法:
1、插入已知名的图块:
acdbHostApplicationServices()->workingDatabase()->insert(AcDbObjectId&,/*输出块ID*/
const char * ,/*图块名*/
pDb/*新建的AcDbDatabase指针,下同*/);
2、整个数据库插入:
acdbHostApplicationServices()->workingDatabase()->insert(const AcGeMatrix3d&, /*插入后的几何转换矩阵*/
pDb);
另外,输出pDb还有三招:
1、输出全部图形:
pDb->wblock(acdbHostApplicationServices()->workingDatabase());
2、输出命名块:
pDb->wblock(acdbHostApplicationServices()->workingDatabase(),
AcDbObjectId /*已知块ID*/);
3、输出一组实体:
pDb->wblock(acdbHostApplicationServices()->workingDatabase(),
const AcDbObjectIdArray&, /*欲输出实体ID数组*/
const AcGePoint3d* /*插入点*/);
这样只有调用SaveAs()函数才保存。
把一幅图内某个指定范围的图形保留,而删掉不在范围内的图形???我不知道你如何确定要保留的图形(是不是用矢量裁剪算法?),得到这些图形的ID后输出到当前数据库(或新建数据库)并SaveAs不行吗?
总之没看懂。

stoneball 发表于 2002-12-5 10:21:00

系统中全部图形都不允许SaveAs或save,总之不能保存为文件,只是在Acad中显示

leeyeafu 发表于 2002-12-5 11:21:00

WHY?

实际上,只要你不调用SaveAs()或save(),图形将不会保存,若ACAD窗口中没显示,用acedCommand()执行一次REDRAW试试。

stoneball 发表于 2002-12-5 13:49:00

我现在是将不在区域内的实体逐一判断删除!能否通过其他方式和您直接交谈(OICQ)等?

页: [1]
查看完整版本: 如何实现将我新建的AcdbDatabase插入到当前图形