Постараюсь помочь. Только сначала выскажу мнение как пользователь.
Заранее скажу, что сделал в скриптах вашего элемента исправления на которые буду ссылаться. Исправлению подверглось то, что не работает, работает не правильно, и то, что можно было написать короче и проще. А также кое в чем сделал свой вариант. Правленный элемент прикреплен ниже.
Про точки.
От обилия точек немного не по себе становиться. Их наличие на строках было бы естественно, если бы приходилось писать текст отдельно, не в элементе, а потом привязывать его к элементу. Управление положением выносной линии (гориз./вертик.) с помощью точек, это хорошая находка. А управление начертанием шрифта, это излишняя фишка. Шрифт то, настраивается один раз, в начале работы с объектом.
Точка регулировки длины выносной линии стоит не в том месте. Неудобно так работать.
Хорошо когда точка вставки элемента, по умолчанию, уже находится в нужном месте. В этом элементе такое место это начало выноски. Для этого надо, чтобы нужная точка была прописана в скрипте первой.
Про оформление настроек.
В панели "Параметры" сделал свой вариант оформления . Не претендую на однозначность варианта. Просто надеюсь, что он покажется более удобным, при котором глаза не разбегаются при поиске нужного параметра.
В нем заложены принципы группировки параметров по темам и одновременной настройке. Вы это тоже делали, я просто выложил свой вариант.
Следующий принцип, это исключения ненужных слов усложняющих чтение и быструю ориентацию. У вас это слово "Опции ...". У других, присутствуют такие слова, как "Введите", "Ввод", "Выберите", "Выбор". Они совершенно не нужны.
Третий принцип, которым пользуется Графисофт и который зря игнорирует Сисофт при локализации библиотеки, это написание ключевых слов с Большой Буквы.
В панели "Спец. Параметры" я привел свой вариант первой страницы. Мне показалось излишним отрисовка в интерфейсе выноски и полок. Для Вашего варианта сделал более простой скрипт. Вторую страницу не трогал. Но хотелось бы видеть ее лучше.
Настройка типа линии, это лишнее. В элементе один тип линии и он задается в своей панели.
Про размеры.
Размеры для такого элемента желательно делать фиксированные (в единицах измерения бумаги). Понимаю, что вы еще не можете понять суть работы с масштабированием, поэтому дал пример на основе регулировки высоты строки. Пример в скрипте элемента.
Потом желательно ввести ограничение на уменьшение размера. Т.е., установить минимум для высоты строки, длины полки, длины выносной линии. Пользователю станет приятно от такой заботы. Минимум для высоты строки я уже сделал.
Про соответствие нормативу.
Это не "обычная выноска по ГОСТ" как Вы пишите в первом посте. Это "выносная надпись к многослойным конструкциям" как правильно заявлено в названии темы. А она имеет только один тип маркера - стрелку.
По ориентации выносной надписи не могу что-либо сказать определенного. Я один раз сделал эти надписи на плане к стенам, слева от стены и снизу. Результат был плачевным. Запутались все, и конструктор и строители. С тех пор зарекся рисовать их с ориентацией отличной от образцов показанных в ГОСТе.
Теперь про скрипт.
Все упрощения и исправления вы можете увидеть в скрипте. Если что-то будет не понятно, задавайте вопросы. Здесь же покажу, только, как писать маркеры.
sizeMarker - переменная размера маркера. Тип переменной - Действительное число.
При написании скрипта надо заставить значение этой переменной изменяться при разных масштабах, чтобы размер оставался одним и тем же в печатных единицах. Есть три варианта.
Первый, всегда пишем: sizeMarker /1000*A_
Второй, пишем один раз перед скриптом маркера: sizeMarker = sizeMarker /1000*A_
Третий, перед скриптом маркера ставим: MUL2 A_/1000, A_/1000. А после: DEL 1
Выбор варианта зависит от конкретных случаев.
Пишу ориентируясь на два последних варианта, чтобы скрипт был короче.
Точка:
POLY2_ 2, 1+2+4,
0, 0, 900,
sizeMarker/2, 360, 4001
Стрелка (направленная вниз):
Равноширокая
LINE2 0, 0, -sizeMarker, sizeMarker
LINE2 0, 0, sizeMarker, sizeMarker
или
POLY2 3, 1+2+0, ! если вместо 0 использовать 4, то будет стрелка с заливкой
-sizeMarker, sizeMarker,
0, 0,
sizeMarker, sizeMarker
Острая (с углом 30 град)
LINE2 0, 0, -sizeMarker *tan(15), sizeMarker
LINE2 0, 0, sizeMarker *tan(15), sizeMarker
или
POLY2 3, 1+2+0, ! если вместо 0 использовать 4, то будет стрелка с заливкой
-sizeMarker *tan(15), sizeMarker,
0, 0,
sizeMarker *tan(15), sizeMarker
Вот пример стрелки для маркера разреза. По ГОСТу стрелка может быть трех типов.
Отрисовка стрелки делается острием вверх.
VALUES "typeArrow" 1, 2, 3 ! типы стрелки
sizeArrow ! размер стрелки
POLY2 3, 1 + 2*(typeArrow > 2) + 4*(typeArrow > 1),
-sizeArrow *tan(10), -sizeArrow,
0, 0,
sizeArrow *tan(10), -sizeArrow
LINE2 0, 0, 0, -sizeMarker*2
Дерзайте.
====================================================
Те, кто понимает, что "если что-то не запрещено, то разрешено", могут дальше не читать.
Для иных, кто без официального разрешения не могут ступить и шагу, официально разрешаю:
весь скрипт приведенный в посте и новый скрипт в правленном элементе, использовать как вам заблагорассудится. Пусть душа ваша будет спокойна. Аминь.