Тема: Как нарисовать линию?
Прошу прощения за глупый вопрос, но не пойму, как с помощью ObjectARX нарисовать отрезок или, например, окружность?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → Как нарисовать линию?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Прошу прощения за глупый вопрос, но не пойму, как с помощью ObjectARX нарисовать отрезок или, например, окружность?
В хелпе все есть.
Функции createLine() и createCircle() приведены как раз как примеры для рисования этих элементов.
Самый простейший способ - использовать команду для отрисовки отрезка:
void CreateLine1(void) { ads_point p1,p2; if (acedGetPoint(NULL,"\nУкажите начало отрезка: ",p1) == RTNORM && acedGetPoint(p1, "\nУкажите конец отрезка: ",p2) == RTNORM) { acedCommand(RTSTR,"_.LINE",RT3DPOINT,p1,RT3DPOINT,p2,RTSTR,"",0); } }
А можно и без использования команды:
static void CreateLine2(void) { ads_point p1,p2; if (acedGetPoint(NULL,"\nУкажите начало отрезка: ",p1) == RTNORM && acedGetPoint(p1, "\nУкажите конец отрезка: ",p2) == RTNORM) { // Переводим координаты из ПСК (UCS) в МСК (WCS) acdbUcs2Wcs(p1,p1,0); acdbUcs2Wcs(p2,p2,0); AcDbLine *line = new AcDbLine(asPnt3d(p1),asPnt3d(p2)); if (line) { line->setDatabaseDefaults(acdbCurDwg()); AcDbBlockTableRecordPointer pBlk (acdbCurDwg()->currentSpaceId(), AcDb::kForWrite) ; if (pBlk.openStatus () == Acad::eOk && pBlk->appendAcDbEntity (line) == Acad::eOk) { line->close(); } else { delete line; } } } }
Ну а как нарисовать окружность - это будет тебе домашнее задание. :)
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → Как нарисовать линию?
Форум работает на PunBB, при поддержке Informer Technologies, Inc