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

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

Как получить список открытых в текущем сеансе файлов и перейти в один из них?

Ответ
Поиск в этой теме
Непрочитано 18.09.2018, 15:09
Как получить список открытых в текущем сеансе файлов и перейти в один из них?
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 470

Всем добрый день.

Есть сеанс Автокада, в котором открыто несколько файлов. Пусть это будут:

Файл-1.dwg
Файл-2.dwg
Файл-44.dwg
Файл-ABC.dwg

И мы находимся (т.е. он "текущий") в одном из них. Скажем, в Файл-44.dwg.

Нужно - на LISP'е - получить список этих файлов в виде

("Файл-1.dwg" "Файл-2.dwg" "Файл-44.dwg" "Файл-ABC.dwg")

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

(setq spisok (vla-get-documents (vlax-get-acad-object)))

а вот дальше что?
__________________
Счастливо, Алексей!
Просмотров: 5172
 
Непрочитано 03.10.2019, 11:10
1 | 1 #21
Кулик Алексей aka kpblc
Moderator

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


Нечто типа (пишу с телефона!):
(vlax-for doc (vla-get-documents (vlax-get-acad-object))
(princ (strcat "\n" (vl-filename doc))))
Код естественно не проверял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.10.2019, 12:24
#22
===AAA===


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


Да мне и надо-то "нечто типа" vl-filename, только работающее не с текстовым полем,
а с коллекцией (точнее, элементом коллекции). Что это за функция то?

Тут даже можно пойти путём

(vlax-map-collection (vla-get-documents (vlax-get-acad-object)) 'функция)

осталось только выдрать путь+имя из имеющихся в семействе объектов типа:

#<VLA-OBJECT IAcadDocument 000002b03947ad58>

Чем?
__________________
Счастливо, Алексей!

Последний раз редактировалось ===AAA===, 03.10.2019 в 12:34. Причина: Добавил
===AAA=== вне форума  
 
Непрочитано 03.10.2019, 12:47
1 | 1 #23
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
осталось только выдрать путь+имя из имеющихся в семействе объектов типа:

#<VLA-OBJECT IAcadDocument 000002b03947ad58>

Чем?
vla-get-Path
vla-get-Name
vla-get-FullName
vlax-dump-object в помощь...
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 04.10.2019, 11:17
1 | 1 #24
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Да мне и надо-то "нечто типа" vl-filename, только работающее не с текстовым полем,
а с коллекцией (точнее, элементом коллекции). Что это за функция то?

Тут даже можно пойти путём

(vlax-map-collection (vla-get-documents (vlax-get-acad-object)) 'функция)

осталось только выдрать путь+имя из имеющихся в семействе объектов типа:

#<VLA-OBJECT IAcadDocument 000002b03947ad58>

Чем?
vlax-dump-object
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.11.2019, 17:08
#25
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


Привет.
Как-то так на скорую руку.
Код:
[Выделить все]
 
(defun listdoc (/ doccol)
  (setq doccol (vla-get-documents (vlax-get-acad-object)))

  (fulldoc doccol
	   (1- (vla-get-count doccol))
  )
)


(defun fulldoc (dcol rep)
  (if (>= rep 0)
    (cons (vla-get-fullname (vla-item dcol rep))
	  (fulldoc dcol (1- rep))
    )

  )
)
Эдуард вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как получить список открытых в текущем сеансе файлов и перейти в один из них?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разбить один файл dwg с множеством блоков на множество файлов dwg с одним блоком? petia AutoCAD 8 26.06.2018 12:19
Получить список доступных принтеров с помощью словарей zenija2007 LISP 2 02.06.2016 15:50
LISP. Список файлов в каталоге и подкаталогах WhiteShark Готовые программы 4 29.03.2015 21:51
Ограничение на кол-во открываемых за один раз файлов в AutoCad Sharnir AutoCAD 5 09.03.2015 09:50
Как получить Список файлов в директории (поддиректорий) VBA sf Программирование 2 17.12.2010 12:06