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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Работает ли vla-get-FileDependencies с файлами открытыми через ODBX?

LISP. Работает ли vla-get-FileDependencies с файлами открытыми через ODBX?

Ответ
Поиск в этой теме
Непрочитано 11.10.2015, 14:07 #1
LISP. Работает ли vla-get-FileDependencies с файлами открытыми через ODBX?
WhiteShark
 
Регистрация: 30.03.2012
Сообщений: 101

Вопрос в сабже.
vla-get-FileDependencies нормально пашет с текущим файлом, но вот с открытыми через интерфейс ODBX возвращает пустую коллекцию
Помогите кто нибудь подтвердить\опровергнуть.

Пример для облегчения набора букаф


(vlax-for item
(vla-get-FileDependencies
*doc*
)
(if (= (vla-get-Feature item) "Acad:XRef")
(princ (strcat (vla-get-FullFileName item) "\n"))
)
)
Просмотров: 2278
 
Непрочитано 12.10.2015, 00:34
#2
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


а что дает vlax-dump-object?
roaa вне форума  
 
Непрочитано 12.10.2015, 08:52
#3
Лиспер


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


А расскажите сирому, что это вообще такое? Откуда берется, где назначается? Ну так, руками чтоб можно было посмотреть
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 12.10.2015, 09:24
#4
WhiteShark


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


vlax-dump-object естественно даёт примерно такое

; IAcadFileDependencies: Интерфейс IAcadFileDependencies
; Property values:
; Application (RO) = Exception occurred
; Count (RO) = 0
; Methods supported:
; CreateEntry (4)
; IndexOf (2)
; Item (1)
; RemoveEntry (2)
; UpdateEntry (1)
WhiteShark вне форума  
 
Непрочитано 12.10.2015, 11:16
#5
frostmourn


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


WhiteShark, подтверждаю такое поведение. Сдаётся мне, это из той же оперы, что и невозможность доступа через ODBX к системным переменным...
frostmourn вне форума  
 
Непрочитано 12.10.2015, 11:18
#6
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от frostmourn Посмотреть сообщение
невозможность доступа через ODBX к системным переменным
Доступ существует. Решение показывали.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.10.2015, 11:29
#7
WhiteShark


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


А по поводу сабжа что скажешь, Алексей? Есть какое то решение?
frostmourn спасибо!
WhiteShark вне форума  
 
Непрочитано 12.10.2015, 11:45
#8
Кулик Алексей aka kpblc
Moderator

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


Я точно так же, как и Лиспер, не знаю - что такое FileDepedencies, где и зачем оно используется. Не сталкивался.
Поэтому создать файл с такими зависимостями я не могу и получить ненулевую коллекцию даже в текущем документе не получится.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.10.2015, 11:54
#9
WhiteShark


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


Посмотрите с Лиспером вот эту тему http://forum.dwg.ru/showthread.php?t=58225
Задача стоит через ODBX получить список загруженных внешних ссылок для папки с файлами
WhiteShark вне форума  
 
Непрочитано 12.10.2015, 18:06
#10
Кулик Алексей aka kpblc
Moderator

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


Даже если не работает - можно найти обходной путь. Пройтись по всем описаниям блоков в файле, и исключить те, у которых vla-get-isxref равно :vlax-false. Делов-то...

----- добавлено через ~2 мин. -----
Что-то типа такого:
Код:
[Выделить все]
 (vl-load-com)

(defun get-all-xref (doc / res)
  (if (not doc)
    (setq res (get-all-xref (vla-get-activedocument (vlax-get-acad-object))))
    (progn
      (vlax-for blk_def (vla-get-blocks doc)
        (if (equal (vla-get-isxref blk_def) :vlax-true)
          (setq res (cons blk_def res))
          ) ;_ end of if
        ) ;_ end of vlax-for
      res
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.10.2015, 21:34
#11
WhiteShark


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


Не совсем ты понял, Алексей. Не просто список хрефов, а список загруженных ссылок. То есть определить статус "Loaded\Unloaded". Да еще и "Overlay\Attachment". Да еще и через ODBX. Для обычно открытого файла решения известны. Для "косвенно" открытых пока не было.
WhiteShark вне форума  
 
Непрочитано 12.10.2015, 23:22
#12
Кулик Алексей aka kpblc
Moderator

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


Н-да, похоже, что никак. Поигрался - эффект нулевой (я говорю про лисп, если что )
Единственный вариант, который я вижу, занимает уйму времени и сил (получить перечень ссылок, пройтись по всем объектам всех блоков, получить вхождения этих ссылок; потом то же самое повторять для каждой ссылки... Удовольствие ниже среднего). У меня сейчас фантазии не хватает, чтобы придумать внятное решение. Сорри ;(
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.10.2015, 23:38
#13
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от WhiteShark Посмотреть сообщение
LISP. Работает ли vla-get-FileDependencies с файлами открытыми через ODBX?
на Autodesk Map 2005 работает
Vov.Ka вне форума  
 
Автор темы   Непрочитано 13.10.2015, 09:10
#14
WhiteShark


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


Vov.Ka спасибо ) Но такой раритет всем ставить не вариант ))

Решение нашёл. Недокументированное правда.. но как говорится раз гора не идёт к Магомеду..
WhiteShark вне форума  
 
Непрочитано 13.10.2015, 09:22
#15
Кулик Алексей aka kpblc
Moderator

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


А конкретнее? Ну интересно же
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.10.2015, 11:00
#16
WhiteShark


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


Ну раз Уважаемый просит.. ))

Код:
[Выделить все]
 
;;; xRefs state definition ODBX routine by WhiteShark (c) 2015
;;; *fhnd* - global output file descriptor 

(defun WS-xRefsList (*doc* / blks xRefBit blkdata State)
  (vl-load-com)
  (and
    *doc*
    *fhnd*
    (setq blks (vla-get-Blocks *doc*))
    (vlax-for item blks
      (if (eq (vla-get-IsXref item) :vlax-true)
	(progn
	  (if (= (logand
                  (setq xRefBit (cdr (assoc 70 (setq blkdata (entget (cdr (assoc 360 (entget (vlax-vla-object->ename item)))))))))
                  4)                  
                4)
	    (setq State (strcat
			  (if (= (logand xRefBit 8) 8)
			    "Overlay"
			    "Attachment"
			    )
			  (chr 9)
			  (if (assoc 71 blkdata) ; недокументированно. logand на 32 для xRefBit не прокатывает
			    "UnLoaded"
			    "Loaded"
			    )
			  )
		  )
	    )
	  (write-line (strcat (vl-filename-base (vla-get-name *doc*)) (chr 9) (vla-get-path item) (chr 9) State) *fhnd*)
	  )
	)
      )
    )
  )
WhiteShark вне форума  
 
Непрочитано 13.10.2015, 21:44
#17
Кулик Алексей aka kpblc
Moderator

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


После того, как у меня подобные преобразования vla-указателя на объект внешней ссылки в ename-представление привели сначала "не к тому" указателю, а потом и к краху AutoCAD, я стараюсь подобное не делать Возможно, это был единичный случай - но испуга хватило ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.10.2015, 09:07
#18
WhiteShark


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


Offtop: У меня такого не было вот я и не боюсь )) Как то выкручиваться же надо, если функции которые работать должны не работают нормально
WhiteShark вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Работает ли vla-get-FileDependencies с файлами открытыми через ODBX?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает lisp на autocad 2014. Lisp предназначен для изменения порядкового номера листа vladykinalex LISP 28 14.07.2023 19:27
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19
Как народ работает с длинными LISP файлами? {Smirnoff} LISP 7 22.01.2004 13:47