ADN Club > ObjectARX
Alignment Point для AttributeDefinition. Разница между ObjectArx и .NET
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:
Да, код работает в чертеже, загруженном в редактор. Очень вам благодарен
Навигация
Перейти к полной версии