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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Из AutoCAD в Excel

Из AutoCAD в Excel

Ответ
Поиск в этой теме
Непрочитано 05.07.2010, 15:02
Из AutoCAD в Excel
Владимир74
 
Регистрация: 05.07.2010
Сообщений: 8

Как выгрузить конкретный объект из AutoCAD в Excel?
Просмотров: 55731
 
Непрочитано 09.02.2011, 13:53
#21
pasko


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


Цитата:
Сообщение от jola Посмотреть сообщение
Викс студия
можно узнать, Вы Комфорт-В пользуетесь?
pasko вне форума  
 
Непрочитано 22.02.2011, 11:49
#22
asergeey


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


День добрый всем!! Уважаемые товарищи, есть у меня маленькая задача. Работаю в департаменте мерчендайзинга. Есть товарищь который рисует план-схемы магазинов в автокад. Он дает название всем объектам которые нарисовал там. Вопрос таков. Он знает как вытягивать данные из автокада. Но есть у меня подозрения, что можно делать больше всего и проще. У кого есть опыт. Подскажите может кто сталкивался...
Спасибо.
asergeey вне форума  
 
Автор темы   Непрочитано 22.02.2011, 13:56
#23
Владимир74


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


каким образом вытягивать данные? можно поподробнее?
Владимир74 вне форума  
 
Непрочитано 03.05.2011, 11:51
#24
Avodo


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


отлично все работает! единственно есть некоторые траблы - например в ячейке должен обязательно только текст и только один! никаких значков "градус" нарисованных кругом, никаких лишних точек, линий. Потом текст должен быть нормальным - иметь человеческий шрифт, а не подгруженный взамен какого нить из СПДСа. В общем "чистые" таблицы нарисованные примитивами экспортировать в автокад получается нормально.
Avodo вне форума  
 
Непрочитано 04.10.2011, 13:06
#25
SHURF

ГИП
 
Регистрация: 04.10.2006
Ярославль
Сообщений: 482


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Алексей, использовал материал с вашей ссылки, спасибо. Но пока что не работает. После выделения объектов таблицы в автокаде вот такое сообщение в командной строке. Не выручите меня, не подскажите как с этим быть.

С уважением, Shurf
Миниатюры
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 473
Размер:	57.5 Кб
ID:	67232  
SHURF вне форума  
 
Непрочитано 04.10.2011, 15:39
#26
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


Можно несколько противоположный вопрос?
Как, после извлечения, организовать обратную связь? То есть хочу изменять данные в Excel и чтобы они автоматически менялись в автокаде. Это возможно? К примеру, извлеченные атрибуты блоков менять таким образом...
angel-fear вне форума  
 
Непрочитано 04.10.2011, 15:46
#27
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


SHURF, я с подобным сталкивался, кода версия офиса была то ли 2000, то ли 2007 (без SP). Как решал - хоть убейте, не помню. Если вечером будет возможность, посмотрю.
angel-fear, есть три варианта: а) заняться поиском - вопрос уже не раз поднимался; б) использовать attin и attout; в) использовать dataextraction.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.10.2011, 15:49
#28
Avodo


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


Цитата:
Сообщение от angel-fear Посмотреть сообщение
Можно несколько противоположный вопрос?
Как, после извлечения, организовать обратную связь? То есть хочу изменять данные в Excel и чтобы они автоматически менялись в автокаде. Это возможно? К примеру, извлеченные атрибуты блоков менять таким образом...
Так Вы не очень в тему пишите. Здесь обсуждалась проблема перевода таблицы именно из примитивов. Далее после удачного экспорта в Excel можно уже обратно вставить таблицу в Autocad из Excel как целостный элемент "Таблица". Получите такие же ячейки, в которых можно выполнять вычисления, писать формулы и назначать какие либо данные например из атрибутов блоков через так называемые "Поля" которые могут быть вставлены в ячейку вместо текста...
Avodo вне форума  
 
Непрочитано 04.10.2011, 16:14
#29
MCAD


 
Блог
 
Регистрация: 05.01.2005
Сообщений: 1,694


Цитата:
Сообщение от jola Посмотреть сообщение
Таблица нарисована линиями, в ячейках из линий - значения. Это издержки использования плагина к автокаду Викс студия.
Если есть СПДС старше трёшки, то sprectable и экспорт в excel.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 308
Размер:	5.0 Кб
ID:	67247  
MCAD вне форума  
 
Непрочитано 04.10.2011, 18:36
1 | #30
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Как вариант попробовать еще это Transfer Acad Table (made by lines and text) to Excel

Код:
[Выделить все]
;; The Aim of the Rountine: To transfer the acad table to excel
;; Notes: Now the program can only deal with the table drawed by line or lwpolyline, and the 
;;        table grid are N*M, not irregular, the rountine is tested under office97
;;        and I think it can also run under the after office version.

;; The command name :b2e

;  by qjchen at http://www.xdcad.net 2006.02.07
;; South China University of Technology, Architecture Department
;; Some code taken from a Korea Friend, Thanks to them


;; The main program
(defun c:b2e (/ p1 p2 p3 p4 p1a p2a p1b p4b pvlist phlist palllist newpvlist
		i j column row ss palist en ed ttext fn fh
	     )
  (setvar "osmode" 33)
  (setq p1 (getpoint "\nThe left Up corner point:"))
  (setq p3 (getpoint "\nThe Right Bottom corner point:"))
  (setvar "osmode" 0)
  (setq p2 (list (car p1) (car (cdr p3)) 0))
  (setq p4 (list (car p3) (car (cdr p1)) 0))
  (setq p1a (polar p1 0 1))
  (setq p2a (polar p2 0 1))
  (setq p1b (polar p1 (* pi 1.5) 1))
  ;(setq p4b (polar p4 pi 1))	       
  (setq p4b (polar p4 (* pi 1.5) 1))	
; Get the Table's horizontal and vertical line's place
  (setq pvlist (vl-Get-Int-Pt p1a p2a))
  (setq pvlist (mapcar
		 '(lambda (x)
		    (polar x pi 1)
		  )
		 pvlist
	       )
  )				      
  (setq phlist (vl-Get-Int-Pt p1b p4b))
  (setq palllist (list pvlist))
  (setq i 1)
  (repeat (- (length phlist) 1)
    (setq newpvlist (mapcar
		      '(lambda (x)
			 (list (car (nth i phlist)) (car (cdr x))
			       (car (cddr x))
			 )
		       )
		      pvlist
		    )
    )
    (setq palllist (append
		     palllist
		     (list newpvlist)
		   )
    )
    (setq i (1+ i))
  )
  (setq column (length palllist))
  (setq row (length (nth 0 palllist)))
  (setq j 0)
  (setq finallist nil)
  (repeat (- row 1)
    (setq i 0
	  rowlist nil
    )
    (repeat (- column 1)
      (setq pa1 (nth j (nth i palllist)))
      (setq pa2 (nth (1+ j) (nth i palllist)))
      (setq pa3 (nth (1+ j) (nth (1+ i) palllist)))
      (setq pa4 (nth j (nth (1+ i) palllist)))
      (setq palist (list pa1 pa2 pa3 pa4))
      (SETQ SS (SSGET "_WP" palist))
      (if (/= ss nil)
	(progn
	  (SETQ EN (SSNAME SS 0))
	  (SETQ ED (ENTGET EN))
	  (setq ttext (cdr (assoc 1 ed)))
	  (setq rowlist (append
			  rowlist
			  (list ttext)
			)
	  )
	)
	(setq rowlist (append
			rowlist
			(list " ")
		      )
	)
      )
      (setq i (1+ i))
    )
    (setq finallist (append
		      finallist
		      (list rowlist)
		    )
    )
    (setq j (1+ j))
  )
  
  
  ;;Now all the N horizontal and M vertical lines' intersecting points(N*M) are obtained				      				       
  (setq outlist finallist)	       
  
;;The subrounine to tranfer text to excel
  (2xl outlist)
)


;;; A subrountine from a Korea Friend for obtaining the intersection point of a line through 2 points with many other object
(defun vl-Get-Int-Pt (FirstPoint SecondPoint / acadDocument mSpace SSetName
				 SSets SSet reapp ex obj Baseline
		     )
  (vl-load-com)
  (setq acadDocument (vla-get-ActiveDocument (vlax-get-acad-object)))
  (setq mSpace (vla-get-ModelSpace acadDocument))
  (setq SSetName "MySSet")
  (setq SSets (vla-get-SelectionSets acadDocument))
  (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-add (list SSets
							       SSetName
							 )
			    )
      )
    (vla-clear (vla-Item SSets SSetName))
  )
  (setq SSet (vla-Item SSets SSetName))
  (setq Baseline (vla-Addline mspace (vlax-3d-point FirstPoint)
			      (vlax-3d-point SecondPoint)
		 )
  )
  (vla-SelectByPolygon SSet acSelectionSetFence
		       (kht:list->safearray (append
					      FirstPoint
					      SecondPoint
					    ) 'vlax-vbdouble
		       )
  )
  (vlax-for obj sset (if (setq ex (kht-intersect
						 (vlax-vla-object->ename BaseLine)
						 (vlax-vla-object->ename obj)
				  )
			 )
		       (setq reapp (append
				     reapp
				     ex
				   )
		       )
		     )
  )
  (vla-delete BaseLine)
  (setq reapp (vl-sort reapp '(lambda (e1 e2)
				(< (car e1) (car e2))
			      )
	      )
  )
  reapp
)


;;; My modify to omitting the text objects' intersection
(defun kht-intersect (en1 en2 / a b x ex ex-app c d e)
  (vl-load-com)
  (setq c (cdr (assoc 0 (entget en1)))
	d (cdr (assoc 0 (entget en2)))
  )
  (if (or
	(= c "TEXT")
	(= d "TEXT")
      )
    (setq e -1)
  )
  (setq En1 (vlax-ename->vla-object En1))
  (setq En2 (vlax-ename->vla-object En2))
  (setq a (vla-intersectwith en1 en2 acExtendNone))
  (setq a (vlax-variant-value a))
  (setq b (vlax-safearray-get-u-bound a 1))
  (if (= e -1)
    (setq b e)
  )
  (if (/= b -1)
    (progn
      (setq a (vlax-safearray->list a))
      (repeat (/ (length a) 3)
	(setq ex-app (append
		       ex-app
		       (list (list (car a) (cadr a) (caddr a)))
		     )
	)
	(setq a (cdr (cdr (cdr a))))
      )
      ex-app
    )
    nil
  )
)

(defun kht:list->safearray (lst datatype)
  (vlax-safearray-fill (vlax-make-safearray (eval datatype) (cons 0
								  (1-
								      (length lst)
								  )
							    )
		       ) lst
  )
)
;;; End of the Korea Friend's Subrountine


(defun TerminaExcel ()
  (vlax-release-object *cells*)
  (vlax-release-object *item*)
  (vlax-release-object *workbooks*)
  (vlax-release-object *Excel*)
)

(defun IniciaExcel (/ m)
  (vl-load-com)
  (setq m (vlax-get-or-create-object "excel.application"))
  (if (= (vla-get-visible m) :Vlax-false)
    (vla-put-visible (vlax-get-or-create-object "excel.application") T)
  )

  (setq *Excel* (vlax-get-or-create-object "excel.application"))
  (if (= (vlax-get-property *Excel* "activeworkbook") nil)
    (progn
      (setq *workbooks* (vlax-get-property *Excel* "workbooks"))
      (vlax-invoke-method *workbooks* "add")
      (setq deltaRow nil)
    )
  )

  (setq *workbooks* (vlax-get-property *Excel* "activeworkbook")
	*item* (vlax-get-property *workbooks* "activesheet")
	*cells* (vlax-get-property *item* "cells")
  )
  (if (= (vlax-get-object "Excel.Application") nil)
    (progn
      (vla-put-visible *Excel* T)
    )
  )


)



;; My subrounine to transfer the Table to excel
(defun 2xl (outlist / temp val cll rll cel ccel ccell curid curval curcell)
(IniciaExcel)
(setq list1 (conexcelcolumn))
 (setq curRow 1)
 (if (= deltaRow nil) (setq deltaRow 0))
 (repeat (length outList)
	    (setq temp 1)
	    (repeat (length (nth 0 outlist))
	     (setq val (nth (1- temp) (nth (- curRow 1) outList)))
	     (setq cll (nth temp list1))
	     (setq rll (itoa (+ curRow deltaRow)))
                (setq cel (strcat cll rll))
                (setq curId (strcat (nth temp list1) (itoa (+ curRow deltaRow)))
		    curCell (vlax-variant-value (vlax-invoke-method *item* "Evaluate"
								    curId
						)
			    )
		    curVal (nth (1- temp) (nth (- curRow 1) outList))
	      )
	      
	      (vlax-put-property curCell "Formula" curVal)
	      (vlax-release-object curCell)
	      (setq temp (1+ temp))
	    )
	    (setq curRow (1+ curRow))
	  )
(setq deltaRow  (+ deltaRow (- curRow 0)))
(TerminaExcel)
(princ)
)


;;;Subrouine to produce a list corresponding to the Excel's Column, For Example:A,B,...Z,AA,AB,....
(defun conexcelcolumn (/ a b list1)
  (setq a 65)
  (setq list1 nil)
  (repeat 26
    (setq list1 (append
		  list1
		  (list (chr a))
		)
    )
    (setq a (1+ a))
  )
  (setq a 65)
  (repeat 26
    (setq b 65)
    (repeat 26
      (setq list1 (append
		    list1
		    (list (strcat (chr a) (chr b)))
		  )
      )
      (setq b (1+ b))
    )
    (setq a (1+ a))
  )

  list1
)

(prompt "\nCopyright (c) 2006 qjchen\n")
(prompt "Enter b2e to start.")
(princ)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 05.10.2011 в 16:46. Причина: исправлена ошибка: неверная строка режима ssget
VVA вне форума  
 
Непрочитано 04.10.2011, 19:06
#31
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


Цитата:
Сообщение от Avodo Посмотреть сообщение
Так Вы не очень в тему пишите. Здесь обсуждалась проблема перевода таблицы именно из примитивов. Далее после удачного экспорта в Excel можно уже обратно вставить таблицу в Autocad из Excel как целостный элемент "Таблица". Получите такие же ячейки, в которых можно выполнять вычисления, писать формулы и назначать какие либо данные например из атрибутов блоков через так называемые "Поля" которые могут быть вставлены в ячейку вместо текста...
Меня не интересуют изменения таблицы AutoCAD, с этим все понятно. Нужно другое:

1. Делаем dataextraction из dwg. Допустим извлекаем данные из блоков, в частности - атрибуты.
2. Результаты вываливаем в xls.
3. Меняем значение некоторой ячейки в таблице Excel.
4. В чертеже, в соответствующем блоке, должен автоматически поменяться соответствующий атрибут.
angel-fear вне форума  
 
Непрочитано 05.10.2011, 09:31
#32
SHURF

ГИП
 
Регистрация: 04.10.2006
Ярославль
Сообщений: 482


Цитата:
Сообщение от Яков Посмотреть сообщение
Если есть СПДС старше трёшки, то sprectable и экспорт в excel.
Яков, попробовал как вы написали, СПДС 5, на ввод этой команды запрашивает указать точку (где её указывать внутри таблицы или снаружи не понятно), но не суть. Затем выдаётся надпись Невидимая таблица - причём эта надпись в свойствах объекта называется как spdstable. Если двойным щелчком нажать на надпись "Невидимая таблица" то открывается окно редактирования таблицы с чистыми полями и всё больше ничего не происходит.
SHURF вне форума  
 
Непрочитано 05.10.2011, 09:47
1 | #33
MCAD


 
Блог
 
Регистрация: 05.01.2005
Сообщений: 1,694


Цитата:
Сообщение от SHURF Посмотреть сообщение
выдаётся надпись Невидимая таблица
Текущий масштаб какой?
Собственно смотри в почте.

Последний раз редактировалось MCAD, 05.10.2011 в 09:54.
MCAD вне форума  
 
Непрочитано 05.10.2011, 10:31
#34
SHURF

ГИП
 
Регистрация: 04.10.2006
Ярославль
Сообщений: 482


Яков СПАСИБО!!!!!!! ВСЁ ПОЛУЧИЛОСЬ. сделал текущий масштаб аннотаций 1:1 и заработало.

Кулик Алексей aka вопрос всё ещё актуален. Хотелось бы с помощью Лиспа выполнить подобную операцию. Если у вас будет время в продолжение поста 27, буду признателен...

VVA
Цитата:
Как вариант попробовать еще это Transfer Acad Table (made by lines and text) to Excel
по ссылке нужен пароль и много ещё чего просто так не скачать. Как быть?
SHURF вне форума  
 
Непрочитано 05.10.2011, 10:50
#35
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Цитата:
Сообщение от SHURF Посмотреть сообщение
по ссылке нужен пароль
Там нужна регистрация.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.10.2011, 11:58
#36
MCAD


 
Блог
 
Регистрация: 05.01.2005
Сообщений: 1,694


Цитата:
Сообщение от angel-fear Посмотреть сообщение
Можно несколько противоположный вопрос?
К примеру, извлеченные атрибуты блоков менять таким образом...
Можно использовать нанокад или СПДС.
Вложения
Тип файла: dwg
DWG 2010
ForumDWG1.dwg (267.0 Кб, 3557 просмотров)
MCAD вне форума  
 
Непрочитано 05.10.2011, 12:01
#37
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


angel-fear, Попробуй пункт б) из #27 и почитай 1-ю статю Solo Autocad Дмитрия Тищенко
А лучше все
>SHURF Добавил код к #30
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.10.2011, 14:19
#38
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


VVA, код из #30 выпадает с ошибкой:

The left Up corner point:
The Right Bottom corner point:
Команда:
Команда: ; ошибка: неверная строка режима ssget


Правда тестил на 2003 и 2010 офисе.
angel-fear вне форума  
 
Непрочитано 05.10.2011, 16:46
1 | #39
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


angel-fear, Исправил #30
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 06.10.2011, 09:21
#40
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


Откопал самую кривую табличку.
Исходник и результат в архиве... так и должно быть? )))
Вложения
Тип файла: rar Пример.rar (68.5 Кб, 219 просмотров)
angel-fear вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Из AutoCAD в Excel

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблицы из Excel в AutoCAD вставляются неполностью Nikolay_N AutoCAD 23 07.09.2019 21:12
Таблица из Excel в AutoCAD Elbrus AutoCAD 56 11.06.2012 11:41
Подключение Excel к AutoCad 2008 c помощью базы ODBC Eddicordo AutoCAD 4 03.02.2011 17:01
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59