§ setListOwnerAndCurrentPosition от объекта AcBr, используя это как текущая позиция и ее владелец как владелец списка. Этот алгоритм только имеет силу в случаях, где владелец списка однозначен, типа владельца оболочки лица при установке AcBrShellFaceTraverser.
§ setListOwner от другого traverser, используя его текущую позицию как владелец списка и defaulting текущая позиция к первой позиции в новом списке смежных вершин. Этот алгоритм только имеет силу для установки вниз иерархический traversers использование другого убывающего иерархического traverser от следующего уровня (типа использования AcBrShellFaceTraverser, чтобы инициализировать AcBrFaceLoopTraverser), или для установки вверх иерархический traversers использование другого восходящего иерархического traverser от следующего уровня вниз (типа использования AcBrVertexEdgeTraverser, чтобы инициализировать AcBrEdgeLoopTraverser).
§ setListOwner от объекта AcBr, используя это как владелец списка и по умолчанию - ing текущая позиция к первой позиции в новом списке смежных вершин. Этот алгоритм имеет силу для всех типов traverser.
§ setCurrentPosition от объекта AcBr, используя это как текущая позиция в уже установленном списке. Этот алгоритм имеет силу для большинства traverser, напечатает, но требует, чтобы владелец списка уже был установлен предварительно.
Классы traverser включают следующее:
§ AcBrTraverser
§ AcBrBrepComplexTraverser
§ AcBrBrepShellTraverser
§ AcBrBrepFaceTraverser
§ AcBrBrepEdgeTraverser
§ AcBrBrepVertexTraverser
§ AcBrComplexShellTraverser
§ AcBrShellFaceTraverser
§ AcBrFaceLoopTraverser
§ AcBrLoopEdgeTraverser
§ AcBrLoopVertexTraverser
§ AcBrVertexLoopTraverser
§ AcBrVertexEdgeTraverser
§ AcBrEdgeLoopTraverser
§ AcBrMesh2dElement2dTraverser
§ AcBrElement2dNodeTraverser
Перечислимые типы
AcBr struct содержит перечислимые типы, которые являются уникальными к AcBr библиотеке, и это используется как коды возврата или на списке параметров местных функций класса. Различные перечислимые поля описаны ниже.
Коды возврата ошибки
AcBr:: ErrorStatus перечисление возвращен всей не-булевой переменной оцененные функции.
Код ошибки может быть или глобальная переменная код ошибки AutoCAD (как перечислено в Acad:: ErrorStatus перечисление), приводить к местному AcBr:: ErrorStatus перечисление, или местный код ошибки библиотеки контурного представления. Местные коды ошибки определены, используя стартовое ядро 3000, чтобы, чтобы не найтись в противоречии с AutoCAD, AutoCAD Механический API, или Autodesk Механическая Настольная ошибка закодирует.
Уровень проверок правильности
AcBr:: ValidationLevel перечисление устанавливает уровень проверки правильности для объекта AcBr. Если kFullValidation (по умолчанию после объектной реализации) определен, каждая функция, которая обращается к brep топологии (непосредственно или косвенно) первые проверки связанный объект базы данных AutoCAD, чтобы видеть, изменилось ли это, так как объект AcBr был последний набор. Это - дорогая операция, но это гарантирует, что все brep данные - в пределах контекста. Если kNoValidation определен, база данных не проверена, если это не критическое к завершению задач функции. Это более эффективно, но не гарантирует, что brep данные - в пределах контекста. Установка уровня проверок правильности на основании " объект в объект " предотвращает любые столкновения между приложениями, загруженными одновременно.
ShellType
AcBr:: ShellType перечисление классифицирует оболочку как внутренняя область, внешняя область, и так далее.
Периферийные оболочки возвращены как kShellExterior, и имеется только одна такая оболочка в brep или область{*регион*} (в соответствии с соглашением промышленности). Voids возвращены как kShellInterior, и может иметься несколько в brep или комплекс (если имеется также внешняя оболочка).
LoopType
AcBr:: LoopType перечисление классифицирует цикл как внутренняя область, внешняя область, и так далее.
Периферийные циклы - kLoopExterior, и имеется только один такой цикл в лицо (в соответствии с соглашением промышленности). Отверстия возвращены как kLoopInterior, и может иметься несколько в лицо (если имеется также внешний цикл). Конусы и цилиндры (имеют ли с эллиптическим или круговым ядром) по крайней мере два основных цикла (если они полны, и в u и v), который, возвращены как kLoopWinding в противоположность kLoopExterior из-за ограничения туда являющийся только что один внешний цикл (наряду с фактом, что никакой основной цикл не является отверстием). Особенности (типа вершины конуса) возвращены как kLoopUnclassified. Все циклы на сферических и toric поверхностях, также как закрытом периодическом НЕОДНОРОДНОМ РАЦИОНАЛЬНОМ В-СПЛАЙНЕ, возвращают kLoopUnclassified.
Контроль Формы Элемента Сети
AcBr:: Element2dShape перечисление управляет формой элементов, сгенерированных 2-ой сетью. Это только уместно фильтру сети. 1d сеть (соответствующий дискретизации граничных кривых первоначального лица) может быть эмулирована, определяя kAllPolygons.
Формирование Приложения
Приложение, которое использует AcBr библиотеку, должно иметь библиотечный файл, libacbr. dll доступный, чтобы связаться против. Более важно, библиотека необходима, чтобы гарантировать надлежащую регистрацию классов AcBr с ObjectARX во время выполнения. Поэтому важно, что libacbr. dll, быть явно загружено приложением, если это уже не было загружено разработчиком модели или другим приложением. Лучший способ гарантировать это состоял в том, чтобы использовать acrxDynamicLoader () и acrxClassDictionary () чтобы загрузить libacbr. dll и проверять, было ли это загружено.
Следующий кодовый фрагмент обеспечивает пример:
AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
switch (msg) {
case AcRx::kInitAppMsg:
if (!acrxClassDictionary->at("AcBrEntity")) {
acrxDynamicLinker->loadModule("libacbr. dll", 1);
acutPrintf("\n libacbr loaded \n");
}
acedRegCmds->addCommand(
"MY_APP",
"MY_CMD",
"MY_CMD",
ACRX_CMD_MODAL,
&myCmdImp);
acrxUnlockApplication(pkt); // try to allow unloading
break;
case AcRx::kUnloadAppMsg:
acedRegCmds->removeGroup("MY_APP");
break;
default:
break;
}
return AcRx::kRetOK;
}
ПРИМЕЧАНИЕ, которое важно не разгрузить libacbr. dll на выход от приложения, как другие приложения (или разработчик модели) может все еще зависеть от его присутствия.
Пример приложения, используя AcBr библиотеку
Типовое ObjectARX-приложение, использующее библиотеку контурных представлений включено в ObjectARX SDK в objectarx\utils\brep\samples\brepsamp каталоге. Этот каталог включает Readme файл, который описывает типовое приложение и как использовать это.
Типовое приложение основано на интерактивном подходе, который не может быть лучший подход для всех приложений. Объекты выбраны, используя наборы выбора, resbufs, и GS маркеры, и переданы AcBr библиотеке, используя AcDbFullSubentPaths.
Часть 7. Приложения
Приложение A. Перемещение ADS программ к ObjectARX
Чтобы упростить перемещение приложений AutoCAD development system к среде программы ObjectARX, библиотека ADS была перенесена к среде программы ObjectARX. ObjectARX версия почти идентична версии ADS. Это приложение обеспечивает сравнение того, как программы загружены, и в ADS и ObjectARX, и включает типовую программу, которая была перенесена от ADS до ObjectARX.
§ Перемещающий к ObjectARX
§ Загрузка Приложений: ADS против ObjectARX
§ Формирование ADS Приложения в Среде Программы ObjectARX
§ Типовое ObjectARX-приложение
§ ObjectARX-эксклюзивный Тип данных
Перемещение к ObjectARX
Существующие приложения ADS должны быть перенесены к ObjectARX. Все библиотечные функции, которые были предварительно доступны в библиотеке ADS, включены в ObjectARX. Приложения, которые часто поддерживали связь с AutoCAD через библиотеку ADS или другой, вызывают выполненным быстрее в среде программы ObjectARX чем в среде программы ADS.
AcrxEntryPoint () Функция
ObjectARX-приложение не имеет главного, потому что это - DLL. Также, приложение не вызывает ads_init (), ads_abort (), и ads_link (). Программист ADS осуществляет функцию acrxEntryPoint () со следующей сигнатурой:
extern "C"
AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* appId);
Первый параметр, компонент данных AcRx класса вызвал сообщение, представляет сообщение, посланное от ObjectARX ядра до приложения.
Второй параметр - непрозрачная метка к данным, пропускал к блокировке и разблокировать функции для приложения. Функция возвращает код состояния, типа RSRSLT или RSERR.
AutoCAD вызывает в ObjectARX модуль acrxEntryPoint () чтобы передать сообщения к приложению. Все запросы, чтобы вызвать функции через acedDefun () сделаны acrxEntryPoint (), упрощая перемещение программ ADS к среде программы ObjectARX.
ObjectARX-приложения отвечают на значение компонента данных AcRx класса AppMsgCode скорее чем к возвращаемому значению ads_link (), ads_exit (), и ads_abort ().
Файлы Заголовка
Следующие файлы заголовка должны быть включены в источник ObjectARX-приложения file:
Adesk. h | Содержит стандартные определения для среды программы ObjectARX. |
Rxdefs. h | Устанавливает ObjectARX-приложение и взаимодействует с AutoCAD через acrxEntryPoint (). |
Adslib. h | Устанавливает платформа-определенные определения и включает adscodes. h и ads. h. |
Adscodes. h | Содержит определения значений кода, которые возвращены (или проходят к) библиотечные функции ADS. |
Ads. h | Содержит определения типов библиотеки ADS и функциональные объявления. Следующие файлы заголовка могут быть включены в исходные файлы ObjectARX-приложения: |
Adsdlg. h | Содержит Контроль Диалога Связанные языком объявления для создания диалоговых окон. |
Ol_errno. h | Содержит символические коды для значений ошибки, используемых переменной системы AutoCAD ERRNO. |
Adsdef. h | Устанавливает определения для среды программы ADS. |
Adslib. h файл заголовка содержит директивы для включения adscodes. h, adsdef. h, и ads. h; поэтому, прикладной исходный файл должен содержать только следующую директиву:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |


