URSA
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Команда LISP: Сохранить копию файла в папку

Команда LISP: Сохранить копию файла в папку

Ответ
Поиск в этой теме
Непрочитано 10.12.2021, 07:37 #1
Команда LISP: Сохранить копию файла в папку
МишаИнженер
 
Регистрация: 14.12.2008
Сообщений: 856

Помогите написать команду LISP: Сохранить копию файла в папку
Должно открывать диалоговое окно для сохранения КОПИИ файла чертежа в указанную пользователем папку
Просмотров: 1494
 
Непрочитано 10.12.2021, 07:46
#2
Кулик Алексей aka kpblc
Moderator

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


А где свой код?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.12.2021, 07:48
#3
GogMagog


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


Если файлы не пакетно надо сохранять, то может быть команда ПБЛОК или -ПБЛОК подойдет?
GogMagog вне форума  
 
Автор темы   Непрочитано 10.12.2021, 08:26
#4
МишаИнженер


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А где свой код?
Я в ЛИСПЕ не специалист
Цитата:
Сообщение от GogMagog Посмотреть сообщение
-ПБЛОК подойдет?
Да, спасибо! Эта команда подходит с "черточкой"
Надо только добавить подстановку текущего имени файла в диалоговое окно сохранения файла
Как это можно сделать? Может надо на ЛИСПЕ написать:
(setq FileName (getCurrentFileName))
(command -ПБЛОК FileName)
(princ (strCat "Сохранена копия файла: " FileName))
Надо только в этом коде исправить ошибки.
МишаИнженер вне форума  
 
Непрочитано 10.12.2021, 08:28
#5
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Я в ЛИСПЕ не специалист
Так, может, стоит обратиться в "Поиск исполнителей"? В этом разделе обычно помогают решить проблемы с кодом, а не пишут под чужие хотелки.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.12.2021, 08:47
#6
МишаИнженер


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


У меня не сильно сложная задача, чтобы привлекать разработчиков

Подскажите пожалуйста как пишется команда ЛИСП для получения имени файла текущего чертежа?
В моем коде команда getCurrentFileName почему-то не работает
МишаИнженер вне форума  
 
Непрочитано 10.12.2021, 08:53
1 | #7
Кулик Алексей aka kpblc
Moderator

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


Системные переменные dwgprefix, dwgname
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.12.2021, 08:56
1 | #8
GogMagog


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


я думаю, что getCurrentFileName это функция, которую надо самому написать. Попробуй:
Код:
[Выделить все]
 (vl-load-com)
(defun getCurrentFileName()
  (setq getcfn (vla-get-name (vla-get-activedocument(vlax-get-acad-object))))
  )
если полный путь надо vla-get-name замени на vla-get-fullname. в коде обязательно должна быть команда (vl-load-com)
GogMagog вне форума  
 
Автор темы   Непрочитано 10.12.2021, 09:15
#9
МишаИнженер


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


Мне вроде все немного понятно, а что такое (vl-load-com)?
Команда (setq getcfn (vla-get-name (vla-get-activedocument(vlax-get-acad-object))))
выдает только имя файла, а как получить путь файла или полное имя файла?

----- добавлено через ~24 мин. -----
Следующий код:
Код:
[Выделить все]
 (setq FileName (strCat (getvar "dwgprefix") (getvar "dwgname")))
(command "-ПБЛОК" FileName)
Не открывает диалоговое окно (хотя FILEDIA=1) а предлагает перезаписать текущий файл.
Как мне открыть диалоговое окно записи файла на ЛИСП?

----- добавлено через ~4 ч. -----
Неплохо работает код открытия диалогового окна:
Код:
[Выделить все]
 (setq FileName (strCat (getvar "dwgprefix") (getvar "dwgname")))
(getfiled "Выбери файл" FileName "dwg" 0)
Где можно посмотреть параметры вызова функции getfiled?
МишаИнженер вне форума  
 
Непрочитано 10.12.2021, 14:13
#10
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 255


Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Где можно посмотреть параметры вызова функции getfiled?
Да прямо в Автокаде и смотри.
F1 - и вперед.
Это на случай, если в Гугле забанили...
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 10.12.2021, 15:08
#11
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,348


Код:
[Выделить все]
 
(vla-get-path 
	(vlax-get-property 
		(vlax-invoke-method 
			(vla-getinterfaceobject (vlax-get-acad-object) "shell.application") 
			'browseforfolder 
			0 
			"Выберите папку для сохранения копии" 
			528 
			"shell:mycomputerfolder"
		) 
		'Self
	)
)

Последний раз редактировалось koMon, 10.12.2021 в 15:29.
koMon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Команда LISP: Сохранить копию файла в папку

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли написать LISP для сохранения выбранных файлов dwg в заранее заданную папку под тем же именем и с внедрением всех внешних ссылок, которые в них есть? Ojster LISP 2 10.01.2020 15:52
LISP. Нормализация блоков текущего файла. Кулик Алексей aka kpblc Готовые программы 82 06.07.2016 20:38
LISP Чтение из txt файла и конвертация в list sanok7 LISP 0 09.06.2016 16:58
Lisp. Как создать при помощи кода, два файла связанных ссылками Yura Agafonov LISP 11 13.11.2012 11:03
LISP. Как сохранить имя примитива при смене сеанса AutoCADa Main Urod LISP 3 14.01.2011 10:56