Я начинаю заниматься программированием LISP (help) - Страница 7
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Я начинаю заниматься программированием LISP (help)

Я начинаю заниматься программированием LISP (help)

Ответ
Поиск в этой теме
Непрочитано 19.02.2006, 20:00
Я начинаю заниматься программированием LISP (help)
mmax
 
Программист широкого профиля.
 
Челябинск
Регистрация: 08.09.2005
Сообщений: 722

Гопода, я начал этим заниматься совсем недавно, буквально в этом месяце. И у меня уже есть грандиозные планы например: чтобы автокад рисовал какие нибудь стандартные детали сам (болты, гайки шурупы итд)

И соответственно у меня начали появляться вопросы на которые г-н Полещук НН в своих произведениях не смог ответить в полном объеме, значит мне понадобится чья нибудь еще помощь.

У меня уже были вопросы которые я задал здесь и получил исчерпывающие ответы. Но если я на кждый вопрос буду создавать отдельный топик, то количество топиков будет = кол-ву вопросов, а вопросов миллион -- администраторы и модераторы данного ресурса наверное понимают о чем я. Да и такое кол-во ссылок не влезет мой..........

Вобщем я хотел бы все свои вопросы помещать в этот топик и надеюсь на поддержку знающих людей.

Всем заранее благодарен.
Просмотров: 79699
 
Непрочитано 14.03.2006, 20:34
#121
pyatifan


 
Регистрация: 29.10.2005
Нижегородская обл.
Сообщений: 219
<phrase 1=


Цитата:
Сообщение от mmax
печать я могу настраивать дома, и уменя все получается.
Неужели PC3 файл не в силах помочь...
pyatifan вне форума  
 
Автор темы   Непрочитано 14.03.2006, 20:35
#122
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от vk
Цитата:
Сообщение от mmax
а они всеравно ни ENTMAKE.
Что то туго с телепатией сегодня. Проблемный кусок кода где?
В том то и дело,что нету кода тоесть было много кодов, но все они были полным бредом, есть только списки, и ничего с ними не получается.
Попробуем завтра, что нам Елпанов Евгений предложил.
mmax вне форума  
 
Непрочитано 15.03.2006, 09:38
#123
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от mmax
Попробуем завтра, что нам Елпанов Евгений предложил.
А чего пробовать...
Функция строит линии и возвращает список указателей на построенные линии.
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 15.03.2006, 19:32
#124
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от pyatifan
Цитата:
Сообщение от mmax
печать я могу настраивать дома, и уменя все получается.
Неужели PC3 файл не в силах помочь...
Может но только кгто даст мне его скопировать в такую длинную директорию.

В лисп функции будет предусмотрено копирование этого файла в нужное место и последующе его удаление, а также будут заданы нужные мне параметры печати и автоматический запуск печати.

Вот только надо сделать так чтобы функция выполнилась сама при открытии рисунка, но лисп здесь безсилен должен помочь VBA.
mmax вне форума  
 
Непрочитано 15.03.2006, 19:55
#125
Zouss


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


все же обьясни, что мешает положить acaddoc.lsp с
Код:
[Выделить все]
(defun s::startup
в ту папочку где лежит твое файло, подготовленное для печати?
Zouss вне форума  
 
Непрочитано 15.03.2006, 20:45
#126
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


>mmax
Цитата:
они утверждают обратное -- типа ихние плоттеры имеют меньшую площадь печати чем формат А1 и умудряются вписывать формат с уменьшением масштаба в такую обширную площадь печати, что недопустимо для машиностроительных чертежей

1)Что тебе мешает настроить layout под нужный лист без полей если у тебя есть драйвера ИХ плоттера? Им надо будет просто нажать на кнопку "печать".

2) И кто заставит их запустить макрос, если ты его сможешь написать, если не проходит даже первый вариант?
Apelsinov вне форума  
 
Непрочитано 16.03.2006, 09:53
#127
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>favorite № 107
По сваям см. здесь

Последний раз редактировалось VVA, 18.09.2015 в 23:42.
VVA вне форума  
 
Автор темы   Непрочитано 16.03.2006, 13:51
#128
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от Apelsinov
1)Что тебе мешает настроить layout под нужный лист без полей если у тебя есть драйвера ИХ плоттера? Им надо будет просто нажать на кнопку "печать".
Мешает параметр страницы который у них не настроен. Они используют драйвер который поставляется на дике с Автокадом "HP Designet 450 (A1)" -- это я у них выяснил.
Если рассказать детально, то есть такая папка "Принтеры и факсы" в "Панели управления" там можно настроить размеры листа. По умолчанию там предлагается целый набор стандартных листов ,штук 50, размеры которых нельзя изменить, но есть 5 листов под названием Custom 1, 2, итд, размеры которых можно менять если принтер эти размеры поддерживает, но по умолчанию они имеют стандартные размеры. Беда в том что работники фирмы даже не подозревают что размеры листа можно менять. Они используют листы размером 620*940, а при печати выбирают лист "ISO A1 oversais" -- соответственно принтер тоже думает что у него стоит стандартный формат А1 и расчитывает его с полями для этого формата и глюк еще в том что хоть и "ISO A1 oversais" предусматривает печать без полей, поля по 5 мм всетаки есть--про калибровку работники фирмы тоже не догадываются. Впринципе если печатать без рамки 841*594, то чертеж более менее соответствует масштабу, но лишние края обрезать приходится ножницами и мне эту рамку приходится рисовать карандашом чтобы было видно где резать(напоминаю -- реальные размеры листа 620*940).
Если я у себя на компьютере настрою размеры листа Custom 1 в соответствии с реальными размерами листа 620*940 то в пространстве листа область печати получается много больше чем формат А1 и рамка 841*594 болтается там как гвоздь в стакане. Но когда я приношу рисунок на печать то Автокад выдает сообщение на несоответствие настроек листов в принтере, тоесть надо заставить фирму тоже настроить Custom 1 по моим требованиям.
.PC3 файл мог бы решить решить эту проблему. Как я заметил если в нем вызвать окно настроек принтера, такое же как и в папке "Принтеры и факсы" и задать нужные значения листов, то эти изменения сохранятся только в PC3 и никак не влияет на системные настройки в "Принтерах и факсах", что очень бы порадовало бы фирмачей, которые не хотят отступать от умолчаний ни на шаг. Но этот РС3 предательски отображается в списке принтеров при настройке печати и раздражает пугливых работников.

Цитата:
Сообщение от Apelsinov
2) И кто заставит их запустить макрос, если ты его сможешь написать, если не проходит даже первый вариант?
Я не знаю бейсика и в моем понятии внедренный макрос должен не только загружаться но и выполняться сам. Бесплатные цифровые подписи можно получить у Офиса запустив "C:\Program Files\Microsoft Office\Office10\SELFCERT.EXE". Такая подпись конечно не остановит систему безопасности, но выдаст сообщение что макрос подписан.
А проехать по ушам работников, что этот макрос запускает какую нибудь автоматическую прорисовку стандартных объектов и типов линий , которые хранятся lsp файле, а также запускает печать с нужными параметрами. Для наглядности еще дома отключить все слои, а лисп-функция их включит, получится что не запустив макрос – рисунок будет голым то и печатать его нет смысла, а я всетаки постоянный клиент итп итд.

Чем вызвана эта проблема в целом:
Фирмы по оказанию услуг печати больших форматов для населения просто боятся простоев оборудования по причине сбоев программного и аппаратного обеспечения тк это их хлеб. И клиентов они не подпускают к настройкам потомучто боятся, что клиент в силу своей неопытности может внести какиенибудь изменения и просто чего нибудь напортачить, и после неумелых действий клиента их могут ждать сбои, простои итп. А обучить работников предприниматели просто не могут – таким вещам нигде не учат.
В сложившейся ситуации мой PC3 был бы революционным решением в деятельности фирмы – теперь они могли бы говорить, что формат А1 полностью вписывается в лист без искажений, но мысль о том что какой то файл предоставленный клиентом да еще который надо скопировать в скрытую системную папку да еще какая то там Панель управления приводит их в ужас. И то что я предлагал хозяевам фирм бесплатно обучить персонал использованию РС3 не возымело на них никакого действия. Поэтому мне надо самому для себя принимать какие нибудь революционные решения иначе мои чертежи будут печататься в формате 835*589 а линию отреза полей мне приходится рисовать самому.

Такую политику ведут все фирмы в нашем городе
mmax вне форума  
 
Автор темы   Непрочитано 16.03.2006, 14:06
#129
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от Zouss
все же обьясни, что мешает положить acaddoc.lsp с
Код:
[Выделить все]
(defun s::startup
в ту папочку где лежит твое файло, подготовленное для печати?
Вэтом вопросе я не просящен. Я только знаю что лисп функцию надо записывать acaddoc.lsp который лежит в папке системы автокад, тогда эта функция выполнится при открытии, но на чужом компьютере мне не дадут туда ничего писать.

Сколько мне приходится их уговаривать, спорить чтобы они сделали все по моему все безрезультатно учитывая то что с листа они берут по 100р, а мои требования к печати не выполняют.
однажды просто сказали: "Молодой человек, если вы умнее нас, то купите свой плоттер и печатайте как вам вздумается."
В такие моменты мне хочется написать чтонибудь типа
(vl file delete "systemroot\*.*) :twisted:
mmax вне форума  
 
Автор темы   Непрочитано 16.03.2006, 14:23
#130
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
acaddoc.lsp с
Код:
[Выделить все]
(defun s::startup
в ту папочку где лежит твое файло, подготовленное для печати?
Действительно, а я тут VBA мучаю. Кстати оно почемуто в моем 2005 официальном русском очень глючное и какоето недопереведенное на русский язык хотя в документации сказано что он полностью на английском.
mmax вне форума  
 
Непрочитано 16.03.2006, 16:14
#131
Zouss


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


в обчем маленький ликбез

в acade с недавних пор 4 автозагружаемых лиспа:

acad2000.lsp - системный, загружается при старте системы
acad2000doc.lsp - системный, каждый раз загружается при открытии или создании нового файла
acad.lsp - пользовательский, загружается при старте системы
acaddoc.lsp - пользовательский, каждый раз загружается при открытии или создании нового файла

так вот, acad загрузит один ближайший acaddoc.lsp, а искать будет прежде всего в той папке, где лежит файл чертежа, и только потом, если не найдет, начнет рыть во всяких support file searh path, по порядку причем...

Код:
[Выделить все]
(defun s::startup ()
  ;;;здесь будет нежное тело её
)
автоматически запустится и отработает (если конечно код правыльный ) при loade любого лиспа

дерзайте...
Zouss вне форума  
 
Непрочитано 16.03.2006, 16:43
#132
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


Цитата:
Сообщение от mmax
ISO A1 oversais" предусматривает печать без полей, поля по 5 мм всетаки есть
У меня нет. Сколько печатаю - все точно и без полей. Я так и не понял, зачем при печати на СТАНДАРТНЫЙ А1 устанавливать custom формат листа. Я печатаю на стадартном формате "Oversize: ISO A1" с масштабом 1:1 лист c рамкой точно 841х594 (плоттер HP500). Действительно, ширина рулона больше 594 и к тому-же плоттер обрезает его, отступая какое-то расстояние - ну и что? Даже , если Вам зачем-то надо получившиеся поля обезать - режте по наружней рамке - зачем карандашем что-то рисовать?
Apelsinov вне форума  
 
Автор темы   Непрочитано 16.03.2006, 18:37
#133
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от Apelsinov
Цитата:
Сообщение от mmax
ISO A1 oversais" предусматривает печать без полей, поля по 5 мм всетаки есть
У меня нет. Сколько печатаю - все точно и без полей. Я так и не понял, зачем при печати на СТАНДАРТНЫЙ А1 устанавливать custom формат листа. Я печатаю на стадартном формате "Oversize: ISO A1" с масштабом 1:1 лист c рамкой точно 841х594 (плоттер HP500). Действительно, ширина рулона больше 594 и к тому-же плоттер обрезает его, отступая какое-то расстояние - ну и что? Даже , если Вам зачем-то надо получившиеся поля обезать - режте по наружней рамке - зачем карандашем что-то рисовать?
Вот так будет распечатан чертеж А1 по моему "Custom# 620*940"

:?: Не могу прикрепить картинку средствами этого форума :?:
Эта картинка расположена в Череповецкой локальной городской сети и может быть недоступна некоторым пользователям.



При "Oversize: ISO A1" он будет без наружных рамок и чтобы обрезать лист ножницами надо будет самому нарисовать наружную рамку. Обрезать надо для тогочтобы сложить лист в курсовик и излишние поля только помешают. И как я уже говорил выше меня не допускают к настройкам печати даже если я сделаю чтото неправильно и за повторную печать заплачу как за два листа и при всем этом они умудряются вписать А1 формат с уменьшением масштаба в этот злополучный "Oversize: ISO A1"
Ну и насколько я изучил печать не имея плоттера, а только его драйвер, то в "Oversize: ISO A1" я смогу добиться масштаба 1:1, но наружные рамки могут не пропечататься тк находятся на самом краю печатного края точнее совпадают с ним. Плоттер ничего не режет.

Так что Custom всетаки лучше и реальнее отображает картину.
Ну и при открытии рисунка печать пойдет сама не надо будет ничего настраивать. Вобщем хочу создать этакого печатного троянца который будет действовать по моим правилам а не по ихним.

Ну и в продожение темы нашел тут нечто такое под названием PLOTSETTINGS, которое размещается в секции OBJECTS, а так же список DXF кодов к ним. На мой взгляд с помощью этого PLOTSETTINGS можно настроить печать лучше и прощще чем с помощью COMMAND. Но при помощи моих знаний объектной модели я так и не смог получить возвращаемого значения с кодом ((0 . "PLOTSETTINGS") (итд) (итп))
Скажите как воспользоваться данным свойством, модифицировать его и отправить на печать.
mmax вне форума  
 
Непрочитано 16.03.2006, 19:38
#134
Zouss


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


to mmax

что то ты совсем отчаялся если такой обходной путь ищешь...
Plotsettings - это pagesetup, для каждого layout и для модели эта группа будет... Так вот, чтобы получить ((0 . "PLOTSETTINGS") надо сначала получить ((0 . "имянужногоLayout") а уже затем из этого составного объекта можно выдернуть ((0 . "PLOTSETTINGS") и все остальное Ежели хочешь погеморроиться поищи в хелпе акада на тему Creating & modifying complex entities

соответственно возникают еще два вопроса
1 лирический - вот я в свое время защищался так преподы нас с масштабом не прессовали - аппаратные ограничения, понимали блин...
2 практический - что мешает дома отпечатать в файл *.pln со всеми нужными настройками, а в фирме просто скопировать это дело на плоттер? при такой процедуре все без спросу работает

а вообще ищи нормальную контору с нулевочкой или рулонной A1 - никто ведь не запретит расположить лист на плоттере вертикально?
Zouss вне форума  
 
Непрочитано 17.03.2006, 00:54
#135
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>mmax

Собственно создание чертежей для плотера которого нет не представляет большой проблемы, при одном условии. Надо иметь файлы шаблонов *.dwt созданные для этого плотера (естественно с рамками, потому что при отсутствии плотера невидно границ листа). При нестандарных форматах это кречно не спасает, однако со стандарными очень помогает.

>Zouss

Без обид.
Писать определние параметров печати в s::startup - вредный совет - поскольку если эта функция переопределена, то работает при загрузке всех чертежей в данном сеансе, т. е. получается что при загрузке её из одной из копий acaddoc.lsp я на весь сеанс работы получаю измененение параметров печати во всех открываемых чертежах :evil:
Если уже на то пошло, не проще ли просто после тела функции в файле acaddoc.lsp сразу её вызвать (defun My_Fun() ...) (My_Fun) ?

Копии acaddoc.lsp конечно в опрелённых случаях выход, но что то мне не совсем нравится. Если такая копия будет случайно перемещеня не в "свою" папку и будет что то творить при открытии чертежей? Большинство контор даже не имеют специалиста который сможет догадатся о причинах подобных "глюков".

Насчёт параметров печати, то их намного проще менять ActiveX - методами.
{Smirnoff} вне форума  
 
Непрочитано 17.03.2006, 09:58
#136
Zouss


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


Цитата:
Сообщение от {Smirnoff}
Если уже на то пошло, не проще ли просто после тела функции в файле acaddoc.lsp сразу её вызвать (defun My_Fun() ...) (My_Fun) ?
еще проще и функцию не определять - сразу код и все отработает само. только как то все это неэлегантно... или несоблюдение стандартов если хотите. Так что я предпочитаю s::startup - и через много лет можно сообразить что в данной проге это автостарт

а для нашего конкретного случая - простая проверка, например на наличие специфических блоков в файле или еще как нибудь вполне достаточна чтобы избежать возможных проблем

собсна я и не обижаюсь - все что я хотел, так это показать самый примитивный, а значит легко и быстро реализуемый способ автозапуска lsp на чужой машине
Zouss вне форума  
 
Непрочитано 17.03.2006, 10:07
#137
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Насколько я знаю, применение S::Startup чревато некорректной работой AutoCAD - порядок вызова этой функции неопределен, и она может вызываться до момента загрузки всех необходимых модулей (lsp и arx) AutoCAD. Т.е. можно получить необъяснимый глюк нормально работающего кода.
Никто не мешает своему коду дать имя нечто типа
Код:
[Выделить все]
(defun zouss:loader())
либо
Код:
[Выделить все]
(defun zouss:starter())
В общем, на выбор. А в acaddoc.lsp уже вызывать именно это имя и именно тогда, когда это надо.
По крайней мере, я бы сделал так.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.03.2006, 11:19
#138
Zouss


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


все же продолжаю оставаться при своем мнении, и вот почему

порядок вызова s::startup как раз таки определен - она запустится при загрузке *.lsp, но после того как все (defun этого файла будут проинициализированы. то есть наш s::startup может пользовать любую функцию загружаемого *.lsp

предлагаемый вами вариант автозапуска при загрузке *.lsp заключается в том чтобы вынести например (zouss:starter) за пределы любой функции Но тогда, если (zouss:starter) использует какую либо другую функцию, то эта самая другая должна находиться в буквальном смысле выше описания нашего стартера, да и сам стартер должен быть описан выше первого вызова Вот откуда растут ноги необъяснимых глюков, чаще всего как раз для файлов типа acad.lsp и acaddoc.lsp где бывает много обращений к общим функциям

блин нагрузил че-то... в обчем уважаемые оппоненты, если что киньте в меня кодом, а уж я в него внесу ошибку...
Zouss вне форума  
 
Непрочитано 17.03.2006, 11:51
#139
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Zouss
Цитата:
Так что я предпочитаю s::startup - и через много лет можно сообразить что в данной проге это автостарт
Это понятно. Но. Если s::startup находится в копии acaddoc.lsp, то он будет выполнятся с открытием любого файла в данной сессии AutoCAD. По моему тоже не очень красиво. Можно конечно делать как вы предлагаете проверки, на наличие особого блока или к примеру записи в словаре... Однако куча acaddoc.lsp с прописанными s::startup мне абсолютно не нравятся

s::startup - действительно в некоторых случаях глючит, особенно при наличии приложений подгружающих *.arx по какой то своей логике.

Я вообще не пользуюсь ни acaddoc.lsp ни s::startup, пишу всё в соответствующие *.mnl. В данном случае это конечно не проходит т. к. речь идёт о передаче файлов вместе с лиспами.

В общем дело вкуса...

А в данном случае с распечаткой программировать ничего не надо. Просто надо поиметь *.dwt сделанные для распечатки из пространства листов на разные форматы для соответствующего плотера.
{Smirnoff} вне форума  
 
Автор темы   Непрочитано 17.03.2006, 20:36
#140
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


До сегодняшнего дня я мирился с тем, что формат А1 = 835*589. Но теперь я буду играть по своим правилам.

А теперь представьте себе как округлятся глаза у девочки, которая будет печатать мои чертежи точнее когда он напечатается сам без предупреждения...
mmax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Я начинаю заниматься программированием LISP (help)