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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Работа с Hyperlink

Работа с Hyperlink

Ответ
Поиск в этой теме
Непрочитано 20.12.2007, 19:22 #1
Работа с Hyperlink
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

1. Можно ли убрать во всплывающем сообщении строчку "CTRL + click to follow link"?
2. Как прописать автоматически во все внешние ссылки имя внешней ссылки в Hyperlink?
3. Как очистить все Hyperlink-и внених ссылок или блоков?

Может макрос у кого-нибудь есть?
Просмотров: 10438
 
Непрочитано 21.12.2007, 09:49
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


1. _HYPERLINKOPTIONS (ГИПЕРСВОЙСТВА)
2. ?
3.
Код:
[Выделить все]
; Ф-ция mip-put-hyperlink
; Возвращает nil.
; Arguments [Type]:
;   Ename = Object [ENAME]
;  URLDescription = Строка [STR]
(DEFUN mip-put-hyperlink ( ENAME URLDescription )
 (if (eq (type ENAME) 'ENAME)(setq ENAME (vlax-ename->vla-object ENAME)))
  (vlax-for hyp (vla-get-hyperlinks ENAME)(vla-delete hyp))
  (vla-add (vla-get-hyperlinks ENAME) "about:blank" URLDescription))
;;;Функция удаляет гиперссылки у объекта
;;; Аргумент
;;;ENAME - ename or vla object
(defun mip-del-hyperlink (ENAME)
  (if (eq (type ENAME) 'ENAME)
    (setq ENAME (vlax-ename->vla-object ENAME))
  ) ;_ end of if
  (vlax-for hyp (vla-get-hyperlinks ENAME) (vla-delete hyp))
) ;_ end of DEFUN
;|=============== Команда HYPD ======================
Удаляет гиперссылки у всех выбранных примитивах
Включенеи/отключение показа гиперссылок см. команды
_HYPERLINKOPTIONS (ГИПЕРСВОЙСТВА)
====================================================|;
(defun C:HYPD ( / sset i)(vl-load-com)(setq i 0)  
(if (setq sset (ssget "_:L"))
 (foreach item (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex sset)))) 
   (mip-del-hyperlink item)(setq i (1+ i))))
(princ "\nОбработано ")(princ i)(princ " объектов")(princ))
;|=============== Команда HYP ================================================
Заносит введенное описание объекта всем выбранным примитивам как гиперссылку
Включенеи/отключение показа гиперссылок см. команды
_HYPERLINKOPTIONS (ГИПЕРСВОЙСТВА)|;
(defun C:HYP ( / sset hyptxt)(vl-load-com)  
(setq hyptxt (getstring t "\nОписание объекта <выход>: "))
(setq hyptxt (VL-STRING-TRIM " " hyptxt))
(if (and (/= hyptxt "")(setq sset (ssget "_:L")))
 (foreach item (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex sset)))) 
   (mip-put-hyperlink item hyptxt)))(princ))
Для внешних ссылок и блоков команда может быть такой
Код:
[Выделить все]
(defun C:HYPD_BLK ( / sset i)(vl-load-com)(setq i 0)  
(if (setq sset (ssget "_:L" '((0 . "INSERT"))))
 (foreach item (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex sset)))) 
   (mip-del-hyperlink item)(setq i (1+ i))))
(princ "\nОбработано ")(princ i)(princ " блоков и вн. ссылок")(princ))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 21.12.2007, 21:04
#3
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Команда Hyperlinkoptions может вообще убрать показ Hyperlink, а речь идет только о второй строке, то есть подсказке, на что надо нажать, чтобы ссылка открылась. Этой строки в старых автокадах не было
Vova вне форума  
 
Автор темы   Непрочитано 21.12.2007, 21:15
#4
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Спасибо VVA за попытку мне помочь, но то, что ты дал не решает то, о чем я писал.
Стирает - да, записывает то, что ты набъеш в строке - да, а вот имя, присвоенное внешней ссылке, точнее не имя, а имя самого файла внешней ссылки не прописывает. И эту ерунду, с Ctrl тоже не сносит.
Supermax вне форума  
 
Непрочитано 22.12.2007, 10:39
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
И эту ерунду, с Ctrl тоже не сносит
Как это снести я тоже не знаю
Цитата:
да, а вот имя, присвоенное внешней ссылке, точнее не имя, а имя самого файла внешней ссылки не прописывает.
Короче так:
Код ниже записывает в гиперссылку в имя - имя вн. ссылки, в путь - путь к вн. ссылки. По "ерунде с Ctrl" можно открыть этот файл.
Код:
[Выделить все]
;;;Обрабатывает внешние ссылки, расположенные на незаблокированных слоях
;;;Прописывает в Hyperlink выбранных внешних ссылок в поле пояснение - имя внешней ссылки
;;;                                                 в поле путь - путь к файлу внешней ссылки
;;;                                                (можно открыть по Ctrl)
(defun C:HYPXREF ( / sset i)(vl-load-com)(setq i 0)  
(if (setq sset (ssget "_:L" '((0 . "INSERT"))))
 (foreach item (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex sset))))
   (if (vlax-property-available-p item "Path")
     (progn
       ;;;Удаляем гиперссылки
       (vlax-for hyp (vla-get-hyperlinks item)(vla-delete hyp))
       ;;;Прописываем Hyperlink             Путь вн ссылки     Имя вн ссылки
       (vla-add (vla-get-hyperlinks item) (vla-get-Path item)(vla-get-Name item))
       (setq i (1+ i))
       )
     )
   )
  )
(princ "\nОбработано ")(princ i)
(princ " вн. ссылок")(princ)
)
Если надо, чтобы в имя ссылки писался полный путь к файлу и работал Ctrl, то строчку
(vla-add (vla-get-hyperlinks item) (vla-get-Path item)(vla-get-Name item))
заменить на
*** Изменено (vla-add (vla-get-hyperlinks item) (vla-get-Path item)(vla-get-Path item))
Если надо, чтобы в имя ссылки писался полный путь к файлу, и не работал Ctrl, то строчку
(vla-add (vla-get-hyperlinks item) (vla-get-Path item)(vla-get-Name item))
заменить на
*** Изменено (vla-add (vla-get-hyperlinks item) "about:blank" (vla-get-Path item))
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 22.12.2007 в 15:09. Причина: Перепутал vla-get-Name с vla-get-path
VVA вне форума  
 
Автор темы   Непрочитано 22.12.2007, 13:50
#6
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


VVA акбар!

Проверю, обязательно сейчас проверю.
Supermax вне форума  
 
Непрочитано 22.12.2007, 15:14
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Я там перепутал vla-get-Path и vla-get-Name
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 22.12.2007, 16:03
#8
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Все работает! СПАСИБО!
Supermax вне форума  
 
Автор темы   Непрочитано 22.12.2007, 16:06
#9
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


А можно ли сделать тоже самое, только всем ссылкам, без выделения объектов, включая и те, что Unload числятся? Ведь в модели они уже прописаны.
Supermax вне форума  
 
Непрочитано 22.12.2007, 16:18
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Код:
[Выделить все]
;;;Обрабатывает внешние ссылки, расположенные на незаблокированных слоях
;;;Прописывает в Hyperlink выбранных внешних ссылок в поле пояснение - имя внешней ссылки
;;;                                                 в поле путь - путь к файлу внешней ссылки
;;;                                                (можно открыть по Ctrl)
(defun C:HYPXREF1 ( / sset i)(vl-load-com)(setq i 0)
(vl-load-com)  
(if (setq sset (ssget "_X" '((0 . "INSERT"))))
 (foreach item (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex sset))))
   (if (and (vlax-write-enabled-p item)
           (vlax-property-available-p item "Path")
            )
     (progn
       ;;;Удаляем гиперссылки
       (vlax-for hyp (vla-get-hyperlinks item)(vla-delete hyp))
       ;;;Прописываем Hyperlink             Путь вн ссылки     Имя вн ссылки
       (vla-add (vla-get-hyperlinks item) (vla-get-Path item)(vla-get-Name item))
       (setq i (1+ i))
       )
     )
   )
  )
(princ "\nОбработано ")(princ i)
  )
С учетом пояснений #5
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 22.12.2007, 21:00
#11
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Сработало, только в конце выдало:
Command: (C:HYPXREF1)
Обработано 235235
Command:
Dimension disassociated.
HYPERLINK
Select objects:

Я естественно просто ентер надавил и ничего выделять не стал. а 235235 - это не я написал, а столько у меня в модели блоков и числится (пока).
Supermax вне форума  
 
Непрочитано 26.11.2008, 09:00
#12
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Нужна функция которая считывает данные с гиперссылки, всем заранее благодарен.
Holon вне форума  
 
Непрочитано 26.11.2008, 12:11
#13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Holon,
Код:
[Выделить все]
;;; Функция возвращает значение гиперссылки у объекта ввиде списка
;;; (Url URLDescription URLNamedLocation)
;;; Аргумент
;;;ENAME - ename or vla object
(defun mip-get-hyperlink (ENAME / ret)
  (if (eq (type ENAME) 'ENAME)
    (setq ENAME (vlax-ename->vla-object ENAME))
  ) ;_ end of if
  (vlax-for hyp (vla-get-hyperlinks ENAME)
    (setq ret (cons (list
                      (vla-get-url hyp)
                      (vla-get-URLDescription hyp)
                      (vla-get-URLNamedLocation hyp)
                      )
                    ret
                    )
          )
    )
  (car(reverse ret))
) ;_ end of DEFUN
Пример
Код:
[Выделить все]
(defun C:TEST ( / e1)
  (terpri)
  (if (setq e1 (car(entsel)))
    (princ (mip-get-hyperlink e1))
    )
  (princ)
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.12.2008, 17:14
#14
alextv


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


Подскажите, а возможно ли считать только часть гиперссылки?
alextv вне форума  
 
Автор темы   Непрочитано 05.12.2008, 17:57
#15
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Это как? Сделать гиперссылку только на несколько элементов в другом файле?
Supermax вне форума  
 
Непрочитано 05.12.2008, 18:39
#16
alextv


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


Нет,может я что-то недопонял в #13 , однако я имею ввиду след.:
есть блок с гиперссылкой-кратким описанием блока.
Мне надо записать только часть гиперссылки, предположим, в Excel.
alextv вне форума  
 
Непрочитано 05.12.2008, 20:38
#17
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Нет нельзя - можно считать все а потом обрезать.
Sleekka вне форума  
 
Автор темы   Непрочитано 05.12.2008, 22:05
#18
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Sleekka, alextv надо часть ссылки записать в Эксель, а как - какое имеет значение? Резать, не резать - главное записать часть.
alextv, все можно.
Supermax вне форума  
 
Непрочитано 05.12.2008, 22:17
#19
alextv


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


Supermax,
Подскажи как, очень уж надо!!!
alextv вне форума  
 
Автор темы   Непрочитано 05.12.2008, 23:29
#20
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Что как? Ты сказал что ты хочешь обрезать? - Нет. И что я тебе должен подсказать? Я даже все за тебя сделать не могу, поскольку не знаю ЧТО делать. Ты обрисуй подробно ситуацию, мы поиздеваемся чуток, а потом сжалимся и поможем.
Supermax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Работа с Hyperlink



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Акад2008. Странная работа окна "Свойства". kkiak AutoCAD 11 12.11.2007 17:06
Работа в испании ASLYS Профессии и трудовые отношения 12 21.10.2007 17:04
Сколько может стоить геодезическая работа в РБ bobis Разное 1 09.09.2007 16:22
Работа профнастила MegaPascal Прочее. Архитектура и строительство 8 12.07.2007 18:43