|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
zz07, номер поста откуда взял коды и файл примера. а так же версия и разрядность автокада. немного побольше информации
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 26.02.2007
от туда
Сообщений: 372
|
какой-то не понятный глюк, когда перезагружаешь файл, то все номера листов превращаются в 1 (ну или в любой другой номер листа на котором сохранился перед выходом) регениратьсия не помогает, после того как зайдешь на каждый лист то все встает на свои места
|
|||
![]() |
|
||||
Регистрация: 21.10.2008
Петербург
Сообщений: 19
![]() |
Добрый день. А возможно каким-то образом получить номер листа не из атрибута блока рамки, а взять из порядкового номера вкладки листа?
Т.е. через Код:
Последний раз редактировалось b00, 22.10.2016 в 07:55. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
b00, задачка довольно интересная.
Думаю, тут только программно. Штатно нельзя сослаться полем на порядковый номер листа. Если мы говорим НЕ о номере листа в подшивке. И то, там мы сошлемся не на порядковый номер листа в списке, а на жестко заданное свойство "Номер листа подшивки", которое не поменяется автоматом при перетасовке листов. В общем, если я правильно понял задачу, а именно: номер листа представлен атрибутом, который находится в составе блока форматки, этот блок находится в пространстве листа, при этом атрибуту нужно присвоить порядковый номер листа, на котором он находится, и при замене листов местами этот атрибут, содержащий поле, должен обновиться вне зависимости от цифр, входящих в имя листа, но в завимости от порядкового номера листа, - то вот (пока) тестовая, набросанная на скорую руку версия кода, без обработок ошибок и прочих пряничков: Код:
1. SetLayoutNumbers или SLN - начнется поочередное переключение листов (пока не в порядке их следования во вкладках, а в алфавитном порядке), на каждом из них пользователю будет предложено выбрать атрибут, в котором хранится номер листа. Это может быть и текст или Мтекст, но тогда обязательно не в блоке, потому как в этом случае он будет одинаковым на всех листах. Эту команду можно будет исключить в принципе, если принять определенные соглашения. Например, этот атрибут должен иметь определенное имя или находиться на определенном слое и т.д. Тут лучше бы мне увидеть файл с примером - понимания будет больше. Данный вариант - хоть и требует по одному клику на лист - универсальный при условии, что в листе есть блок с атрибутом. Промахнуться мимо атрибута пока нельзя - вылетит с ошибкой. 2. LayoutNumerator или LN - далее эту команду следует вызывать после того, как был изменен порядок следования листов. Произойдет изменение полей. Пока сделал принудительную регенерацию. Если файлы большие, и возникнут тормоза, можно будет ее убрать, и тогда для обновления полей придется производить регенерацию вручную, по мере необходимости. Не уверен, но думаю, что данную команду можно заменить реактором (т.е она будет вызываться автоматически при изменении листов) - пока не проверял. Ограничения: имя листа должно начинаться с буквы (русской или латинской) и не должно содержать: (, ) − левой и правой скобок, . − точки, ‘ − апострофа, “ − кавычек, ; − точки с запятой. Пробелы - можно. Эти ограничения реально обойти - было бы желание. Алгоритм работы следующий. При вызове первой команды сначала происходит создание глобальных переменных, имена которых совпадают с именами листов, но пробелы преобразуются в тире. Это и является причиной ограничений - они те же, что и при именовании переменных в лиспе. Каждой из этих переменных присваивается числовое значение, совпадающее с порядковым номером соответствующего листа. На значение этой переменной и ссылается программно созданное поле. При вызове второй команды происходит приведение в соответствие этих переменных новым порядковым номерам листов и регенерация Последний раз редактировалось skkkk, 27.11.2015 в 10:42. |
|||
![]() |
|
|||||
Регистрация: 21.10.2008
Петербург
Сообщений: 19
![]() |
Нет, не о подшивке.
Цитата:
Цитата:
Цитата:
Цитата:
И сопутствующий вопрос - для обработки строки в Diesel есть только функция substr? Т.е. вкладки листов имеют имена вида: 01_2.1_Название_листа, 02_2.2_Название_листа и т.п. Первые 2 (или X) символов до первого знака _ при помощи $(substr,$(getvar,CTAB),1,X) я вырезаю из имени вкладки и добавляю к полю, высчитывающему по формуле сквозной номер листа в томе (именно от этой операции хочется избавиться, получая данную информацию из порядка расположения вкладки листа, что и делает Ваш скрипт). Следующие X символов до второго знака _, которые должны быть подставлены в номер листа в основной надписи, простым substr универсально описать не получается, можно ли в Diesel применить регулярку типа ^(\d+)_([.\d]+).*$ ? |
||||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Она содержится в свойстве листа TabOrder, но доступ к ней только программный, из полей - нет (по крайней мере, насколько я знаю, могу ошибаться). Чтобы к ней был доступ из полей, и была придумана данная программка. Она назначает это свойство одноименной (за исключением замененных пробелов на тире) глобальной переменной, на которую уже можно сослаться полем.
Этот порядок и сохраняется в указанном свойстве каждого листа. Точнее в файле. Ведь всегда после закрытия порядок следования листов остается неизменным, правда? Иными словами это свойство напрямую зависит от положения листа по порядку и может принимать только одно значение - целое число. Функцией vla-get-TabOrder мы это число можем получить, функцией vla-put-TabOrder - задать, при этом произойдет физическое перемещение листа в соответствующую позицию, остальные номера поменяются согласно ряду натуральных целых чисел. Цитата:
![]() По поводу Дизеля - не подскажу - попросту не знаю, поскольку еще на рассвете карьеры выбрал лисп. Пробовал я эту соляру разок-другой, но помню, там почему-то при изменении свойств источника поля терялась связь - и я плюнул. В Сети полно информации по его функциям, но они довольно-таки скудны, хотя и позволяют делать многое со строками или числами. На вкус и цвет, как говорится. Однако, меня одолевает ощущение, что мы отошли от основной темы топика... Косвенная связь, конечно, есть, но к ведомости чертежей наш код имеет посредственное отношение. Если есть интерес, и он достаточно велик, предлагаю попросить модераторов перебросить это обсуждение в отдельную тему, если они сочтут это целесообразным. |
|||
![]() |
|
||||
Регистрация: 03.12.2009
Сообщений: 1,847
|
|
|||
![]() |
|
||||
проектировшик Регистрация: 01.01.2007
СССР
Сообщений: 5,149
|
Коллеги, кто-нибудь может видео на камстасии закинуть, как оно работает, хотел наглядно посмотреть, не хочу свою предыдущую от VVA удалять она меня устраивает на все 100%
__________________
инженер проектировшик с опттом программа авто гад образование высшие |
|||
![]() |
|
||||
Менеджер проектов Регистрация: 03.11.2015
Полтава
Сообщений: 28
|
У меня в блоке штампа три атрибута: номер листа и еще два поля с названием листа и частью проектируемого объекта, изображенного на конкретном листе. Сортирую по номеру листа. Все отлично.
|
|||
![]() |
|
||||
Регистрация: 21.10.2008
Петербург
Сообщений: 19
![]() |
Мне достаточно приведенного решения, благодарю. С учетом полученных пояснений по теме извлечения и установки свойства TabOrder (стал ясен смысл отдельного программного создания списка с номерами листов из TabOrder - чтобы получить доступ к ним через поля) я Ваш скрипт, при нужде, под себя перепишу, в т.ч. пропишу и имя атрибута блока.
|
|||
![]() |
|
||||
Регистрация: 08.06.2016
Сообщений: 15
|
Здравствуйте!
Акад 13. Прошу научить в несколько шагов сделать а/заполнение ведомости чертежей. Чертеж на листах. Многострочные атрибуты (будущие названия чертежей) не получаются. Ссылки на эти атрибуты на разные листы неизвестно как ставить. Помогите плиз. Или хоть ветку дайте из этого моря. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Цитата:
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автозаполнение ведомости чертежей и автонумерация листов в спдс 6 | Кукурузо_Джон_Горыныч | ПО от CSoft | 34 | 15.02.2019 08:13 |
Ведомость рабочих чертежей основного комплекта | 13Rossoneri | Архитектура | 3 | 22.08.2015 00:21 |
Аннулирование комплекта рабочих чертежей путем замены | Elena.sh | Разное | 8 | 26.05.2011 05:47 |
Хочу быстрее заполнять ведомости рабочих чертежей! | a-alex | Программирование | 2 | 19.02.2008 19:09 |