|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Ну, как один из вариантов: http://autolisp.ru/2018/07/02/some-lsp-to-one/ И потом полученный lsp уже загружать.
Хотя я использую совершенно другой подход, прекрасно описанный в "САПР на базе AutoCAD" (книжка, к сожалению, уже не продается)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 13.04.2017
Сообщений: 134
|
Цитата:
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,002
|
|
|||
|
||||
Цитата:
В каждой программе, вернее в каждом lsp файле, одной из первой строк висит (if (null *sad_lib_isLoaded) (load "_sad-fun-lib.lsp")) И в конце библиотеки висит исполняемая строчка (setq *sad_lib_isLoaded t) Таким образом, имею проверку, загружен ли файл, и если нет, то он загружается...
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... Последний раз редактировалось Vladimir_Sergeevich, 11.07.2018 в 06:54. |
||||
|
||||
Регистрация: 26.08.2017
Сообщений: 43
|
Мне нужно сохранить текущий чертеж в трех разных типах (2013, 2010, 2007), добавить в конце имени год и вернуться на исходный путь файла, путем его перезаписи
Код:
Походу нужно добавить условие, но как его запихнуть в command функцию я не знаю |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,002
|
Сначала делаете три копии файла, а потом открываете и пересохраняете под нужной версией. А перед этим проверяете - есть ли уже данный файл и удаляете при необходимости. Это будет более надежно, имхо. Например, в .Net это все проще делается - просто делается временная копия БД и сохраняется под нужным именем и версией
Код:
|
|||
|
||||
|
||||
|
||||
Последний раз редактировалось koMon, 15.07.2018 в 21:45. |
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,002
|
Цитата:
Цитата:
|
|||
|
||||
не успел) но был не прав
|
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,002
|
т.е. получается так:
1. Формируются полные имена файлов для более младших версий. 2. Пробуются удалить с помощью vl-file-delete. Если произошла ошибка удаления - то работа лиспа прекращается. Но тут возникает вопрос - как различить успешное удаление существующего файла, отсутствие файла и отсутствие доступа к файлу (т.е. кто-то успел его открыть в акаде, например). В справке вопрос отсутствующего файла проигнорирован - что возвращает в этом случае) 3. Если файлы младших версий успешно удалены, то сохраняет в текущей версии и далее по нисходящей. 4. Открывается снова исходный файл, подавляя диалоговые окна при необходимости. И после этого закрывается файл самой младшей версии. А тут тоже новый вопрос - лисп работает ведь в контексте документа и при открытии нового чертежа прервется выполнение? |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
(vla-erase <vla-указатель на описание блока>)
Ну или (entdel <ename-указатель на описание блока>) Попробуй...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 21.03.2013
Самара
Сообщений: 29
|
(entdel <ename-указатель на описание блока>) возвращает nil, и описание остаётся в базе.
Это я пробовал первым делом. А по поводу (vla-erase <vla-указатель на описание блока>) в книге Полещука несколько запутано. Написано, что этот метод работает для графических примитивов включённых в набор. И приведён пример с некоторыми предварительными действиями: Цитата:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Тьфу, не vla-erase, а vla-delete!
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 21.03.2013
Самара
Сообщений: 29
|
Ну вот как-то так получается:
Цитата:
А, всё, нашёл решение. Спасибо за наводку. (vla-delete (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))) "proba")) http://www.cad.dp.ua/sovets/lisp-functions/purger.php Последний раз редактировалось T.Bagdat, 18.07.2018 в 12:36. |
|||
|
||||
Доброго.
Как разрешить ввод либо реального числа либо точки ? То есть совместить getpoint и getreal в одном? Пока смог только с промежуточным использованием клавиши enter, а хочется по человечески. Код:
__________________
Блог |
||||
|
||||
|
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |