AcDb块选项卡le记录:获取预览Wicon
也许吧?使用那个类…在那里 我不知道,我正在尝试阅读已插入块的预览图标。不过,我将检查代码...谢谢 或者寻找我几个月前在这里发布的图书馆。
szDwg = pathForDwg+_ T(" \ \ "+strDwg;
如果(!acdbDisplayPreviewFromDwg(szDwg,(void *)m _ dwgpreview . m _ hWnd))
m _ folderPath。SetWindowText(_T("没有可用的预览图像。"));
或者...使用blockview示例中可用的控件,您可以传递一个块并获得视图(我做了一些事情来显示每个对象选择的预览,类似于MEP对象查看器中的预览,您可以将块传递为drawable——如果我没记错的话——明天将查看我的代码——是时候小睡4到7个小时了) 这是我现在拥有的代码。注意 由于块已入,该文件可能不存在
logertruct BlockInfo
{
CString name;
AcArray preview;
};
typedef CArray BlockInfoArray;
Acad::ErrorStatus BlockWorker::getBlockInfoFromdDb( BlockInfoArray &blocks )
{
AcDbObjectId blkId, BtrId;
CString blkName = getBlockName();
Acad::ErrorStatus es = Acad::eOk;
if(blkName.IsEmpty())
return Acad::eInvalidBlockName;
std::auto_ptr blkDb(new AcDbDatabase(Adesk::kFalse,Adesk::kTrue));
if( (es = blkDb->readDwgFile(m_path,_SH_DENYWR)) != Acad::eOk)
{
acutPrintf(_T("\nError: Line %ld [%s]\nIn function %s"),
__LINE__, acadErrorStatusText(es),_T(__FUNCTION__));
return es;
}
AcDbBlockTablePointer pBlockTablePointer(blkDb->blockTableId(), AcDb::kForRead);
if( (es = pBlockTablePointer.openStatus()) != Acad::eOk)
{
acutPrintf(_T("\nError: Line %ld [%s]\nIn function %s"),
__LINE__, acadErrorStatusText(es),_T(__FUNCTION__));
return es;
}
AcDbBlockTableIterator *pIter = NULL;
if ( (es = pBlockTablePointer->newIterator(pIter)) != Acad::eOk)
{
acutPrintf(_T("\nError: Line %ld [%s]\nIn function %s"),
__LINE__, acadErrorStatusText(es),_T(__FUNCTION__));
return es;
}
for(pIter->start();!pIter->done(); pIter->step())
{
if(pIter->getRecordId(BtrId) == Acad::eOk)
{
AcDbBlockTableRecordPointer pBtr ( BtrId, AcDb::kForRead);
if(pBtr.openStatus() == Acad::eOk)
{
if(pBtr->isAnonymous() || pBtr->isLayout() ||
pBtr->isFromExternalReference() || pBtr->isFromOverlayReference())
{
continue;
}
TCHAR *name = 0;
if(pBtr->getName(name) == Acad::eOk)
{
BlockInfo info;
info.name = name;
pBtr->getPreviewIcon(info.preview);
blocks.Add(info);
acutDelString(name);
//if(pBtr->hasPreviewIcon() && info.preview.length() == 0)
//acutPrintf(_T("\nBooooo Yuk"));
}
}
}
}
delete pIter;
return es;
}
我以为我是唯一一个做这种事的人。
我以为我是唯一一个做这种事情的人。
这是我能做的,我不得不放弃使用NSFW方法名称 请参阅BlockView SDK示例。它们呈现到AcGsView,然后获取快照。 很棒,谢谢你的小费!这是相当多的咀嚼 这将是一张票…你可以传递你的块ID并获得视图-这里是一个实现的动画图像。
页:
[1]
2