









最近要做一个CAD的插件,因为以前没有做过,十分费劲。这不,遇上了一个很奇怪的问题,折腾了一下午,到现在也没解决。
想法是这样的:我在一个dwg文件里定义了一个块,并且已经在模型空间里被引用了一次以上。我想通过程序找到每一个引用,输出它们的位置和缩放比率。相关程序如下:
1
if ((es = acdbCurDwg()->getBlockTable(pBlockTable, AcDb::kForRead)) == Acad::eOk)
2
{
3
if ((es = pBlockTable->getAt(blockname, pBlockRecord, AcDb::kForRead)) == Acad::eOk)
4
{
5
ads_printf("pBlockTable->getAt()成功。\n"); //for test
6
7
AcDbBlockReferenceIdIterator* pIter;
8
if (pBlockRecord->newBlockReferenceIdIterator(pIter) == Acad::eOk)
9
{
10
ads_printf("pBlockRecord->newBlockReferenceIdIterator()成功。\n"); //for test
11
for (pIter->start(); !pIter->done(); pIter->step())
12
{
13
ads_printf("迭代中。\n"); //for test
14
AcDbBlockReference* pBlockRef = NULL;
15
if (pIter->getBlockReference(pBlockRef, AcDb::kForRead) == Acad::eOk)
16
{
17
i++;
18
ads_printf("第%d个图:", i);
19
AcGePoint3d pos = pBlockRef->position();
20
ads_printf("位置(%f,%f),", pos[0], pos[1]);
21
AcGeScale3d scale = pBlockRef->scaleFactors();
22
ads_printf("缩放因子(%f,%f)\n", scale[0], scale[1]);
23
}
24
}
25
delete pIter;
26
}
27
pBlockRecord->close();
28
}
29
pBlockTable->close();
30
}
31
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。