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

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

LISP. Список артибутов указанного блока

Ответ
Поиск в этой теме
Непрочитано 03.12.2012, 02:21 #1
LISP. Список артибутов указанного блока
Yuzer
 
Мозговой штурм
 
Рідна ненька - Україна, Харків
Регистрация: 26.10.2008
Сообщений: 5,705

Подсобите лиспом (может уже есть подобное).
Есть блоки - штампы. Атрибутами заданы наименования листа и номера листов. Остальное - статично.
Хотелось бы лиспом получить наименование штампов в формате: лист - наименование.
Просмотров: 2146
 
Непрочитано 03.12.2012, 02:30
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Yuzer, чертеж приложи, сразу помощников больше станет
gomer вне форума  
 
Автор темы   Непрочитано 03.12.2012, 02:40
#3
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Вот.
Вложения
Тип файла: dwg
DWG 2004
Штамп.dwg (60.6 Кб, 1319 просмотров)
Yuzer вне форума  
 
Непрочитано 03.12.2012, 03:30
#4
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Код:
[Выделить все]
 (defun c:test ()
  (prompt "\nПеречень листов:")
  (terpri)
  (mapcar
    (function
      (lambda (x)
	((lambda (x) (write-line (strcat (car x) " - " (cadr x))))
	  (mapcar
	    'cdr
	    (vl-remove-if-not
	      (function
		(lambda	(x)
		  (member (car x) '("НОМЕР_ЛИСТА" "ИМЯ_ЛИСТА"))
		)
	      )
	      (mapcar
		(function
		  (lambda (x)
		    (cons (vla-get-TagString x) (vla-get-TextString x))
		  )
		)
		(vlax-safearray->list
		  (vlax-variant-value
		    (vla-GetAttributes (vlax-ename->vla-object x))
		  )
		)
	      )
	    )
	  )
	)
      )
    )
    (vl-remove-if
      'listp
      (mapcar 'cadr
	      (ssnamex
		(ssget "_X" (list '(0 . "INSERT") '(2 . "Штамп_01")))
	      )
      )
    )
  )
  (princ)
)
gomer вне форума  
 
Автор темы   Непрочитано 03.12.2012, 03:44
#5
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Как запустить?
Yuzer вне форума  
 
Непрочитано 03.12.2012, 05:59
#6
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 824


Yuzer, Если я не ошибаюсь то - test в командной строке.
Ты читал статью "как подключить лисп"? Там все написано куда смотреть. (defun c:test ()
Astartes вне форума  
 
Автор темы   Непрочитано 03.12.2012, 08:37
#7
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Тест в комендной строке не работает.
Yuzer вне форума  
 
Непрочитано 03.12.2012, 09:20
#8
VVA

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


Для общего случая
Код:
[Выделить все]
(defun get-all-atts (obj)
  (if (and obj
           (vlax-property-available-p obj 'Hasattributes)
           (eq :vlax-true (vla-get-hasattributes obj))
      ) ;_ end of and
    (vl-catch-all-apply
      (function
        (lambda ()
          (mapcar (function (lambda (x)
                              (cons (vla-get-tagstring x)
                                    (vla-get-textstring x)
                              ) ;_ end of cons
                            ) ;_ end of lambda
                  ) ;_ end of function
                  (append (vlax-invoke obj 'Getattributes)
                          (vlax-invoke obj 'Getconstantattributes)
                  ) ;_ end of append
          ) ;_ end of mapcar
        ) ;_ end of lambda
      ) ;_ end of function
    ) ;_ end of vl-catch-all-apply
  ) ;_ end of if
) ;_ end of defun
Пример использования
Код:
[Выделить все]
;;;Использование
(defun C:TEST1 ()
(vl-load-com)
  (if
    (setq blk (car(entsel "\Выберите блок")))
    (get-all-atts (vlax-ename->vla-object blk))
    )
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 03.12.2012, 19:26
#9
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Yuzer Посмотреть сообщение
Тест в комендной строке не работает.
Что значит не работает?
gomer вне форума  
 
Непрочитано 12.12.2012, 11:04
#10
Xara

Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135


Что афтакад пишет-то?
Ты его загружал? (см. подпись VVA)
__________________
Боишься - не делай. Делаешь - не бойся.
Xara вне форума  
 
Автор темы   Непрочитано 12.12.2012, 20:37
#11
Yuzer

Мозговой штурм
 
Регистрация: 26.10.2008
Рідна ненька - Україна, Харків
Сообщений: 5,705


Лисп VVA, работает.
Но я думал, что будет список всех атрибутов даного блока.
Т.е. есть уменя 50 блоков с наименованиями листов, включил лисп, выбрал из перечня блок и получил список всех атрибутов по даному блоку.
Что-то типа этого.
У гомера команда тест не работает - хз как его вообще запустить..
Yuzer вне форума  
 
Непрочитано 12.12.2012, 22:54
#12
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от Yuzer Посмотреть сообщение
получил список всех атрибутов по даному блоку
Так что ли ?
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.JPG
Просмотров: 77
Размер:	89.1 Кб
ID:	92303  
maratovich вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Список артибутов указанного блока

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с помощью lisp получить список всех состояний видимости динамического блока crosandr LISP 4 11.04.2012 22:33
LISP получить список установленных в системе (векторных) шрифтов или хотя бы узнать, установлен ли указанный Ax3 LISP 9 08.02.2011 14:11
Чтение координат из файла Zaghim Программирование 39 13.07.2010 18:07
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47