How to use AcDbIndexFilterManager::getFilter Function

How to use AcDbIndexFilterManager::getFilter Function

Anonymous
Not applicable
665 Views
2 Replies
Message 1 of 3

How to use AcDbIndexFilterManager::getFilter Function

Anonymous
Not applicable

I wanna change the clip box of a block-ref, so I tried to get the AcDbSpatialFilter *pFilter of the block, like this

	AcDbBlockReference *pBlkRef = NULL;
	if (Acad::eOk != acdbOpenObject(pBlkRef, idBlk, AcDb::kForWrite))
		return false;

	AcDbSpatialFilter *pFilter = NULL;
	Acad::ErrorStatus es = AcDbIndexFilterManager::getFilter(pBlkRef, AcDbSpatialFilter::desc(), AcDb::kForRead, pFilter);
	pBlkRef->close();

but comes the err

1>..\Common\Entity\BlockUtil.cpp(546) : error C2665: “AcDbIndexFilterManager::getFilter”: 2 个重载中没有一个可以转换所有参数类型
1>        d:\objectarx\objectarx2010\inc\dbindex.h(179): 可能是“Acad::ErrorStatus AcDbIndexFilterManager::getFilter(const AcDbBlockReference *,const AcRxClass *,AcDb::OpenMode,AcDbFilter *&)”
1>        d:\objectarx\objectarx2010\inc\dbindex.h(184): 或       “Acad::ErrorStatus AcDbIndexFilterManager::getFilter(const AcDbBlockReference *,int,AcDb::OpenMode,AcDbFilter *&)”
1>        试图匹配参数列表“(AcDbBlockReference *, AcRxClass *, AcDb::OpenMode, AcDbSpatialFilter *)”时

it must be the err of the value put in for the const AcRxClass* key 

Acad::ErrorStatus

getFilter(

const AcDbBlockTableRecord* pBlkRef,

const AcRxClass* key,

AcDb::OpenMode readOrWrite,

AcDbFilter*& pFilter);

pBlkRef Input block reference from which to get the filter 
key Input class descriptor that is used as a key, to get to the filter 
readOrWrite Input mode in which to open the object 
pFilter Returns the filter 

  So how to use the AcDbIndexFilterManager::getFilter Function to get the pFilter of the block-ref?

 

0 Likes
Accepted solutions (1)
666 Views
2 Replies
Replies (2)
Message 2 of 3

Alexander.Rivilis
Mentor
Mentor
Accepted solution

Instead of

Acad::ErrorStatus es = AcDbIndexFilterManager::getFilter(pBlkRef, AcDbSpatialFilter::desc(), AcDb::kForRead, pFilter);

try to use:

Acad::ErrorStatus es = AcDbIndexFilterManager::getFilter(pBlkRef, AcDbSpatialFilter::desc(), AcDb::kForRead, (AcDbFilter*&)pFilter);

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 3 of 3

Anonymous
Not applicable

OH.. Thank you !

Sorry for my careless...

I should be more careful..

0 Likes