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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > аналог temp := polyline.hyperlink

аналог temp := polyline.hyperlink

Ответ
Поиск в этой теме
Непрочитано 20.01.2010, 21:43 #1
аналог temp := polyline.hyperlink
Дмитрий Брайт
 
инженер КИПиА
 
Регистрация: 12.09.2009
Сообщений: 63

Как на лиспе записать в переменную значение параметра полилинии?

Если конкретно, интересует hyperlink, т.к. это поле я использую для хранения информации (позиция кабеля).
С помощью ssget я получаю (выбор осуществляется вручную) список полилиний (POLYLINE), а затем мне нужно получить список того, что находится в свойстве hyperlink.
Просмотров: 2883
 
Непрочитано 20.01.2010, 21:45
#2
Кулик Алексей aka kpblc
Moderator

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


Объекты имеют свойство-коллекцию Hyperlinks. Проверяй количество элементов этой коллекции и проходи по ним, делов-то
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.01.2010, 21:53
#3
Дмитрий Брайт

инженер КИПиА
 
Регистрация: 12.09.2009
Сообщений: 63


Это-то я понял. По-идее нужно пройти циклом по списку.
Но я так и не понял что писать в:
(setq temp ... ) ;здесь по-идее должно быть присвоение переменной temp значения hyperlink текущей полилинии - вот как это сделать я не понял.

Про тип POLYLINE в учебнике как-то мутно написано
Дмитрий Брайт вне форума  
 
Непрочитано 20.01.2010, 22:07
#4
Кулик Алексей aka kpblc
Moderator

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


Вообще-то никакой принципиальной разницы нет - полилиния там, не полилиния... Легкая она или 3D. Хоть что
Код:
[Выделить все]
(vl-load-com)

(defun _dwgru-get-hyperlinks (ent / res)
                             ;|
*    Получение массива гиперссылок для указанного объекта
*    Параметры вызова:
	ent		указатель на обрабатываемый объект. Допускается ename или vla-
				тип
*    Примеры вызова:
(_dwgru-get-hyperlinks (car (entsel)))
	; '(
	;   (("url" . "http://www.dwg.ru")
	;    ("urldescription" . "Сайт dwg.ru")
	;    ("urlnamedlocation" . "")))
|;
  (if (and ent
           (cond
             ((= (type ent) 'vla-object) ent)
             ((= (type ent) 'ename)
              (setq ent (vlax-ename->vla-object ent))
              )
             (t nil)
             ) ;_ end of cond
           (vlax-property-available-p ent 'hyperlinks)
           ) ;_ end of and
    (setq res
           (mapcar
             (function
               (lambda (x)
                 (mapcar
                   (function
                     (lambda (prop)
                       (cons (strcase prop t) (vlax-get-property x prop))
                       ) ;_ end of lambda
                     ) ;_ end of function
                   '("url" "urldescription" "urlnamedlocation")
                   ) ;_ end of mapcar
                 ) ;_ end of lambda
               ) ;_ end of function
             ((lambda (/ lst)
                (vlax-for link (vla-get-hyperlinks ent)
                  (setq lst (cons link lst))
                  ) ;_ end of vlax-for
                (reverse lst)
                ) ;_ end of lambda
              )
             ) ;_ end of mapcar
          ) ;_ end of setq
    ) ;_ end of if
  res
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.01.2010, 17:11
#5
Дмитрий Брайт

инженер КИПиА
 
Регистрация: 12.09.2009
Сообщений: 63


можно ли работать с объектами выбраными с помощью ssget функциями ActiveX?
Дмитрий Брайт вне форума  
 
Непрочитано 23.01.2010, 21:00
#6
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Дмитрий Брайт Посмотреть сообщение
можно ли работать с объектами выбраными с помощью ssget функциями ActiveX?
Функция ssget вернет набор примитивов (ename) , а не объектов (vla-object). А любой примитив для передачи в функции ActiveX надо преобразовать в объект.

В коде #4 как раз есть пример проверки типа и преобразование вот в этом кусочке

Код:
[Выделить все]
(cond
             ((= (type ent) 'vla-object) ent)
             ((= (type ent) 'ename)
              (setq ent (vlax-ename->vla-object ent))
              )
             (t nil)
             )
ShaggyDoc вне форума  
 
Непрочитано 23.01.2010, 22:03
#7
Кулик Алексей aka kpblc
Moderator

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


Цитата:
можно ли работать с объектами выбраными с помощью ssget функциями ActiveX?
А почему нет? Созданный набор преобразовывается в список vla-указателей на объекты, и вперед, на амбразуры.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > аналог temp := polyline.hyperlink



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СТП предприятия нужен аналог для примера mvart Технология и организация строительства 11 20.04.2013 17:02
Как можно из LISP запросить у юзера выделить произвольные элементы и затем вызвать аналог WMFOUT для сохранения их в изображении? lexluther LISP 4 12.08.2009 11:44
Ищу отечественный аналог стали, из которой изготовлены краны-манипуляторы Palfinger® с пределом текучести до 1600 единиц KKKatok Поиск литературы, чертежей, моделей и прочих материалов 3 22.12.2008 11:06
Как Извлечь из строки числа Kostinok Программирование 7 12.08.2008 08:00