ObjectARX
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

findout dynamic block

8 REPLIES 8
SOLVED
Reply
Message 1 of 9
Moshe-A
866 Views, 8 Replies

findout dynamic block

Hi,

 

Is there a way to findout that AcDbBlockTableRecord is dynamic block except of iterating it?

 

thanks in advance

moshe

 

8 REPLIES 8
Message 2 of 9
Alexander.Rivilis
in reply to: Moshe-A

static bool AcDbDynBlockReference::isDynamicBlock( AcDbObjectId blockTableRecordId );

 This method help you to identify if block is dynamic or no.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | 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

Message 3 of 9
Moshe-A
in reply to: Alexander.Rivilis

Alexander,

 

thanx for your reply.

 

but that not what i'm asking, i what to know if AcDbBlockTableRecord is dynamic?

 

let's say i have in database some old blocks version in AcDbBlockTable and i want to upgrade them to a new

version which is dynamic. with AcDbDynBlockReference::isDynamicBlock() i have to catch one

block reference and check it...but what if there isn't any insert? should i do a dummy insert to check it?

that's sounds unlogic.

 

Moshe

 

 

 

Message 4 of 9
Alexander.Rivilis
in reply to: Moshe-A


@Moshe-A wrote:

Alexander,

 

but what if there isn't any insert? should i do a dummy insert to check it?

No. This method is static. That is why you can use it same way:

AcDbObjectId idBTR; // id of BlockTableRecord
if (AcDbDynBlockReference::isDynamicBlock(idBTR)) {
  acutPrintf(_T("\nBlock is dynamic"));  
} else {
  acutPrintf(_T("\nBlock is not dynamic"));  
}

 

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | 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

Message 5 of 9
Moshe-A
in reply to: Alexander.Rivilis

i'm sorry Alex, you are right, my mistake

 

thank you

Message 6 of 9
Moshe-A
in reply to: Alexander.Rivilis

Alexander,

 

wait...

 

In order to be able to use ->  AcDbDynBlockReference::isDynamicBlock(AcDbObjectId blockTableRecordId);

 

first you need to construct AcDbDynBlockReference with AcDbBlockReference object as an argument

 

AcDbDynBlockReference(AcDbBlockReference* pRef);

AcDbDynBlockReference(AcDbObjectId blockRefId);

 

so this send me back to start, Am i right?

 

moshe

 

Message 7 of 9
Alexander.Rivilis
in reply to: Moshe-A

NO! NO! NO!

Are you know how to call static method of class? OK. Full sample:

static void CheckDynBlock(void)
{
    ACHAR blockName[512];
    if (acedGetString(TRUE,_T("\nBlock name: "), blockName) == RTNORM) {
        AcDbBlockTableRecordPointer pBTR(blockName, acdbCurDwg(), AcDb::kForRead);
        if (pBTR.openStatus() == Acad::eOk) {
            if (AcDbDynBlockReference::isDynamicBlock(pBTR->objectId())) {
                acutPrintf(_T("\nBlock <%s> is dynamic."), blockName);
            } else {
                acutPrintf(_T("\nBlock <%s> is not dynamic."), blockName);
            }
        } else {
            acutPrintf(_T("\nCan not open block <%s>. Error: <%s>"),
                blockName, acadErrorStatusText(pBTR.openStatus()));
        }
    }
}

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | 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

Message 8 of 9
Moshe-A
in reply to: Alexander.Rivilis

got it, thank you

 

 

Message 9 of 9
Alexander.Rivilis
in reply to: Moshe-A


@Moshe-A wrote:

got it, thank you

 

 


And what about Accept solution? Smiley Happy

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | 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

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost