|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
![]() |
Поиск в этой теме |
![]() |
#1 | |
LISP. Как запустить LISP программу при создании чертежа по шаблону? (Автоматическое заполнение основной надписи)
AutoCAD/Civil3D LISP/C#
Санкт-Петербург
Регистрация: 15.08.2008
Сообщений: 1,702
|
||
Просмотров: 16333
|
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Поддерживаю.
Такой вариант. Создать корпоративный файл настройки (***.cui) в нем прописать что-то типа <LSPFile>\\Server\Шаблоны\Программы и настройки\Change_Parametrs.LSP</LSPFile> а в самом Change_Parametrs.LSP уже все на что фантазии хватит
__________________
cadtools |
|||
![]() |
|
||||
А ведь и правда, если acddoc.lsp поместить не в папку шаблонов, а в папку из списка путей поддержки - то запускается при открытии/создании любого чертежа! Но пока не могу понять, как теперь определить, что создан новый чертеж на основе шаблона, а не открыт существующий?
К стыду своему, со структурой файла cui не знаком, теги <LSPFile></LSPFile> определяют автозагружаемый LISP файл?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,301
|
Зачем вообще менять шаблон ради того, чтобы что-то делать сязанное с именем пользователя? Тем более такое простое, как заполнение основной надписи?
Да чего угодно можно сделать в acaddoc.lsp, если вне функция будет читать какие-то настройки, записанные в файл, находящийся в каталоге пользователя. Т.е. где-то в %LocalApplicationData%. Путь к этому файлу легко вычислить независимо от Автокада вообще. А для основных надписей скорее надо автоматически заполнять длинные строки наименований. Они могут быть в INI-файле, находящемся в папке чертежей. 100 файлов - одна запись в INI - 1000 jlbyrjds[ yflgbctq/ |
|||
![]() |
|
||||
Цитата:
![]() Сделал динамическоий блок - границы формата+основная надпись. Динамический блок потому, что форматы все не предусмотреть заранее: чертежи выпускаем в виде "портянок" <Число>хА4, где <Число> может быть любым натуральным числом. Титул, название раздела, название чертежа - в виде многострочных атрибутов. Номер чертежа, лист, листов, стадия - однострочные атрибуты. Даты - в виде текста с полями. Фамилии - в виде однострочного текста внутри блока. Вот и хочу, чтобы создавая чертеж на основе шаблона, в котором уже вставлен этот блок, фамилии в основной надписи менялись в зависимости от того, кто чертеж создает. При этом, хочется совершать минимум манипуляций на отдельном копьютере. Возникла идея - на сервере разместить шаблоны чертежей, там же - файл acaddoc.lsp, там же - текстовый файлик соответствия имен пользователей и фамилий. Впоследствии можно будет извлекать и названия титулов из документа на сервере и вставлять их в основную надпись... Вот такая вот небольшая автоматизация, при этом достаточно один раз на каждом компьютере настроить путь к шаблонам и файлу acaddoc.lsp. Пока что нашел как определить новый файл создан или открыт существующий: Код:
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) Последний раз редактировалось Do$, 31.03.2011 в 13:50. |
||||
![]() |
|
||||
Цитата:
![]() и програмно изменять, если уж так хочется. Инфу вроде наименования объекта и его шифра - в свойствах подшивки. п.с. Если интересует код, как получить эту инфу из Active Directory - могу дать пример - делается элементарно. Правда оболочку для лисп-функции сам тогда напишешь - это не сложно.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 31.03.2011 в 14:32. Причина: добавил "п.с." |
||||
![]() |
|
||||
Active Directory.
Если коротко - в отделе кадров вашей конторы сидит девушка/бабушка, которая при приёме на работу юзеров вбивает в компьютер информацию о них. На основании этой инфы администраторы создают профили новых пользователей для того, чтобы те могли работать в составе домена. Через Active Directory ты с любого компьютера, подключенного к вашей сети сможешь получить инфу по домену/доменным группам/юзерам/компьютерам, если обратишься к нему (Active Directory) программно. Копипаст (методы, извлекающие различного рода информацию) из Active Directory: Код:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 31.03.2011 в 19:03. |
||||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,537
|
Бред какой-то...
Во первых не понятно почему не загружается acad20**doc.lsp Во вторых, применение полей сводит к нулю необходимость вообще использовать какой-либо лисп, о чем, я думаю, намекает hwd В третьих, для выполнения лиспа нужно время... иногда даже доли секунды провоцируют нервный срыв... В четвертых создавать конфигурационный файл для каждого не проще чем создавать шаблон... В пятых, дайте свободу вашим пользователям и они сделают вашу работу за вас лучше для себя... В шестых, не делайте работу за автокад, он и сам это умеет, я говорю опять же об индивидуальном шаблоне для каждого, т.е. он станет потом индивидуальным, в процессе работы... В общем овчинка-то выеденного яйца не стоит |
|||
![]() |
|
||||
Суть ясна, но я понятия не имею, какие данные вносятся в наш Active Directory и как структурируются, как их оттуда извлекать и т.п. Боюсь, что мне пока не по силам эти дебри, так что, пока обойдусь собственноручной текстовой базой.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Совершенно верно - поля тянут информацию из свойств чертежа, указанных мною на скрине. Если есть острое желание, чтобы в поле "Исполнил" автоматом вставлялось фио того, кто создаёт этот чертёж - выше показал код, как эту инфу (и не только её) можно вытащить из AD. Но не думаю, что это того стоит. Имхо - юзер сам должен осмысленно заполнить записи, показанные мною на скрине - так будет лучше.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Поля это хорошо, но как быть с форматированием текста, если, к примеру, фамилия длинная и не помещается в отведенное пространство в основной надписи?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Во вхождении блока можно войти в редактор значений атрибутов и сжать текст, если нужно (вкладка TextOptions).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
1. В Custom Properties (как в #7) прописываешь свойство (например Шаблон) с нужным значением (например КЖ)
2. Анализируешь переменную DWGTITLED 3. Если DWGTITLED=0, то создан новый чертеж. Читаешь значение свойства "Шаблон" и принимаешь дальнейшее решение. DwgRuLispLib: Функции чтения и установки свойств рисунка (_dwgprops)
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Цитата:
Вот привожу пример программного заполнения рамки с заполнением штампа. Обратите, например, внимание на словари фамилий проверяющего (он м.б. не один) и т.д. и т.п. Ничего этого из Active Directory, да еще и автоматом Вы не получите. Надо давать и пользователю поработать. Только программно помогать надо. ![]()
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
![]() |
|
||||
Не надо мешать мух и котлеты. Автор топика указал, что автоматом хочет заполнять одну ячейку, содержащую инфу о том, кто исполнил чертёж. Эту инфу из AD легко получить. Если автоматом должны заполняться все участники - это совсем др. вопрос и в этом случае AD конечно не к месту (разве что "Исполнил" заполнить).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 31.03.2011 в 19:07. |
||||
![]() |
|
||||
Не совсем так. В зависимости от автора чертежа могут меняться и остальные фамилии, но для одного разработчика двух разных нормоконтролеров или утверждающих быть не может - то есть, если определить автора чертежа, то можно однозначно определить остальные фамилии.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как из lisp запустить еxe? | tinik_89 | LISP | 17 | 15.07.2011 09:18 |
{Конкурс} Lisp. Задачки для студентов | gomer | LISP | 10 | 05.01.2011 16:33 |
LISP для очистки чертежа от дублирующихся объектов | Nikolays | AutoCAD | 5 | 13.12.2010 16:59 |
Как из Delphi запустить программу на AutoLISP | Valery | LISP | 1 | 23.09.2005 20:51 |
Не удается запустить программу из загруженного ARX-файла | plaz | Программирование | 2 | 01.09.2003 07:35 |