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

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

Функция подсчета блоков выделенных "рамкой"

Ответ
Поиск в этой теме
Непрочитано 20.01.2009, 19:03 #1
Функция подсчета блоков выделенных "рамкой"
Holon
 
CNC
 
Israel
Регистрация: 07.07.2007
Сообщений: 302

Функция подсчета блоков выделенных "рамкой"
по их "description" находящейся в "hyperlinks",
возможно кто-то писал что-то подобное, прежде чем писать самому
может быть у кого-то есть уже готовое, всем заранее благодарен.
Просмотров: 2543
 
Автор темы   Непрочитано 23.01.2009, 10:44
#2
Holon

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


description возвращает nil хотя, я создал hyperlink,
только количество примитивов считает правильно,
что-то делаю неправильно, я слабо представляю работу
с набором примитивов ass, интуитивно я думаю надо пропускать каким-то образом этот набор в цикле, и от туда по условию выуживать необходимые значения по hyperlink и считать их.

Код:
[Выделить все]
(defun select-manual-hyperl ( / adoc  ass  item url descr location)
(setq adoc (vla-get-ActiveDocument (vlax-get-acad-object))
       ass (vla-get-ActiveSelectionset adoc))
(if (> (vla-get-count ass) 0) (vla-clear ass))
(vla-SelectOnScreen ass)
(princ (vla-get-count ass))
    (lambda (/ item)
     (vlax-for item (vla-get-hyperlinks ass)
             (setq
                 url (vla-get-url item)
	       descr (vla-get-urldescription item)
	     location(vla-get-urlnamedlocation item)
              )
				     );_ end of vlax-for
                                     );_ end of lambda
    
(vla-clear ass)
(vla-delete ass)
(vlax-release-object ass)
 (princ descr)
  )
Holon вне форума  
 
Непрочитано 23.01.2009, 11:35
#3
VVA

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


Изучай. ActiveSelectionset предпочитаю ssget
Код:
[Выделить все]
(defun select-manual-hyperl (/ ss item url descr location vla_list hyp)
  (if (setq ss nil
            ss (ssget)
      ) ;_ end of setq
    (progn
;;; Преобразуем набор ss в списов vla объектов
      (setq vla_list (mapcar (function vlax-ename->vla-object)
                             (vl-remove-if
                               (function listp)
                               (mapcar (function cadr) (ssnamex ss))
                             ) ;_ end of vl-remove-if
                     ) ;_ end of mapcar
            ss       nil
      ) ;_ end of setq
      (foreach item vla_list
        (if (setq hyp (mip-get-hyperlink item))
          (setq url      (nth 0 hyp)
                descr    (nth 1 hyp)
                location (nth 2 hyp)
          ) ;_ end of setq
          (setq url "None"
                descr "None"
                location "None"
          ) ;_ end of setq
        ) ;_ end of if
        (princ "\n----------------------------------")
        (princ "\nUrl=")(princ url)
        (princ "\nUrldescription=")(princ descr)
        (princ "\nUrlnamedlocation=")(princ location)
      ) ;_ end of foreach
    ) ;_ end of progn
  ) ;_ end of if
  (princ)
) ;_ end of defun

(defun mip-get-hyperlink (ENAME / ret)
;;; Функция возвращает значение гиперссылки у объекта ввиде списка
;;; (Url URLDescription URLNamedLocation) или nuil если гиперссылок нет
;;; Аргумент
;;;ENAME - ename or vla object
  (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)
                    ) ;_ end of list
                    ret
              ) ;_ end of cons
    ) ;_ end of setq
  ) ;_ end of vlax-for
  (car (reverse ret))
) ;_ end of DEFUN
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 23.01.2009, 11:46
#4
Holon

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


Спасибо! Да есть проблемы в образовании, но мы над этим работаем.
Holon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Функция подсчета блоков выделенных "рамкой"

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структурированный список Holon Программирование 22 11.09.2007 14:09