Можно ли из Excel импортировать свойства(значения параметров) динамических блоков?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Можно ли из Excel импортировать свойства(значения параметров) динамических блоков?

Можно ли из Excel импортировать свойства(значения параметров) динамических блоков?

Ответ
Поиск в этой теме
Непрочитано 12.04.2012, 00:02 #1
Можно ли из Excel импортировать свойства(значения параметров) динамических блоков?
Мих
 
Регистрация: 01.09.2006
Сообщений: 48

Есть ли возможность создав в Excel таблицу с заданными параметрами динамических блоков импортировать значения в чертёж. Примерно так-есть блок А с динамическим параметром "длина" в чертеже куча таких А с параметром "длина" по умолчанию- при импорте данных "длинам" назначаются соответствующие значения из экселевской таблички.
Просмотров: 4027
 
Непрочитано 12.04.2012, 06:20
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Можно. Как импортировать данные из excel - на форуме тем 50, примерно столько-же, по установке параметров дин. блоков.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 12.04.2012, 20:08
#3
Мих


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


Интересует решение конкретной задачи описанной в посте. Если можно ссылку?
Мих вне форума  
 
Непрочитано 12.04.2012, 23:16
#4
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Можешь попробовать для начала, значения длин в столбце С
Библиотеку скачай отсюда:
http://forum.dwg.ru/showpost.php?p=8...postcount=1857
и загрузи ее перед выполнением

Код:
[Выделить все]
(defun C:XLDB(/ *error* adoc axss blockdata blkobj fname prop sset value x xlapp xlbook xlbooks xlsheet xlsheets)
  (defun *error* (msg)
    (cond ((not msg))
	  ((vl-position
	     msg
	     '("Function cancelled" "quit / exit abort" "console break")
	   )
	  )
	  ((princ (strcat "\nXLDB Command Error: " msg)))
    )
                
    (princ)
  )

;; by Peter Jamtgaard
  
;; Getting and putting the dynamic property values.

(defun GetDynamicProperties (objSelection lstProperties
                             /
                             ;|lstProperties|;
                             X
                            )
 (if (and (wcmatch (vla-get-objectname objSelection)
"AcDbBlockReference,AcDbMInsertBlock")
          (vlax-property-available-p objSelection "IsDynamicBlock")
          (= (vla-get-IsDynamicBlock objSelection) :vlax-true)
          (setq lstProperties (errortrap  '(vlax-safearray->list
                                            (variant-value

(vla-GetDynamicBlockProperties objSelection)
                                            )
                                           )
                              )
          )
     )
  (mapcar '(lambda (x)(list (vla-get-propertyname X) (vlax-get X
"value"))) lstProperties)
 )
)
  
  
(defun SetDbProp( block prop value)
  (foreach pr
	    (vlax-invoke block 'GetDynamicBlockProperties)
    (if (eq prop (vla-get-propertyname pr))
(errortrap  '(vla-put-value pr
              (vlax-make-variant value (vlax-variant-type (vla-get-value pr)))
            )
                              )
      
;;;    (vla-put-value pr
;;;              (vlax-make-variant value (vlax-variant-type (vla-get-value pr)))
;;;            )
    )
)
  )


    
(defun ErrorTrap (symFunction / objError result)  (if
(vl-catch-all-error-p
      (setq objError (vl-catch-all-apply
                     '(lambda (X)(set X (eval symFunction)))
                      (list 'result))))
  nil
  (if result result 'T)
 )
)
  

;; ---------------------------- * main part *  --------------------------;;
  
 (setvar "cmdecho" 0)
  
;| go to Excel |;
    (if	(setq fname (getfiled "Select or enter Excel file" "" "xls;xlsx" 16))

      (progn

	(setq xlapp (xlgetapp))

	(setq xlbooks (xlgetbooks xlapp))

	(setq xlbook (xlopenbook xlbooks fname))

	(setq xlbook (xlgetactivebook xlapp))

	(_set xlapp 'visible :vlax-true)

	(xlshout xlapp :vlax-false)

	(setq xlsheets (xlgetsheets xlbook))

	(setq xlsheet (xlgetsheet xlsheets 1))

	(setq xlsheet (xlactivate xlsheet))

	(setq blockdata (xlreadrange xlapp "A1:C12" nil nil nil))

	(xlshout xlapp :vlax-true)

	(xlbookclose xlbook nil)

	(xlquit xlapp)

	(xlcleanup
	  
	  (list  xlsheet xlsheets xlbook xlbooks xlapp))

	)
      
      )

  ;;------------------------------- go to Acad ------------------------------------;;

  
  (or adoc (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (princ "\nSelect Blocks to be updated: ")
(if (and (setq sset (ssget (list (cons 0 "insert"))))
	 (setq axss (vl-remove-if 'listp (mapcar 'cadr (ssnamex sset))))
	 )
  (progn
    (setq axss (mapcar '(lambda(x) (vlax-ename->vla-object x)) axss))
    (setq n 0)
    (foreach blkobj axss
    (if
      (GetDynamicProperties blkobj "Äëèíà")
      (progn
	
      (SetDbProp blkobj "Äëèíà" (caddr (nth n blockdata)));<-- значения длин в столбце "C"

      (setq n (1+ n))
       )
    )
  )
    )
  )
 
  (princ)
  )
~'o'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 13.04.2012, 10:16
#5
Мих


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


Уважаемый Олег (jr.) , спасибо за участие, и решение вопроса. Не затруднит ли описать пошагово порядок действий?
Мих вне форума  
 
Непрочитано 13.04.2012, 17:56
#6
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Мих Посмотреть сообщение
спасибо за участие, и решение вопроса. Не затруднит ли описать пошагово порядок действий?
Извини, нет времени, разберись сам
Олег (jr.) вне форума  
 
Непрочитано 14.04.2012, 18:16
#7
VVA

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


Основная тема
Как на Lisp получить достук к операциям поиска, а также иметь возможность их изменять
Итоги
Программа заполнения Lookup-a динамических свойств блока из данных таблицы Excel
Программа для переписывания данных из Lookup-a в Excel
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 14.04.2012, 21:41
#8
Мих


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


Это Lookup. Не то.

Олег (jr.) разобрался спасибо...

Последний раз редактировалось Мих, 14.04.2012 в 23:56.
Мих вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Можно ли из Excel импортировать свойства(значения параметров) динамических блоков?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Каким образом узнать длину нескольких динамических блоков ie.spb Динамические блоки 40 10.08.2021 13:25
Сквозная нумерация динамических блоков zenon Программирование 214 28.08.2020 08:45
Как можно импортировать док-т из AutoCADa в SCAD LiSS85 SCAD 2 03.02.2009 08:13
можно ли автоматизировать нумерацию блоков duki_001 AutoCAD 3 05.10.2008 12:19
Загрузка параметров дин. блоков из базы данных Дима_ Прочее. Программное обеспечение 11 04.09.2007 17:03