Алексей, добрый день.
Снова нужна твоя небольшая помощь.
Всё-таки я решил добавить реактор на присоединение ссылок для очистки от масштабов и приложений.
В принципе я написал его самостоятельно, он рабочий, но есть одна небольшая засада.
Иногда при вставке ссылки обнаруживаются циклические ссылки, и автокад выдаёт запрос в командной строке "Обнаружены циклические ссылки. Продолжить?".
Если нужно почистить масштабы командой (vla-sendcommand (vla-get-activedocument(vlax-get-acad-object)) (strcat "_-scalelistedit _d" "\r" "*" "\r" "_e" "\r")), то акад пытается ответить на запрос строками из этой команды. Вариант решения - добавить в функцию обработки реактора команду (vla-sendcommand (vla-get-activedocument(vlax-get-acad-object)) (strcat "_y" "\r")). Это работает, но при отсутствии запроса акад соответственно пишет: Неизвестная команда "Y". Не критично, но не очень красиво.
(vl-load-com)
(if adn-vlr-xref (progn (vlr-remove adn-vlr-xref) (setq adn-vlr-xref nil)))
(if (not adn-vlr-xref) (setq adn-vlf-xref (vlr-xref-reactor nil '((:vlr-endAttach . adn-vlr-xref-end)))))
(defun adn-vlr-xref-end (_r data / )
(vla-sendcommand (vla-get-activedocument(vlax-get-acad-object)) (strcat "_y" "\r"))
(setq ra (vla-get-count (vla-get-registeredapplications (vla-get-activedocument (vlax-get-acad-object)))))
(if (> ra ra_crit) (vla-sendcommand (vla-get-activedocument(vlax-get-acad-object)) (strcat "_.-purge _r" "\r" "*" "\r" "_n" "\r")))
(setq sc (check-dict nil "ACAD_SCALELIST"))
(if (> sc sc_crit) (vla-sendcommand (vla-get-activedocument(vlax-get-acad-object)) (strcat "_-scalelistedit _d" "\r" "*" "\r" "_e" "\r")))
)
Есть ли возможность отключить запрос на загрузку циклических ссылок (чтобы по-умолчанию было всегда "Да")? Лиспом, как я понимаю, отловить появление этого запроса не получится, ибо запрос появляется после окончания функции обработки реактора. Или я ошибаюсь?
В инете долго рылся, ничего адекватного не нашёл. В общем если будет время, ответь, пожалуйста