Объектно-ориентированный подход, наверно, в C++. На котором и сделан инструмент \"Размеры\" в Архикаде и сам Архикад.
Я тоже не программер, и не знаю терминологию и особенности языков.
А библы в GDL это всего лишь сродни блокам в Автокаде, только продвинутые. При вставке они работают на одном клике (вставить), или двух (вставить и растянуть), или трех (вставить, повернуть, растянуть). Ну еще отражение получается, если при растягивании имеем отрицательное направление. Все клики обрабатывает программа, а не библ.элемент. Он только подчиняется (изменяет размеры при растягивании).
Хотя, если посмотреть на всплывающую панельку координат, то становится ясно, что система четко отслеживает положение мыша и координаты кликов - иначе было бы глупо. Вопрос в том, как привязаться к этой переменной... Наверняка есть какие-то незадокументированные возможности.
О какой панельке и системе координат речь?
Цитата из Хэлпа:
==================================================
ArchiCAD использует три системы координат с разными начальными точками.
• Проектная система координат, начало которой имеет постоянное местоположение, остающееся неизменным в течение всего существования проекта. По умолчанию начало проектной системы координат располагается вблизи нижнего левого угла стартового экрана.
• Пользовательская система координат, которая является вспомогательным средством проектирования и проведения измерений. Начало пользовательской системы координат можно поместить куда угодно, что позволяет Вам установить “текущую точку отсчета” практически в любом удобном месте. Это часто бывает полезно, когда Вам нужно позиционировать создаваемые элементы относительно существующих стен, перекрытий или других элементов.
• Локальная система координат, которая возникает только во время построения и редактирования элементов чертежа. Начало локальной системы координат помещается в начальную точку текущей операции и используется для вычисления и индикации длины и угла направления растягивающейся линии.==================================================
Библу разрешено запрашивать свое местоположение только от начала Проектной системы координат.
И у библа есть свое начало Локальной системы координат. Это точка А=0, B=0.
Так что если кто-то хочет сделать отметку, которая будет считать не от Проектной системы координат, а от Локальной, должен использовать параметр ширины (В).
Первый клик на уровне от куда отмерять, т.е. что будет нулем.
Второй клик на уровне элемента который обмеряем.
Все это должно делаться в режиме установки библа \"Диагонально\", т.е. с растягиванием.
Сам библ должен рисоваться на уровне верха ширины (это я уже про скрипт).
Если даже и не ловить ее, то попробовать отслеживать на уровне параллельной подпрограммы (аддона). Это любой сишник нарисует в 2 щелчка...
Поддерживаю! Возмись за это дело. Сделай или найди сишника.
Стали бы мы делать библы, если бы был Аддон. Конечно нет.
Нам бы GDL хоть изучить, не то что C++.