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

Вернуться   Форум 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"))
)
)
Просмотров: 2280
 
Непрочитано 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,844


Цитата:
Сообщение от 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,844


Я точно так же, как и Лиспер, не знаю - что такое 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,844


Даже если не работает - можно найти обходной путь. Пройтись по всем описаниям блоков в файле, и исключить те, у которых 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,844


Н-да, похоже, что никак. Поигрался - эффект нулевой (я говорю про лисп, если что )
Единственный вариант, который я вижу, занимает уйму времени и сил (получить перечень ссылок, пройтись по всем объектам всех блоков, получить вхождения этих ссылок; потом то же самое повторять для каждой ссылки... Удовольствие ниже среднего). У меня сейчас фантазии не хватает, чтобы придумать внятное решение. Сорри ;(
__________________
Моя библиотека 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,844


А конкретнее? Ну интересно же
__________________
Моя библиотека 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,844


После того, как у меня подобные преобразования 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