ADN Club > ObjectARX

Alignment Point для AttributeDefinition. Разница между ObjectArx и .NET

(1/2) > >>

exilerus:
Здравствуйте.

Перевожу своё приложение из .NET API для автокада в ObjectArx на Mac OS. Столкнулся с определенным вопросом, связанным с расположением AttributeDefinition


--- Код - C++ [Выбрать] ---    pAttDef->setTag(wtag.c_str());    pAttDef->setLayer(wlayer.c_str());    pAttDef->setTextString(wtext.c_str());    pAttDef->setHeight(height);    pAttDef->setVisibility(invisible ? AcDb::kInvisible : AcDb::kVisible);    pAttDef->setLockPositionInBlock(true);    pAttDef->setHorizontalMode(AcDb::kTextCenter);    pAttDef->setAlignmentPoint(position); 
Данный кусок у меня создает AcDbAttribute


--- Код - C++ [Выбрать] ---AcDbAttribute* pAtt = new AcDbAttribute();                        pAtt->setPropertiesFrom(pAttDef);                         AcGePoint3d attPos = pAttDef->position();                        attPos += pBlkRef->position().asVector();                        pAtt->setPosition(attPos);                         pAtt->setHeight(pAttDef->height());                        pAtt->setTag(pAttDef->tag());                        pAtt->setTextString(pAttDef->textString());                         Acad::ErrorStatus es = pBlkRef->appendAttribute(pAtt);                        if (es != Acad::eOk) {                            pAtt->erase();                        }                        pAtt->close(); 
Данный код размещает все, как нужно, но Alignment Point сдвинут влево. То есть, если я надумаю руками поменять значение атрибута потом, он у меня сдвинется. Пример на картинке.




Подскажите, пожалуйста, есть ли возможность, чтобы при изменении значения атрибута текст был центрирован?

Второй вопрос, это почему у меня так много grip points? для сравнения этот же блокреференс из  .NET? (На ширину внимания не обращайте).

Заранее спасибо и буду очень благодарен за любой пинок в правильном направлении.






Александр Ривилис:
Почему не пользуешься методом setAttributeFromBlock?

Александр Ривилис:
Кстати, этот код работает в текущем чертеже, загруженом в редактор AutoCAD? Если нет, то следует еще и переключить рабочую базу на эту базу, а по завершении переключить обратно.

exilerus:
Александр, спасибо Вам большое. Теперь все работает!

exilerus:
Да, код работает в чертеже, загруженном в редактор. Очень вам благодарен

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии