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

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

Как извлечь из блока константные атрибуты (на AutoLISP)?

Ответ
Поиск в этой теме
Непрочитано 18.04.2007, 20:35 #1
Как извлечь из блока константные атрибуты (на AutoLISP)?
Matt
 
Питер
Регистрация: 18.04.2007
Сообщений: 4

Все советы по извлечению атрибутов через автолисп сводятся к коду вида:
Код:
[Выделить все]
(defun mip_get_blk_att ( e1 / ed imattr znattr retlist ptattr ptattr11 ugattr) 
    (setq ed (entget e1)) 
  (if (and 
   (= (cdr (assoc 0 ed)) "INSERT")  
   (= (cdr (assoc 66 ed)) 1)        
      ) 
    (progn 
        (setq e1 (entnext e1)) 
        (while (AND e1 
        (= (cdr (assoc 0 (setq ed (entget e1)))) "ATTRIB") 
        ) ;_ End of AND 
   (setq imattr (cdr (assoc 2 ed)) 
              znattr (cdr (assoc 1 ed)) 
              ptattr (cdr (assoc 10 ed)) 
            ptattr11 (cdr (assoc 11 ed)) 
              ugattr (cdr (assoc 50 ed))) 
     
   (setq retlist (append retlist (list (list imattr znattr ptattr ptattr11 ugattr)))) 
   (setq e1 (entnext e1)) 
      ) 
    )  
  ) 
  retlist 
)
Нечто похожее я и сам придумал, но вот константные атрибуты таким методом достать не получается Скажите, пожалуйста, может быть кто знает где они лежат и как до них добраться?
Просмотров: 2793
 
Непрочитано 18.04.2007, 22:12
#2
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


http://www.cadforyou.spb.ru/index.ph...functions_page

function get-all-atts

Izvini slomalas russkaja raskladka

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 18.04.2007, 22:37
#3
Matt


 
Регистрация: 18.04.2007
Питер
Сообщений: 4


Спасибо большое, это действительно работает
Я с ActiveX, к сожалению, еще не знаком и не понимаю код. В принципе, можно использовать твою функцию не разбираясь что и как, но все же, на будущее: можно ли достать константные атрибуты без ActiveX?
Matt вне форума  
 
Непрочитано 19.04.2007, 00:09
#4
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Matt
Спасибо большое, это действительно работает
Я с ActiveX, к сожалению, еще не знаком и не понимаю код. В принципе, можно использовать твою функцию не разбираясь что и как, но все же, на будущее: можно ли достать константные атрибуты без ActiveX?
Можно и попроще, шибко не проверял
сам уж как

Код:
[Выделить все]
;; ======== written  by Fatty () 2007 * all rights removed ======;;
(defun get-const-atts-only (blk_ent	  /	      att_ent_name
		      att_list	  blk_ent     blk_name	  const_atts
		      ent
		     )

  (setq blk_name (cdr (assoc 2 (entget blk_ent))))
  (setq ent (tblobjname "BLOCK" blk_name))
  (while
    (setq ent (entnext ent))
     (setq att_ent_name (cdr (assoc 0 (setq att_list (entget ent)))))
     (if (and (eq "ATTDEF" att_ent_name)
	      (equal 2 (logand 2 (cdr (assoc 70 att_list))))
	 )
       (setq const_atts
	      (cons (cons (cdr (assoc 2 att_list))
			  (cdr (assoc 1 att_list))
		    )
		    const_atts
	      )
       )
     )
  )
  (reverse const_atts)
)
;;Пример использования
(defun C:test (/ att_data blk message)
  (setq
    blk	(car
	  (entsel
	    "\nВыбрать блок для чтения постоянных атрибутов: "
	  )
	)
  )
  (if (setq att_data (get-const-atts-only blk))
    (progn
      (setq message
	     (apply 'strcat
		    (mapcar
		      (function	(lambda	(x)
				  (strcat (car x) "\n")
				)
		      )
		      (mapcar (function	(lambda	(y)
					  (list	(strcat	"Таг атрибута "
							(car y)
							" ; Значение атрибута "
							(cdr y)
						)
					  )
					)
			      )
			      att_data
		      )
		    )
	     )
      )
      (alert message)
    )
    (alert "Постоянных атрибутов не наблюдается")
  )
  (princ)
)
(C:test)
~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 19.04.2007, 20:38
#5
Matt


 
Регистрация: 18.04.2007
Питер
Сообщений: 4


Спасио Fatty. Всегда приятно когда есть свобода выбора =) Решил что все же буду учить ActiveX. В связи с чем и новый топик...
Matt вне форума  
 
Непрочитано 19.04.2007, 21:12
#6
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Matt
Спасио Fatty. Всегда приятно когда есть свобода выбора =) Решил что все же буду учить ActiveX. В связи с чем и новый топик...
Маленький совет не торопись
Сначала досконально освой обычные
методы
fixo вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как извлечь из блока константные атрибуты (на AutoLISP)?

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