Тема: повернуть блок
Как реализовать команду "повернуть" в ARX. Необходимо получить повернутую копию блока
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → повернуть блок
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как реализовать команду "повернуть" в ARX. Необходимо получить повернутую копию блока
Приблизительно так:
static void Rotate(void) { double ang = 0; ads_point p; ads_name ent; if (acedEntSel("\nВыберите примитив для вращения: ",ent,p) == RTNORM) { AcDbObjectId id; acdbGetObjectId(id,ent); AcDbObjectPointer<AcDbEntity> pEnt(id,AcDb::kForRead); if (pEnt.openStatus() == Acad::eOk) { AcGePoint3d p1,p2; if (acedGetPoint(NULL,"\nУкажите первую точку оси - базовую точку для поворота: ",asDblArray(p1)) == RTNORM && acedGetPoint(asDblArray(p1),"\nУкажите вторую точку оси: ",asDblArray(p2)) == RTNORM && acedGetAngle(asDblArray(p1),"\nУкажите угол поворота: ", &ang) == RTNORM) { if (pEnt->upgradeOpen() == Acad::eOk) { acdbUcs2Wcs(asDblArray(p1),asDblArray(p1),false); acdbUcs2Wcs(asDblArray(p2),asDblArray(p2),false); AcGeMatrix3d mat; mat.setToRotation(ang,p2-p1,p1); AcGeVector3d norm; AcDbDimension *pDim = AcDbDimension::cast(pEnt.object()); if (pDim) norm = pDim->normal(); pEnt->transformBy(mat); if (pDim) pDim->setNormal(norm); } } } } }
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → повернуть блок
Форум работает на PunBB, при поддержке Informer Technologies, Inc