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

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

Как сохранить гиперссылку при взрывании размера.

Ответ
Поиск в этой теме
Непрочитано 14.08.2009, 11:18 #1
Как сохранить гиперссылку при взрывании размера.
Neznayka
 
Регистрация: 24.03.2005
Сообщений: 320

Как сохранить гиперссылку при взрывании размера с гиперссылкой. Горю. насоздавал ссылок и теперь не знаю что делать. Сохранить надо на отрезке.
Просмотров: 2761
 
Непрочитано 14.08.2009, 14:06
#2
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


А если не взрывать?
Евгений А. вне форума  
 
Автор темы   Непрочитано 14.08.2009, 15:06
#3
Neznayka


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


Евгений А. а если б можно было не взрывать, то я бы не создавал тему.
Нет "извлечения данных" протяженность в размере, а в отрезке есть.
Neznayka вне форума  
 
Непрочитано 14.08.2009, 15:25
#4
Кулик Алексей aka kpblc
Moderator

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


А что, значение размера уже "не катит"?
P.S. Еще раз убеждаюсь в том, что зачастую надо рисовать собственный экспортер
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.08.2009, 23:57
#5
Neznayka


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


Кулик Алексей aka kpblc, я нарисовал кучу параллельных размеров,которые у меня на плане заменяют кабельную канализацию. К каждому размеру у меня гиперссылкой прикреплена различная инфа (материал, год, кол-во отв., литера). то удобно подвёл курсор к "размеру" и всплыла вся нужная иноформация. Но я то наивный предполагал, что при использовании команды ДАННЫЕИЗВЛ, можно будет вытянуть величину размера (т.е. протяженность канализации). однако этой возможности нет. Я нашел 2 выхода:
1. врукопашную вбить в гиперссылку протяженность или
2. взорвать размеры, ведь отрезок который образуется при расчленении размера пригоден для использования команды ДАННЫЕИЗВЛ, т.к. содержит параметр длина.
Итак, причём тут
Цитата:
значение размера уже "не катит"?
И что значит
Цитата:
рисовать собственный экспортер
Neznayka вне форума  
 
Непрочитано 15.08.2009, 16:33
#6
Кулик Алексей aka kpblc
Moderator

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


Ну, во-первых, я могу так настроить размерный стиль или проставить размеры, что длина размерной линии точно не будет равна значению размера.
Во-вторых, под "рисованием собственного экспортера" я понимал самостоятельно сделанный лисп, который вытащит данные которые надо и откуда надо.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.08.2009, 18:19
#7
Sleekka

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


Ну дык сделай сохранить как и взорви в другом файле, посчитаешь спецуху а в основном файле ниче не взрывай, а по поставленному вопросу - только прогу писать.
Sleekka вне форума  
 
Автор темы   Непрочитано 16.08.2009, 21:49
#8
Neznayka


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


Кулик Алексей aka kpblc я понимаю. что вы можете так настроить размеры, что мало не покажется
Но я то для себя размеры ставил, т.е. как надо.
Лисп - это понятно, им что угодно можно сделать хоть красную кнопку. Короче штатными средствами никак? а то надо находить дрессированную обезьяну, чтоб ~2000 размеров в гиперссылку загнать
Sleekka дык в том то и дело, что "спецуху" я смогу посчитать. когда загоню размеры в гиперссылку

,
Neznayka вне форума  
 
Непрочитано 17.08.2009, 05:03
#9
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,537
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А что, значение размера уже "не катит"?
К сожалению, значение не извлекается.

Neznayka, ищи обезьяну
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 17.08.2009, 14:47
#10
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,194


Neznayka, а что мешает использовать для извлечения данных Мтексты, содержащие инфу о значении размеров и образующиеся при их взрывании?
kp+ вне форума  
 
Непрочитано 17.08.2009, 15:48
#11
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,537
<phrase 1= Отправить сообщение для wetr с помощью Skype™


kp+, какая разница, мтекст или длина линии - гиперссылки, со всей инфой все равно пропадут после взрыва
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 17.08.2009, 16:22
#12
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(defun c:add-hyper-to-dim (/                         adoc                      *error*
                           selset                    _kpblc-hyperlink-add      _kpblc-hyperlink-get
                           _kpblc-conv-selset-to-ename                         _kpblc-conv-string-to-list
                           _kpblc-conv-value-to-string                         _kpblc-conv-list-to-string
                           hyp                       value
                           )

  (defun _kpblc-conv-value-to-string (value /)
                                     ;|
*    конвертация значения в строку.
|;
    (cond
      ((= (type value) 'str) value)
      ((= (type value) 'int) (itoa value))
      ((= (type value) 'real) (rtos value 2 14))
      ((not value) "")
      (t (vl-princ-to-string value))
      ) ;_ end of cond
    ) ;_ end of defun

  (defun _kpblc-conv-list-to-string (lst sep)
                                    ;|
*    Преобразование списка в строку
*    Параметры вызова:
	lst	обрабатываемй список
	sep	разделитель. nil -> " "
|;
    (setq lst (mapcar (function _kpblc-conv-value-to-string) lst)
          sep (if sep
                sep
                " "
                ) ;_ end of if
          ) ;_ end of setq
    (strcat (car lst)
            (apply (function strcat)
                   (mapcar
                     (function
                       (lambda (x)
                         (strcat sep x)
                         ) ;_ end of lambda
                       ) ;_ end of function
                     (cdr lst)
                     ) ;_ end of mapcar
                   ) ;_ end of apply
            ) ;_ end of strcat
    ) ;_ end of defun

  (defun _kpblc-conv-string-to-list (string separator / i)
                                    ;|
*    Функция разбора строки. Возвращает список либо точечную пару.
*    Параметры вызова:
*	string		разбираемая строка
*	separator	символ, используемый в качестве разделителя частей
*    Примеры вызова:
(_kpblc-conv-string-to-list "1;2;3;4;5;6" ";")	;'(1 2 3 4 5 6)
(_kpblc-conv-string-to-list "1;2" ";")		;'(1 2)
*    За основу взяты уроки Евгения Елпанова по рекурсиям
|;
    (cond
      ((= string "") nil)
      ((setq i (vl-string-search separator string))
       (cons (substr string 1 i)
             (_kpblc-conv-string-to-list
               (substr string (+ (strlen separator) 1 i))
               separator
               ) ;_ end of _kpblc-conv-string-to-list
             ) ;_ end of cons
       )
      (t (list string))
      ) ;_ end of cond
    ) ;_ end of defun

  (defun _kpblc-conv-selset-to-ename (selset / tab item)
                                     ;|
*    Преобразование набора, полученного через ssget, в список ename-представлени
* примитивов.
*    Параметры вызова:
	selset	набор примитивов
*    Примеры вызова:
(_kpblc-conv-selset-to-ename (ssget))
|;
    (cond
      ((not selset) nil)
      ((= (type selset) 'pickset)
       (repeat (setq tab  nil
                     item (sslength selset)
                     ) ;_ end setq
         (setq tab (cons (ssname selset (setq item (1- item))) tab))
         ) ;_ end repeat
       )
      ((listp selset) selset)
      ) ;_ end of cond
    ) ;_ end of defun

  (defun _kpblc-hyperlink-add (ent link show-text)
                              ;|
*    Дбавляет в примитив гиперссылку
*    Параметры вызова:
	ent				указатель на примитив (ename || vla-object)
	link			адрес ссылки (str)
	show-text	показываемый текст (str)
*    Возвращаемое значение:	нет1
|;
    (cond
      ((= (type ent) 'ename)
       (_kpblc-hyperlink-add (vlax-ename->vla-object ent) link show-text)
       )
      ((= (type ent) 'vla-object)
       (vlax-for item (vla-get-hyperlinks ent)
         (vl-catch-all-apply
           (function
             (lambda ()
               (vla-delete item)
               ) ;_ end of lambda
             ) ;_ end of function
           ) ;_ end of vl-catch-all-apply
         ) ;_ end of vlax-for
       (vla-add (vla-get-hyperlinks ent) link show-text)
       )
      ) ;_ end of cond
    ) ;_ end of defun

  (defun _kpblc-hyperlink-get (ent / hyp res)
                              ;|
*    Получение гиперссылки с примитива
*    Параметры вызова:
	ent		указатель на обрабатываемый примитив (ename || vla-object)
*    Возвращаемое значение: список вида
 '(("urldescription" . <Показываемый текст>)
   ("url" . "Адрес ссылки"))
|;
    (cond
      ((= (type ent) 'ename)
       (_kpblc-hyperlink-get (vlax-ename->vla-object ent))
       )
      ((= (type ent) 'vla-object)
       (if (> (vla-get-count (setq hyp (vla-get-hyperlinks ent))) 0)
         (progn
           (setq hyp (vla-item hyp 0))
           (foreach item '("url" "urldescription")
             (setq res (cons (cons item (vlax-get-property hyp item)) res))
             ) ;_ end of foreach
           ) ;_ end of progn
         ) ;_ end of if
       res
       )
      ) ;_ end of cond
    ) ;_ end of defun

  (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (= (type (setq selset (vl-catch-all-apply
                              (function
                                (lambda ()
                                  (ssget "_:L" '((0 . "DIM*")))
                                  ) ;_ end of lambda
                                ) ;_ end of function
                              ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         ) ;_ end of =
    (foreach ent (mapcar (function vlax-ename->vla-object) (_kpblc-conv-selset-to-ename selset))
      (setq hyp   (_kpblc-hyperlink-get ent)
            value (rtos
                    (if (member
                          (vla-get-textoverride ent)
                          '("" "<>")
                          ) ;_ end of member
                      (vla-get-measurement ent)
                      (vla-get-textoverride ent)
                      ) ;_ end of if
                    2
                    ) ;_ end of rtos
            ) ;_ end of setq
      (_kpblc-hyperlink-add
        ent
        (cond
          ((cdr (assoc "url" hyp)))
          (t "about:blank")
          ) ;_ end of cond
        (cond
          (hyp
           (strcat (_kpblc-conv-list-to-string
                     (vl-remove-if
                       '(lambda (x) (wcmatch x "Length: *"))
                       (_kpblc-conv-string-to-list (cdr (assoc "urldescription" hyp)) "\n")
                       ) ;_ end of vl-remove-if
                     "\n"
                     ) ;_ end of _kpblc-conv-list-to-string
                   "\nLength: "
                   value
                   ) ;_ end of strcat
           )
          (t (strcat "Length: " value))
          ) ;_ end of _kpblc-hyperlink-add
        ) ;_ end of if
      ) ;_ end of foreach
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Вроде пашет... На основе http://forum.dwg.ru/showthread.php?t=16066
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.08.2009, 16:11
#13
Neznayka


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


Вот спасибо, а я уже (благо в отпуске) тихой сапой начал набивать. Вы мне кучу времени сэкономили (жена рада
А какой строкой меняется префикс Length:
Neznayka вне форума  
 
Непрочитано 18.08.2009, 16:17
#14
Кулик Алексей aka kpblc
Moderator

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


Префикс необходим фактически только для одного - при повторном запуске надо как-то отфильтровывать уже внесенные данные. А так - найти в коде все вхождения "Length" и заменить на что-то иное, достаточно уникальное.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.08.2009, 21:50
#15
Neznayka


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


повторного запуска у меня не будет, все проблемы одним решу.
СПАСИБО!
Neznayka вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как сохранить гиперссылку при взрывании размера.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить данные в Block unit при вставке блока kavilter AutoCAD 11 29.06.2010 23:28
Сохранить как... rain_day AutoCAD 4 03.03.2009 08:16
Электромагнитная пушка T-Yoke Машиностроение 112 06.08.2008 18:48
Как сохранить без потерь все настройки в AutoCAD Red Nova AutoCAD 7 29.01.2008 11:57
Как сохранить dwg, как tif Елена AutoCAD 29 22.01.2008 19:50