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

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

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

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

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

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


Можно. Как импортировать данные из 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ä
Сообщений: 813


Можешь попробовать для начала, значения длин в столбце С
Библиотеку скачай отсюда:
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ä
Сообщений: 813


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

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


Основная тема
Как на 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