| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Алгоритм который возвращает номер странички

Алгоритм который возвращает номер странички

Ответ
Поиск в этой теме
Непрочитано 29.02.2020, 18:35 #1
Алгоритм который возвращает номер странички
mr.frai1992
 
Регистрация: 10.04.2019
Сообщений: 47

Идея простая и не новая: придумать что-то чтобы в нужных местах (правый верхний угол листа и штамп в графе лист) автоматически проставлялся нужный номер.
Порывшись на форуме и почитав справку
Получилось следующее выражение на языке дизель которое прописывается через поле в нужном атрибуте (тексте)
Код:
[Выделить все]
$(+, 10, $(substr, $(getvar, "ctab"), 3 ,$(-, $(strlen, $(getvar, "ctab")), 3)))
Здесь 10 это число добавляемое к номеру страницы, если не нужно то 0
Страница должна называться в формате (1) или (112) тогда:
1. При копировании листа (я обычно использую копирование чтобы не настраивать заново формат, масштаб, рамку, штамп и т.д.) новый лист автоматически нумеруется следующим порядковым номером. Это, как я понимаю, родное свойство автокада;
2. Оставшаяся часть кода дизель возвращает название страницы между скобками
Вроде неплохо, НО не удобно, т.к. нельзя назвать лист "Планы (13)" без корректирования кода.
Решение вроде бы есть - код должен найти в строке $(getvar, "ctab") первое совпадение с символом "(". Тогда не будет иметь длина названия листа перед (##)/
Ввиду скудности своих познаний я придумал решение только с помощью перебора первых символов на соответствие "("
Вот это выражение возвращает 1 если первый символ левая скобка, иначе 0.
Код:
[Выделить все]
$(eq, $(substr, $(getvar, "ctab"), 2 , 1), "(")
и так далее перебираем n символов
Код:
[Выделить все]
$(eq, $(substr, $(getvar, "ctab"), 3 , 1), "(")
$(eq, $(substr, $(getvar, "ctab"), 4 , 1), "(")
$(eq, $(substr, $(getvar, "ctab"), 5 , 1), "(")
Это то что работает а вот дальше я что-то делаю не так...
Я пробовал подставить это условие в функцию $(if, условие, истина [, ложь])
Код:
[Выделить все]
$(if,
$(eq, $(substr, $(getvar, "ctab"), 2 , 1), "("),
$(substr, $(getvar, "ctab"), 3 ,$(-, $(strlen, $(getvar, "ctab")), 3)))
Лист подписан (12) и по идее должно возвращаться в поле значение 12, а у меня $(IF,??). Значит что-то не так с синтаксисом ($(функция,??) - Недопустимые аргументы в функции).
Может кто-то подскажет что именно не так?
Прилагаю файл с примером всего вышеизложенного

----- добавлено через ~2 ч. -----
Возможно оффтоп но не совсем тоже по использованию функции $(if, условие, истина [, ложь]).
Идея в следующем:
- есть в чертеже свойства (из вкладки прочее) для заполнения штампов;
- там есть дата (т.к. иногда в штампе нужна дата отличная от текущей) и по 8 свойств для столбца с должностями и фамилиями;
-> дату нужно ставить не во всем столбце а только на против ячеек с пустой фамилией
Есть формула для поля даты %<\AcVar CustomDP.Дата>%
Есть формула для поля с фамилией первой строки и т.д. %<\AcVar CustomDP.Строка-1(знач)>%
Можно ли в дизеле как то на них ссылаться? типо такой код в полях из столбца дата:
Код:
[Выделить все]
$(if, $(eq, $(getvar, "AcVar CustomDP.Строка-1(знач)"), ""), "" , $(getvar, "AcVar CustomDP.Дата"))
Только этот код не работает начиная с возврата значения переменной
Пример в том же файле

Вложения
Тип файла: dwg
DWG 2013
Sample.dwg (823.8 Кб, 8 просмотров)

Просмотров: 2971
 
Непрочитано 29.02.2020, 21:53
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


как бы это давно и успешно решается с помощью подшивок
trir на форуме  
 
Автор темы   Непрочитано 29.02.2020, 22:30
#3
mr.frai1992


 
Регистрация: 10.04.2019
Сообщений: 47


trir, по ряду причин не могу использовать подшивки, а блок с полями могу... Неужели задача нерешаема?
mr.frai1992 вне форума  
 
Непрочитано 05.03.2020, 20:45
#4
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 299
Отправить сообщение для petro_f с помощью Skype™


Попробуйте этот плагин. Я им автоматом нумеровал листы в своё время.
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума  
 
Автор темы   Непрочитано 05.03.2020, 20:53
#5
mr.frai1992


 
Регистрация: 10.04.2019
Сообщений: 47


Интересное решение попробую. Спасибо!
mr.frai1992 вне форума  
 
Непрочитано 15.04.2020, 02:43
#6
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Цитата:
Сообщение от mr.frai1992 Посмотреть сообщение
2. Оставшаяся часть кода дизель возвращает название страницы между скобками
Вроде неплохо, НО не удобно, т.к. нельзя назвать лист "Планы (13)" без корректирования кода.
Не пойму, что мешает номер указывать номер перед наименованием: 013 Планы. Зачем зацикливаться на автоматическом добавлении номеру листа в скобках при создании копии? Вы все равно на каждом листе исполняете свой чертеж, так в чем проблема уделить несколько секунд для переименования? Ну или я что-то не допонял в вашей системе.

Цитата:
Сообщение от mr.frai1992 Посмотреть сообщение
Здесь 10 это число добавляемое к номеру страницы, если не нужно то 0
Страница должна называться в формате (1) или (112) тогда:
Вы можете создать в файле глобальное свойство (переменную), типа "смещение". В поле прибавлять его к вашему коду дизеля через "формулу", и не придется больше никогда лазать в блок или текст с полем. Кроме того, пропадут ведущие ноли: 005 или 012 превратятся в 5 или 12, если в свойствах чертежа вы "смещению" присвоите 0; и превратятся 9 или 16, если "смещение" присвоите 4! Тем более Вы знаете об этих свойствах:
Цитата:
Сообщение от mr.frai1992 Посмотреть сообщение
есть в чертеже свойства (из вкладки прочее)
Цитата:
Сообщение от mr.frai1992 Посмотреть сообщение
8 свойств для столбца с должностями и фамилиями
Я пока до сих пор не понимаю, зачем в блок штампа в клетки, где на протяжении всего проекта ничего не меняется: должности, фамилии, наименование проекта, стадия и прочее - использовать поля? Что мешает создать файл "штамп", туда внести все, что относится к данному проекту, и подключить к блоку при помощи внешней ссылки?
А в самом файле "штамп" ставьте поле с датой только туда, где есть должность. Еще туда можно и подписи наставить!
Theodor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Алгоритм который возвращает номер странички

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имеется ли возможность ссылаться изнутри при создании блока на его же будущий номер ObjId ? Tyhig AutoCAD 6 14.08.2017 17:56
Revit 2015, как отобразить номер разреза ooogo Revit 2 13.01.2016 20:29
Ссылка на номер листа в мультитексте 13Rossoneri ПО от CSoft 11 04.11.2014 21:52
Как найти номер подшипника по размеру ролика Vidis Машиностроение 8 02.06.2014 14:53
Почему field возвращает координаты объекта только в мировой системе координат? stumpel AutoCAD 7 20.02.2009 12:43