|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
В какой текстовый редактор вставляете код для сохранения в lsp? Судя по проблемам с кодировкой, это скорее всего, Notepad++? Там надо в настройках выставить кодировку в ANSI или в Windows-1251. С Блокнотом такого быть не должно.
Что предпочтительней, чтобы или ? Цитата:
----- добавлено через ~6 мин. ----- Только сейчас увидел отдельную тему на этот счет. Согласен с тем, что ее бы в Программирование надо отнести, но проще было попросить модераторов перенести ее в тот раздел, а не создавать такую же, это, выходит, - нарушение правил форума. Думаю, стоит удалить ту, а эту перенести туда. ----- добавлено через ~7 мин. ----- "Та" - эта вот эта: Помогите допилить LISP собирающий Мтексты с листов в буфер обмена. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
baksconstructor, извлечение данных? Там же все тексты в основной надписи на одном слое, и я не нашел в них "изюминки", по которой можно было бы вычленить их из общей массы.
И еще вопрос: будет ли это быстрее для каждого чертежа, чем запустить лисп, предварительно создав блок, шаблон или что-то подобное, в котором нужные тексты будут с "изюминкой"? Даже учитывая то, что можно использовать извлечение данных по шаблону. |
|||
|
||||
вольный копейщик Регистрация: 03.11.2010
Сообщений: 132
|
Тут я в магазин ходил.
С темами - понял. Теперь по сути вопроса. Это не основная надпись - не штамп это, в блок это пихать не удобно. Решение с LISP-ом мне кажется оптимальным. Особенно, если потом его на кнопку повесить или на палитру. Проблемы создать под это дело отдельный слой вообще нет. И да, если удастся "добить тему", то сразу добавлю этот слой в свой шаблон. skkkk, чтобы понимал порядок - это было бы оптимально, нумерацию я сам потом сделаю в word. Просто про номера написал на случай, если это вдруг проще, чем с порядком задачу решить, тогда я бы их потом сортировал руками. Про переменные я уже сообразил последние два дня читаю книги по LISP. В новой теме как раз поправил себя, что это просто 3 переменные, без указания типа. Пытался в vlide отслеживать значения переменных - как-то не получается... у ss еще иногда пишет 160 или 190 значение (опять же не понимаю, что он там считает и в каких единицах - думал буквы поштучно - ни фига), а i и str всегда nil.. но гораздо чаще когда пытаюсь вставлять куски кода пишет в консоли "неверно сформированный список на входе". В общем путь "понять код по кусочкам" пока не проходит.. При том, что код целиком работает. Не до конца понимаю, можно ли как-то замедлить исполнение команды и в реальном времени видеть изменение значений переменных? Пробовал "точки останова" - но что-то не то, или опять же не так использую. В принципе теперь понял, что делают defun, setq, ssget, sslength. Правда у ssget адский синтаксис... просто жесть. Так и не понял, зачем там апостроф перед скобкой - `((0 . - точки еще эти через пробелы.. Видимо, это точечные пары. Что делает vl-load-com тоже понял. А вот как цикл с repeat работает и что там "записано" пока не догоняю. i там каждый раз уменьшается на 1, видимо при 0 цикл останавливается. Ssname видимо возвращает "внутреннее" имя конкретного Мтекста из ранее выделенного набора. Потом он видимо помещается в новую строку и так с каждым Мтекстом. Но это догадки, из кода я этого не могу понять Текст вставлял в обычный блокнот. Попробую в ++ с кодировкой поиграться. Спасибо! baksconstructor, нет, у меня другая задача - ровно такая как я описал и выглядит как в примере, который я приложил в начале. Еще раз повторюсь, речь не о не штампе. Это имя листа, но оно скажем так не полное, а в штампе выводится тоже + масштаб - туда как раз попадает через поля из этого Мтекста и ВЭ. Слои делаю какие хочу, для старых проектов такие списки уже составлены, соотв. просто пытаюсь оптимизировать процесс на будущее. В принципе сразу про это и писал. UPDATE С vlide более менее разобрался (спасает Полищук) перекодировал файл в ANSI (был в UTF-8) - теперь все отлично, русские слои понимает!!! УРА! Остался порядок Последний раз редактировалось Immortal_6666, 10.02.2017 в 18:57. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Код:
Сортирует строки в соответствии с порядком следования листов - не по номерам в именах листов. Кстати вспомнил, как-то делал прогу для автонумерации листов, думаю, при подобном подходе сгодится: Код:
|
|||
|
||||
вольный копейщик Регистрация: 03.11.2010
Сообщений: 132
|
skkkk, Спасибо огромное!!! Потестирую, отпишусь. Я уже и на кнопку смог подвесить загрузку лиспа и вызов команды - ^C^C(if (null C:_LISTIK)(load "listik"));_LISTIK;
Если теперь будет сортировать - вообще божественно! С нумерацией проблем не было, но все равно спасибо! Я просто листы по 1 создаю - заранее никогда не известно, сколько их в проекте будет. Местами тоже не так часто меняю. Но может и найду применение второму скрипту. UPDATE Попробовал - работает, собирает в список в правильном порядке! Собирает отлично! Единственное, что нашел - текст получается какой-то странный - его отказывается нумеровать и нумератор в автокаде, просто ставит цифру 1 и нумератор в word - тоже ставит просто 1, как-будто строки не разделены. Хотя там явно есть переход на след. строку.. какая-то странная особенность. Там даже по спец. символам в Ворде видно, что новая строка начинается не как "настоящая" новая строка, а как новая строка без разрыва - то, что делается по сочетанию клавиш SHIFT+ENTER. В общем какая-то пляска с последующей нумерацией. В остальном, ок. С кнопки запускать вообще шикарно! P.S. Есть какая-то команда, которую можно добавить в конце кода, чтобы он сразу содержимое Мтекста в буфер винды копировал? PPS. Напишите мне в личку какие-нибудь свои реквизиты (карту/номер телефона) - я хоть символическую благодарность Вам переведу, действительно очень помогли! Последний раз редактировалось Immortal_6666, 10.02.2017 в 19:54. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Проблема ясна, попробую разобраться.
Цитата:
----- добавлено через ~21 мин. ----- Код:
Код:
Последний раз редактировалось skkkk, 10.02.2017 в 22:32. |
|||
|
||||
вольный копейщик Регистрация: 03.11.2010
Сообщений: 132
|
Да, вставка в текущий документ по смыслу и не нужна. Нужно в буфер только, единственное, можно какое-то сообщение выводить, что команда успешно отработала, прямо в командной строке - глянул, увидел, что все ок. Но опять же, если это как-то очень заморочисто, то и не надо. То, что сейчас уже отлично. Я просто думал, что можно как-то "по-простому" зайти в этот подготовленный мтекст, взять его содержимое и что-то вроде ctrl+с сделать программно, потом текст стереть. Но по коду вижу, что там как-то сложно все выходит.
Второй вариант работает отлично! А первый, где через буфер выдает - ; ошибка: no function definition: COPYTOCLIPBOARD Последний раз редактировалось Immortal_6666, 10.02.2017 в 21:51. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Цитата:
Код:
Код:
Цитата:
Может, надо перезагрузить Автокад и заново загрузить код? Просто, возможно, как-то конфликтуют одна версия с другой. ----- добавлено через ~13 мин. ----- Или попробовать загрузить отдельно функцию Код:
----- добавлено через ~14 мин. ----- Сейчас есть возможность тестировать только на 2011 - там все работает. В более поздних версиях появились разные политики безопасности, с которыми я еще не очень знаком. |
|||
|
||||
вольный копейщик Регистрация: 03.11.2010
Сообщений: 132
|
Перезагрузил, пробовал в разных версиях 2014 и 2017 - та же ошибка. Пробовал и как текст в VLIDe копировать и как отдельный .lsp файл подгружать...
Насчет отдельно загрузить не понял... сделать отдельный LISP и ее потом вызывать? Не понял как это состыковать с основным кодом. Этот кусок сам по себе ошибок не выдает. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Да, под спойлером эта функция отдельно. Сохранить ее в отдельный файл и перед запуском TEST загрузить этот файл. Правда в этом случае ее лучше стереть из основного кода, дабы разных конфликтов не было. Я там еще подтёр разные ненужные вещи, которые гипотетически могут вызывать ошибки.
|
|||
|
||||
вольный копейщик Регистрация: 03.11.2010
Сообщений: 132
|
Цитата:
UPDATE Вроде разобрался. Сделал отдельный файл. В основном эту часть удалил. И вызываю все это дело таким скриптом ^C^C(if (null C:_COPYTOCLIPBOARD)(load "copytoclip.lsp"));(if (null C:_LISTIK)(load "listik.lsp"));_LISTIK Я заменил имя TEST на LISTIK. Все работает похоже. В модель не вставляется, в буфер копируется. Это просто отлично! Но я так и не нашел строку (copyToclipboard str) чтобы вставить оповещение =))) Последний раз редактировалось Immortal_6666, 10.02.2017 в 22:54. |
|||
|
||||
вольный копейщик Регистрация: 03.11.2010
Сообщений: 132
|
Все, нашел! Добавил! Я просто в конце кода почему-то искал.
Все супер теперь! Для меня это настолько "хаманство", что даже не верится! Спасибо еще раз! А Вы именно программист? Или пользователь автокада? Я конечно продолжу все это изучать, просто интересно, сколько лет надо потратить, чтобы так влёт решать подобные задачи? Я профессиональным программистом уже точно не стану, да и цели такой нет, но научиться писать подобные вещи для автоматизации рутины хотелось бы. Просто по одному направлению работа реально типовая, может еще что-то удастся формально описать и реализовать программно. Хотя на данный момент кажется, что автоматизировал все, что мог. Рутины все равно очень много но она уж больно вариативная. Если еще какие-то идеи будут, можно продолжить задавать вопросы в этой теме? Не в том смысле, чтобы рассчитывать на реализацию задачи, а чтобы описать ситуацию и хотя бы получить ответ в стиле "так сделать программно можно", "так сделать нельзя". П.С. Насчет благодарности я серьезно писал, так что надумаете - пишите в лс. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Когда-то также просто захотел упростить рутину и также пришел сюда за помощью. Не могу судить сам, что я должен из себя представлять, чтобы слыть программистом. Я бы сказал, что пока просто - программист-любитель, по большей части - пользователь. Для меня это пока больше хобби. Да и задачка Ваша - довольно плёвая. Тут есть мастодонты, которые бы при желании решили бы ее намного "влётнее" и красивее. В основном, для себя и довольно узкого круга моих коллег уже приходилось решать на порядок более сложные задачи, повысив в разы производительность. Доводилось участвовать и в более ли менее серьезных сторонних проектах.
Цитата:
Хочу сказать, что это все вполне реально - освоить для себя программирование, - и стоит того, особенно, если в удовольствие. Только, возможно, стоит подумать над выбором языка. Лисп - довольно прост в освоении, есть много готового на нем тут, и на других форумах, в том числе англоязычных, но возможности ограничены. Например, из лиспа не подобраться к подшивке, не получить красивых, продвинутых диалоговых окон, но основные задачи по черчению, решаемые в Автокаде, ему доступны, в том числе различные расчеты, да и вообще можно давать волю фантазии. Главное самому понимать и формулировать задачи. Как раз сейчас тут идет бурное обсуждение по поводу выбора языка, советую почитать прежде чем начинать "погружение" . |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Копирование, сортировка, переименование листов (layout) | VVA | Готовые программы | 96 | 08.12.2023 14:11 |
Печать в один PDF фаил нескольких листов | YuryKlimchuk | AutoCAD | 103 | 24.05.2018 20:47 |
Упорядочивание вкладок (листов) | Малюк | AutoCAD | 15 | 18.11.2015 17:03 |
Как собрать несколько DWF файлов в один | koks | AutoCAD | 7 | 24.06.2013 11:44 |
Как собрать несколько оформленных чертежей в один | E.D. | AutoCAD | 33 | 16.07.2009 09:42 |