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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Экспорт данных из *.dwg в *.txt,*.dbf,*.xls

Экспорт данных из *.dwg в *.txt,*.dbf,*.xls

Ответ
Поиск в этой теме
Непрочитано 08.12.2004, 12:21 #1
Экспорт данных из *.dwg в *.txt,*.dbf,*.xls
Dmitriy
 
Регистрация: 08.12.2004
Сообщений: 2

Здравствуйте!
Подскажите плиз программку или метод для экспорта данных из файла *.dwg лучше всего в *.dbf.Можно в файлы Excel. Конечное применение данных - SQL.
Спасибо!
Просмотров: 11695
 
Автор темы   Непрочитано 08.12.2004, 12:22
#2
Dmitriy


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


P.S. Файл *.dwg это спецификация
Dmitriy вне форума  
 
Непрочитано 11.12.2004, 17:29 Что-нибудь придумаем
#3
HORSY

Проектирование
 
Регистрация: 17.11.2004
Подмосковье
Сообщений: 128


Посмотрите в DownLoad: www.DWG.ru/dwl
Там можно найти качественые шаблоны Спецификаций для Word.
Ежели это Вас не успокоит - напишите мне на е-адрес.
Что-нибудь придумаем.
HORSY вне форума  
 
Непрочитано 11.12.2004, 20:54
#4
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Посмотри "Функция экспорта данных из таблиц «нарисованых» примитивами, из Autocad в Excel" на странице:
http://www.uniip.ru/#content=http://.../download.html
Alaspher вне форума  
 
Непрочитано 12.12.2004, 15:05
#5
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


На днях написал для одного штатника програмку подсчета блоков с экспортом в Ексель.
Код:
[Выделить все]
(defun c:blcx(/ blSet blList nameList listLen outList exFlag oldExFlag
		   exPath exApp exWorkbook exFileexSheets exSheet curId
		   newFile curCell curVal)

;;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;;                                                                   +
;;;  This program counts blocks, gives out the reporting,             +
;;;  and also can export the data to MS Excel.                        +
;;;                                                                   +
;;;  Type BLCX in command line to run.                                +
;;;                                                                   +
;;;  Supported O/S: Windows 2000/XP                                   +
;;;  Suppported MS Excel Versions: MS Office 97/2003                  +
;;;  Supported AutoCAD Versions: AutoCAD 2000/2005                    +
;;;                                                                   +
;;;                                                                   +
;;;  Version 1.0   Dec 09, 2004                                       +
;;;                                                                   +
;;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  
  (vl-load-com)
  
  (princ "\n*** Specify selection set by frame selection ***")
  (if(setq blSet(ssget '((0 . "INSERT"))))
    (progn
      (setq blList(mapcar 'vlax-ename->vla-object 
                    (vl-remove-if 'listp 
                     (mapcar 'cadr(ssnamex blSet))))
	    nameList(vl-sort (mapcar'(lambda(X)(vla-get-Name x)) blList) '<)
	    listLen(length nameList)
	    ); end setq
      (while nameList
  (setq outList (cons(cons(car nameList)
           (- listLen(setq listLen(length (setq nameList
	   (vl-remove(car nameList) nameList))))))outList)
        ); end setq
  ) ; end while
      (princ "\n********** BLOCK COUNTING REPORT ************\n ")
      (foreach item outList
	(princ(strcat "\n" (car item)" "(itoa(cdr item))))
	); end foreach
      (princ "\n \n************* END OF REPORT *****************")
      (textscr)
      (if(not exFlag)(setq exFlag "N"))
      (setq oldExFlag exFlag)
      (initget "Y N")
      (setq exFlag
	     (getkword
		(strcat "\n\n*** Save report to MS Excel file? [Y/N] <"exFlag">: ")))
      (if(null exFlag)(setq exFlag oldExFlag))
      (if(= exFlag "Y")
	(progn
	   (if (setq  exPath(getfiled "Save Text File As"
           (strcat (getvar "dwgprefix")(substr (getvar "dwgname") 1
		(- (strlen (getvar "dwgname")) 4)) ".xls")"xls" 33); end getfiled
            ); end setq
	     (progn
	(setq exApp(vlax-create-object "Excel.Application"))
	(if(null exApp)
	  (progn
	    (alert "Error. Can't start MS Excel.")
	    (quit)
	    ); end progn
	    ); end if
	 (setq exWorkbook
	           (vlax-get-property exApp "Workbooks")
	       exFile
	           (vlax-invoke-method exWorkbook "Add")
	       exSheets
	           (vlax-get-property exFile "Worksheets") 
               exSheet
	           (vlax-get-property exSheets "Item" "Sheet1")
	       curRow 2
	); end setq
	  (repeat(length outList)
	    (setq curId(strcat "B"(itoa curRow))
		  curCell(vlax-variant-value
		         (vlax-invoke-method exSheet "Evaluate" curId))
		  curVal(car(nth(- curRow 2) outList))
		  ); end setq
		  (vlax-put-property curCell  "Formula" curVal)
	    (vlax-release-object curCell)
	    (setq curId(strcat "C"(itoa curRow))
		  curCell(vlax-variant-value
		         (vlax-invoke-method exSheet "Evaluate" curId))
		  curVal(itoa(cdr(nth(- curRow 2) outList)))
		  ); end setq
		  (vlax-put-property curCell  "Formula" curVal)
	    (vlax-release-object curCell)
	    (setq curRow(1+ curRow))
	    ); end repeat
	  (vlax-invoke-method exFile "SaveAs" exPath nil nil nil nil nil nil)
	  (vlax-invoke-method exFile "Close" nil)
	  (vlax-invoke-method exApp "Quit")
    (mapcar(function(lambda(x)
	       (if
		 (and x(not(vlax-object-released-p x)))
		 (vlax-release-object x)
		 )
	       ))
    (list curCell exSheet exSheets exFile exWorkbook exApp)
    )
    (setq curCell nil
          exSheet nil
          exSheets nil
          exFile nil
	  exWorkbook nil
	  exApp nil); end setq
    (gc)
	(princ(strcat"\n*** The file was successfully saved in: " exPath)) 
	); end progn
	     (princ "\n*** Excel file was not created! *** ")
	     ); end if
       ); end progn
      ); end if
    ); end progn
    (princ "\n*** Nothing blocks selected! ***")
  ); end if
      (princ)
      ); end of BLCX

(princ "\nType BLCX to run.")
{Smirnoff} вне форума  
 
Непрочитано 12.12.2004, 15:14
#6
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Прошу прощения, невнимательно читал. ЛИСПик не совсем в тему, но может пригодится...
{Smirnoff} вне форума  
 
Непрочитано 12.12.2004, 15:30
#7
Georg

Design
 
Регистрация: 27.10.2004
Kiev
Сообщений: 57


Fantomas
Ты не сталкивался с переносом координат вершин выбранных полилиний в Exel? :?:
Georg вне форума  
 
Непрочитано 12.12.2004, 15:46
#8
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Как один из вариантов
Код:
[Выделить все]
(defun c:coordex (/ e ptl oex wkbs awb mainsh c r)
  (princ  "\nУкажите сплайн или полилинию > ")
  (if (and (setq e (ssget "_:S" '((-4 . "<OR") (0 . "LWPOLYLINE") (0 . "SPLINE") (-4 . "OR>"))))
           (setq e (ssname e 0))
           (setq ptl (apply 'append ;_ список точек для вывода
                            (mapcar '(lambda (el)
                                       (if (= 10 (car el))
                                         (list (cdr el))
                                       ) ;_  if
                                     ) ;_  lambda
                                    (entget e)
                            ) ;_  mapcar
                     ) ;_  apply
           ) ;_  setq
      ) ;_  and

    (progn
      ;; Установить связь c Excel
      (setq oex (vlax-get-or-create-object "Excel.Application")) ;_ VLA-объект приложение
      (if (null oex) ;_ Если связь не установлена, то аварийно завершить работу
        (progn (alert "Не удается запустить Microsoft Excel") (exit))
      ) ;_ if
      (vlax-put-property oex "Visible" :vlax-true) ;_ сделать Excel видимым
      (setq wkbs (vlax-get-property oex "Workbooks")) ; Указатель семейства Workbooks
      (setq awb (vlax-invoke-method wkbs "Add")) ; Создать новую книгу и получить указатель книги
      (setq mainsh (vlax-get-property awb "ActiveSheet")) ; Указатель на активный лист

      ;; запись списка
      (setq r 1) ;_ строка
      (foreach n ptl
        (setq c 1) ;_ колонка
        (foreach m n
          (setq cell (vlax-variant-value ; получить указатель на ячейку
                       (vlax-invoke-method
                         mainsh
                         "Evaluate"
                         (strcat (chr (+ 64 c)) (itoa r)) ; номер ячейкм в формате A1
                       ) ;_  vlax-invoke-method
                     ) ;_  vlax-variant-value
          ) ;_  setq
          (vlax-put-property cell "NumberFormat" (vlax-make-variant "0,0000000000" 8)) ; установить формат
          (vlax-put-property cell "Value2" (vlax-make-variant m 5)) ; записать данные
          (vlax-release-object cell) ;_ освободить ячейку
          (setq c (1+ c)) ;_ следующая колонка
        ) ;_  foreach
        (setq r (1+ r)) ;_ следующая строка
      ) ;_  foreach

      (vlax-release-object mainsh) ;_ освободить лист
      (vlax-invoke-method awb "Close" :vlax-true) ; Закрыть книгу
      (vlax-release-object awb) ;_ освободить книгу
      (vlax-release-object wkbs) ;_ освободить семейство книг
;;;          (vlax-invoke-method oex "Quit") ; отключиться и закрыть Excel
      (vlax-release-object oex) ;_ освободить Excel
      (princ "\nФайл Excel необходимо сохранить!")
    ) ;_  progn
    (princ "\nФайл Excel не создан.")
  ) ;_  if
  (princ)
) ;_  defun
(vl-load-com)
vk вне форума  
 
Непрочитано 12.12.2004, 16:02
#9
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Да это совсем не сложно сделать. Могу сделать такой лиспик на днях (если конечно очень надо).
{Smirnoff} вне форума  
 
Непрочитано 12.12.2004, 16:10
#10
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Вижу, что уже есть вариант...
{Smirnoff} вне форума  
 
Непрочитано 13.12.2004, 10:37
#11
Georg

Design
 
Регистрация: 27.10.2004
Kiev
Сообщений: 57


vk
Спасибо все работает
Georg вне форума  
 
Непрочитано 21.12.2004, 19:58
#12
Georg

Design
 
Регистрация: 27.10.2004
Kiev
Сообщений: 57


vk
Сенькс, классый лисп, работает на "5"
Возможно передавать координаты из текущей системы координат, а не из мировой :?:
Georg вне форума  
 
Непрочитано 08.01.2005, 20:12
#13
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


>Georg
Прошу прощения, не заметил сразу вопросик про систему координат.

Конечно можно! Попробуйте чуток поправить этот фрагмент (почти в начале)
Код:
[Выделить все]
                                       (if (= 10 (car el)) 
                                         (list (trans (cdr el) 0 1)) 
                                       ) ;_  if
Не проверял, но вроде должно быть правильно.

PS. Хотя, насчет того что Лисп классный, усомнюсь... Как то сделал на скорую руку, без какой либо оптимизации... Хотя и работает. Кроме того, значительная часть кода позаимствована из известной статьи Н.Полещука о COM-технологии на http://cad.dp.ua
vk вне форума  
 
Непрочитано 12.07.2007, 13:11
#14
PatricK


 
Регистрация: 22.06.2007
Москва
Сообщений: 12
<phrase 1=


А возможен ли обратный перевод из xls в таблицу Автокада 2006???
PatricK вне форума  
 
Непрочитано 12.07.2007, 15:07
#15
VVA

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


1. Atable
2. AutoXlsTable
3. AutoTableX
4. ...
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Экспорт данных из *.dwg в *.txt,*.dbf,*.xls

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