ADN Club > ObjectARX

subGetOsnapPoints

(1/2) > >>

Николай Горлов:
как-то совсем запутался.
есть свой объект, наследник от AcDbCurve. переопределил кучу методов, но видать не достаточное количество :):):)
вопрос в следующем, что заставит отработаться функцию subGetOsnapPoints. Сама функция переопределена, ничего военного в ней  нет, вот код (m_pCurve - это приватная переменная класса, к которой собственно и нужно привязываться):

--- Код - C++ [Выбрать] ---Acad::ErrorStatus CAcDbCurveText::subGetOsnapPoints (AcDb::OsnapMode osnapMode,int gsSelectionMark,const AcGePoint3d &pickPoint,const AcGePoint3d &lastPoint,const AcGeMatrix3d &viewXform,AcGePoint3dArray &snapPoints,AcDbIntArray &geomIds) const{        assertReadEnabled();        Acad::ErrorStatus es = Acad::eAmbiguousInput;        if (m_pCurve != NULL)                 es = m_pCurve->getOsnapPoints(osnapMode, gsSelectionMark, pickPoint, lastPoint, viewXform, snapPoints, geomIds);         //acutPrintf(_T("\nsubGetOsnapPoints: %s"),acadErrorStatusText(es));        return es;} Acad::ErrorStatus CAcDbCurveText::subGetOsnapPoints (AcDb::OsnapMode osnapMode,int gsSelectionMark,const AcGePoint3d &pickPoint,const AcGePoint3d &lastPoint,const AcGeMatrix3d &viewXform,AcGePoint3dArray &snapPoints,AcDbIntArray &geomIds,const AcGeMatrix3d &insertionMat) const{        assertReadEnabled();        Acad::ErrorStatus es = Acad::eAmbiguousInput;        if (m_pCurve != NULL)                 es = m_pCurve->getOsnapPoints(osnapMode, gsSelectionMark, pickPoint, lastPoint, viewXform, snapPoints, geomIds, insertionMat);         //acutPrintf(_T("\nsubGetOsnapPoints: %s"),acadErrorStatusText(es));        return (es);} 
но видать чего-то не хватает и в ЭТИ функции дебагер вообще не заходит, ну и собственно получается, что никаких привязок у объекта нет :(

Александр Ривилис:
Ну как минимум замени int gsSelectionMark на Adesk::GsMarker gsSelectionMark.

Николай Горлов:
точно, спасибо Aлександр.
твою  ж ... ну вот как так можно. это практически рабочий пример для autocad 2008 был. переносил в новый созданный для 2013. и вот такая шляпа. параметры поменяли, а оно даже не выругалось, что я пытаюсь перегрузить то, чего не существует в действительности. теперь все ок.

Александр Ривилис:
Это известные грабли, на которые я тоже неоднократно наступал. Особенно с учетом того, что ObjectARX Wizard подставляет int вместо Adesk::GsMarker при создании Custom Entity и приходится каждый раз это править вручную. Я даже когда-то отсылал этот баг Cyrille Fauvel (он автор ObjectARX Wizard), но не помню было ли это исправлено.

Александр Ривилис:
Посмотрел в ObjectARX Wizard 2015 - исправлено, а в ObjectARX Wizard 2012 - нет. Вообще-то и в ней это можно исправить в файлах:

--- Код: ---C:\Program Files (x86)\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxWizCustomObject\Templates\1033\object.cpp
C:\Program Files (x86)\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxWizCustomObject\Templates\1033\object.h
--- Конец кода ---
заменить int gsSelectionMark на Adesk::GsMarker gsSelectionMark

Навигация

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

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

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