ObjectARX, AutoCAD. Среда программирования библиотеки C++


Проблемы длинных транзакций для объектов пользователя - часть 2


Ссылка{*справочники*} имитируется приложением, используя или deepClone () или wblockClone () от повторного вызова уведомления.

Взятие этих шагов гарантирует “ транзитивное замкнутое выражение. ”, чтобы гарантировать что,  набор объектов, которые обращаются{*относятся*} к друг другу, может быть проверен, и затем проверен назад в снова, без того, чтобы ломать{*нарушить*} отношения объекта, все связанные объекты проверены вместе. Например, если любую границу или ассоциативная штриховка непосредственно пропускают в отладку (), код штриховки прибавляет, что вся граница возражает против списка объектов, которые будут проверены. Это - то, как это достигает транзитивного замкнутого выражения. Если бы это не случалось, LTM нашел бы мягкий указатель IDs штриховки на его границы. Если это нашло, что граничный объект, столь упомянутый отсутствовал от имитации, длинная сделка будет прервана. Если это не делал этого, даже если никакие изменения{*замены*} не были сделаны к проверенной штриховке, первоначальная штриховка будет терять ее ассоциативность на регистрации.

Иногда, имеются известные ссылки{*справочники*}, которые не должны быть решены. Одно местоположение было бы объект, который следит за всеми объектами, которые используют это. Например, блочные отчеты{*записи*} таблицы сохраняют список всех блочных ссылок{*справочников*}, которые используют их. Правильно только проверить одну из ссылок{*справочников*}, так что Вы должны позволить длинному операционному механизму знать, что остальная часть ссылок{*справочников*} не должна имитироваться. Имеются несколько путей, которыми это может быть сделано.

Имеются некоторые примеры:

§         если приложение знает, относительно, которые объекты упомянуты, но не будут имитироваться — в beginWblockObjects (), beginDeepClone (), или beginCheckOut () уведомление —, они могут прибавлять объект ID упомянутого объекта к IdMap для имитации. Рекомендуемый подход состоит в том, чтобы установить значение в NULL, и idPair как не имитируемый. Например idMap.assign (idPair (идентификатор, AcDbObjectId:: kNull, kFalse); Если объект должен имитироваться позже, idPair будет изменен{*заменен*} соответственно.




Начало  Назад  Вперед



Книжный магазин