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

14/11/2014

Разрешение конфликта имён при связывании внешней ссылки

Недавно разработчик сообщил о странном поведении, при котором несколько примитивов исчезли после связывания внешней ссылки при помощи API. При анализе чертежа и внешних ссылок было установлено, что это странное поведение связано с тем, что блок с точно таким же именем присутствовал и в основном чертеже и в одной из внешних ссылок.

Хотя определения блоков находились в разных файлах, но у них одно и тоже имя. Когда такая внешняя ссылка связывается с основным чертежом в качестве определения блока используется блок из основного чертежа.

Если установить параметр "insertBind" в false в вызове "BindXrefs", это должно помочь разрешить конфликт в именах. Вот объяснение из файла acadauto.chm как AutoCAD разрешает конфликт имён при связывании внешних ссылок:

Если параметр bPrefixName установлен в FALSE, символьные имена из файлов внешних ссылок получают префикс в текущем чертеже: <blockname>$x$, где x целое число, которое автоматически инкрементируется, чтобы не допустить конфликта имён. Если параметр bPrefixName установлен в TRUE, символьные имена из файла внешней ссылки объединяются с символьными именами из текущего чертежа без всякого префиксирования. Если есть совпадающие имена, AutoCAD использует имена, которые уже есть в основном чертеже. Если вы не уверены в том, что чертеж не содержит одинаковых имён – рекомендуется устанавливать bPrefixName в FALSE. 

Источник: http://adndevblog.typepad.com/autocad/2014/03/resolving-name-conflict-during-xref-binding.htm

 

Обсуждение: http://adn-cis.org/forum/index.php?topic=1079

Опубликовано 14.11.2014