И снова приходится возвращаться к этому вопросу. Причем, задача из разряда "классических":
Есть какая-то деталь. Данные о детали находятся в базе данных. На чертеже деталь отображается в виде блока (INSERT), в РД которого есть ссылка на ID записи в базе данных.
К этой детали ставится выноска. В выноске нужно отобразить информацию, которая вычисляются на основе данных о детали из базы и других данных чертежа (к примеру - порядковый номер детали в ведомости деталей). Выноска - это объект "мультивыноска"(MLEADER). Актуализация информации выполняется запуском отдельной команды.
Я придумал три варианта решения этой задачи:
1. В РД выноски помещается ссылка на ID записи о детали в базе данных.
Из плюсов такого подхода - если пользователь аккуратно пользуется стандартными инструментами редактирования (например, копирует блоки вместе с выносками), то такая "связь" не нарушается.
Из минусов - если редактировать чертеж неаккуратно, то выноски могут указывать на пустое место или вообще на другой объект чертежа, т.к. они никак не связаны с блоком, на который должны указывать. Это может привести к ошибкам на чертеже.
2. Разработать свою связь между объектами блока и выноски (как вариант - на основе тех идей, что высказывались ранее в этой теме).
Из плюсов - Если предусмотреть все варианты развития событий, то возможность возникновения ошибки на чертеже будет сведена к минимуму.
Из минусов - нужно проработать большое количество возможных ситуаций при различных действиях пользователей и есть риск, что все равно что-то останется неучтенным. И самый большой минус - при отсутствии подгруженного приложения, редактировать чертеж категорически нельзя! Иначе связи могут быть потеряны.
3. Вычислять геометрически взаимное расположение блоков и выносок и на основе этих данных делать заключение о связи между ними.
Из плюсов - никаких ограничений по использованию стандартных инструментов автокада.
Из минусов - сложно придумать алгоритм, гарантирующий на 100%, что будет установлено какая выноска на какой блок указывает. На насыщенных схемах (где одна деталь устанавливается поверх другой) есть риск, что связь будет определена неверно и появятся ошибки на чертеже.
Прошу оценить эти варианты с вашей точки зрения. Чему бы вы отдали предпочтение? Может будут еще варианты, которые я упустил?