|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Регистрация: 21.10.2012
Сообщений: 143
|
Здравствуйте.
Тоже интересно, как можно с помощью поля отобразить "номер листа" и "количество листов". Может, появилась или стала известна системная переменная, или у кого-то есть наработки? Желательно, без лиспа, точнее, чтобы не вносить изменения в файлы автокада и без внешних подключаемых лисп-файлов. Тут писали про возможность вставки лиспа в филд, как это реализовать? Спасибо. |
|||
|
||||
Регистрация: 17.07.2008
Сообщений: 74
|
Тут смотрели?
|
|||
|
||||
Регистрация: 21.10.2012
Сообщений: 143
|
Walkmax, спасибо.
Предложенный вами вариант очень хорош по функционалу, особенно благодаря автоматическому обновлению, но он опять требует внесения изменений в файлы автокада или в реестр, но мне это не совсем удобно, так как, если правильно понимаю, открытый на другом компе автокадовский файл уже не будет обладать корректно работающим счетчиком. Всё же надеялся, что есть что-то встроенное и доступное по умолчанию хотя бы последним версиям автокада. |
|||
|
||||
начинающий инженер-гидротехник Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 893
|
попадалось такое решение, кажется от VVA и wetr:
1. (setvar "USERI1" (length(layoutlist))) - системной переменной user1 задается значение (length(layoutlist)) 2. В поле прописывается dieselexpression $(-,$(getvar,USERI1),0) http://forum.dwg.ru/showthread.php?t=14548 - здесь подробнее всё описано Последний раз редактировалось kacugu, 08.02.2016 в 13:05. Причина: неправильно понял вопрос |
|||
|
||||
Регистрация: 12.03.2013
Сообщений: 650
|
Интересно, но для меня например было бы достаточно просто чтоб обновлялось кол-во листов в файле в этом поле %<\AcVar USERI1>%
Как я понял стандартная переменная в акад отсутствует и поэтому это можно только реализовать на той машине где произведены необходимые манипуляции, написан код, подгружена библиотека и т.п. Ну раз уж так то для себя сделал след образом - стандартную команду регенерировать все ВСЕРЕГЕН превратил в макросик, т.е. дополнил ее всем уже известной тут строчкой ^C^C(setvar "USERI1" (length(layoutlist)));_updatefield;_all;; В результате у меня на кнопке ВСЕРЕГЕН прописано так ^C^C_regenall ^C^C(setvar "USERI1" (length(layoutlist)));_updatefield;_all;; Т.е. что получили При открытии файла конечно не обновляется это поле, но обновляется при выполнении команды регенерировать все Но может, кто нить подскажет как без подгрузки библиотек допилить такую простую схему чтоб и при открытии файла обновлялось? |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
allar8, fieldeval поменяй на 31 (подробнее в справке)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 12.03.2013
Сообщений: 650
|
Да в 31 и стоит у меня. Да и это не совсем, то.
У меня не речь не про обновление полей, а про обновление конкретного поля, под обновлением которого подразумевается загон в переменную USERI1 кол-ва листов в документе и отображение значение этой переменной в поле Т.е. по сути все как бы просто при открытии файла мне надо чтоб запустился макрос на моей кнопке ^C^C_regenall ^C^C(setvar "USERI1" (length(layoutlist)));_updatefield;_all;; Последний раз редактировалось allar8, 03.07.2019 в 11:11. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
Поменяй acaddoc.lsp или acad.mnl
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855
|
Да, только проверь корректность кода. Может быть, будет иметь смысл заменить на
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 12.03.2013
Сообщений: 650
|
Цитата:
----- добавлено через ~16 мин. ----- Цитата:
Сведем в одно сообщение рабочее решение теперь. Создаем поле %<\AcVar USERI1>% Стандартную команду регенерировать все ВСЕРЕГЕН превращаем в макросик, т.е. дополняем ее всем уже известной тут строчкой ^C^C(setvar "USERI1" (length(layoutlist)));_updatefield;_all;; В результате получаем кнопку ВСЕРЕГЕН с макросом ^C^C_regenall ^C^C(setvar "USERI1" (length(layoutlist)));_updatefield;_all;; Т.е. что получили при выполнении регенерировать все ВСЕРЕГЕН - это поле (%<\AcVar USERI1>%) обновляется, но при открытии файла обновления не происходит. А с помощью Кулика Алексея удалось и при открытии файла выполнить обновление этого поля см. #50 У меня из #50 зарабатало с файлом acad.mnl В конце файла acad.mnl прописал, рекомендуемые Куликом Алексеем строчки: (setvar "useri1" (length (layoutlist))) (vl-cmdf "_.updatefield" "_all" "") Мелоч казалось бы - обновляемое поле с кол-вом лайотов, а приятно))) Последний раз редактировалось allar8, 03.07.2019 в 13:26. |
|||
|
||||
Регистрация: 12.03.2013
Сообщений: 650
|
Вопрос всем Гуру программирования. Позскажите плиз, направьте так скать в нужное русло. Нужно создать поле со значением с зависимым от кол-ва лайотов в чертеже.
Т.е. конкретно нуно чтоб поле выдавало значение "0" если число кол-ва лайотов двузначное, т.е. больше 9. и значение "00" если число кол-ва лайотов однозначное, т.е. меньше 10 Нужно еното мне чтоб в шифре у меня автоматически менялась концовка шифра типа - 001, 002... 010,011 и.т.д. где 1,2...10 число лайотов - с этим нет проблем. Проблема с автовыбором кол-ва нулей перед значение кол-ва листов Зачем мне это не спрашивайте - такие правила оформления в нашей конторе. В шифре документа такое должно быть окончание. И вообще такое реально сделать? Если да - подскажите с помощью каких средств и как Заранее благодарен. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Ничего не понял, но в .Net это решается так, например)
----- добавлено через ~31 мин. ----- А вообще то ГОСТ Р 21.1101 еще не отменили: Цитата:
|
|||
|
||||
Регистрация: 12.03.2013
Сообщений: 650
|
Я же говорил - не спрашивайте зачем))). Спорить с местными правилами я не вправе. Приходится подстраиваться. Тем более руководство и НК в другом городе). Я просто проектировщик а не законадатель мод в конторе. Подскажите лучше по теме вопроса, чем рассуждать о том что по Гост или нет)))
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Так уже подсказал
С такими загонами руководства просто заполнял программно бы блоки основных надписей без всяких полей. А программно можно любой маразм реализовать, если он укладывается в алгоритмизацию) Можно еще попробовать DIESEL, но с ним толком и не работал. |
|||
|
||||
Регистрация: 12.03.2013
Сообщений: 650
|
как раз на него и обращал внимание - но блин не обновляет(
----- добавлено через ~1 мин. ----- Я не один работаю - всех тоже не способен переучить - есть особенности. В обчем мине нуно так. Про маразм не спорю. Есть у всех это НК). Да ладно бы конторка была маленькая - можно поспорил бы еще с НК). Компания всероссийская. Я в филиальчике работаю). Все закреплено на уровне местных нормативных документов) Последний раз редактировалось allar8, 19.08.2019 в 10:22. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Ну тут по тем же граблям бегали)
|
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переменная содержащая имя листа | deConstructor | AutoCAD | 6 | 11.11.2007 17:57 |
Есть ли такая системная переменная? | {Smirnoff} | Программирование | 6 | 19.08.2005 12:11 |
Количество листов в layout | AleXYZ | AutoCAD | 6 | 06.05.2004 17:40 |