Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: DGL от 02-01-2018, 23:33:55

Название: как отследить "mirror" при вызове "subTransformBy"?
Отправлено: DGL от 02-01-2018, 23:33:55
adn-cis.org::adn-cis.org () : forum () {
    здравствуйте люди добрые;
}
adn-cis.org::adn-cis.org (Рыцарь_ObjectARX Александр_Ривилис) {
    здравствуйте, уважаемый Александр Наумович;
}

Visual Studio 2012 + ObjectARX 2016. делаю первый проект в (ну ладно - второй).
делаю dbx, наследуюсь от AcDbEntity.
в "subWorldDraw" рисую полилинию из прямолинейных и дугообразных (bulge) участков с помощью AcDbPolyline.addVertexAt.
в "::subTransformBy(const AcGeMatrix3d& xform)" COPY, MOVE, SCALE и ROTATE работают правильно. чтобы MIRROR работал правильно нужно умножать "bulge" на -1

подскажите пожалуйста, как узнать, что произошло именно "MIRROR"?
Название: Re: как отследить "mirror" при вызове "subTransformBy"?
Отправлено: Александр Ривилис от 02-01-2018, 23:36:37
DGL,
Приветствую на форуме!
подскажите пожалуйста, как узнать, что произошло именно "MIRROR"?
А если это вообще какое-то комбинированное преобразование???
Если это простое преобразование и если это MIRROR, то xform.det() == -1.0
Название: Re: как отследить "mirror" при вызове "subTransformBy"?
Отправлено: DGL от 03-01-2018, 00:05:45
Огромное спасибо!!! всё работает, я счастлив!  :)
Название: Re: как отследить "mirror" при вызове "subTransformBy"?
Отправлено: DGL от 05-01-2018, 11:02:17
Здравствуйте!
при описании Custom Entity, для зеркального и незеркального объектов поведение векторов получается разное.
каждый раз проверять зеркальный объект или незеркальный и писать 2 куска кода, отличающегося только знаком минус в одном месте, кажется не оптимальным решением.
подскажите пожалуйста, может быть есть какое-то оптимальное решение, именно для этого случая, выработанное годами практики?
спасибо!
Название: Re: как отследить "mirror" при вызове "subTransformBy"?
Отправлено: Александр Ривилис от 06-01-2018, 00:33:20
Ничего не понял. Это один и тот же примитив (одного и того же класса)? Тогда в чем проблема написать один код и в одном месте поменять знак?