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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > перенос данных и автокада в эксель

перенос данных и автокада в эксель

Ответ
Поиск в этой теме
Непрочитано 30.06.2009, 11:59
перенос данных и автокада в эксель
evg76
 
Регистрация: 25.02.2009
Сообщений: 82

Добрый день уважаемые !!!
Есть вопрос.
существует программка в лиспе по формированию координат в txt файл и геоданных в поле автокада, можно ли перетащить данные в эксель и так как это сделано в прилагаемом файле.
даннные в xls. файле были сделаны в vba(работает из пд экселя) но прога сырая и не всегда работает

либо же прикрутить lisp+vba

Вложения
Тип файла: zip дискета.zip (74.5 Кб, 222 просмотров)

Просмотров: 11529
 
Автор темы   Непрочитано 03.07.2009, 08:30
#21
evg76


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


тогда надо команды менять а то 2 лиспа по одной команде.....
evg76 вне форума  
 
Непрочитано 03.07.2009, 11:13
#22
Олег (jr.)

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


Цитата:
Сообщение от evg76 Посмотреть сообщение
тогда надо команды менять а то 2 лиспа по одной команде.....
Господи так поменяй в моем лиспе к примеру в начале
Код:
[Выделить все]
(defun C:MDE (....)
- типа Межевые Данные в Эксель или
как оно там у вас называется

~'J'~

Поскольку тема заинтересовала, судя по числу просмотров,
добавляю программу для чтения координат и
вставки полилинии в рисунок с возможностью
выбора диапазона на листе Эксель интерактивно:

Код:
[Выделить все]
(vl-load-com)

(defun C:PX (/ acapp acsp adoc aexc cel col cols coords csht
	       item nwb points poly rang result row rows sht tmp wbks)
(setq aexc (vlax-get-or-create-object "Excel.Application")
      wbks (vlax-get-property aexc "Workbooks")
      nwb  (vlax-invoke-method wbks "Open" "C:\\File excel.xls");;<--change file name here
      sht  (vlax-get-property nwb "Sheets")
      csht (vlax-get-property sht "Item" 1)
      )

(vla-put-visible aexc :vlax-true)
(setq rang (vlax-invoke-method
	     (vlax-get-property aexc "Application")
	     "InputBox"
	     "Select Diapazone To Get Coordinates"
	     "Let you get a points"
	     nil
	     nil
	     nil
	     nil
	     nil
	     (vlax-make-variant 8 3))
      )
(setq rang (vlax-variant-value rang)
      )
(setq coords (vlax-get-property rang "Value2")
      )
(setq rows (vlax-get-property (vlax-get-property rang "Rows") "Count")
      )
(setq cols (vlax-get-property
	     (vlax-get-property rang "Columns")
	     "Count")
      )
(setq row 1)
(repeat	rows
  (setq col 1)
  (repeat cols
    (setq cel (vlax-variant-value
		(vlax-get-property
		  (vlax-get-property rang "Cells")
		  "Item"
		  (vlax-make-variant row vlax-vbLong)
		  (vlax-make-variant col vlax-vbLong))))
    (setq item (vlax-variant-value
		 (vlax-get-property cel "Value2"))
	  )
    (setq tmp (cons item tmp)
	  )
    (setq col (1+ col)
	  )
    )
  (setq	points (cons (reverse tmp) points)
	tmp    nil
	row    (1+ row)
	)
  )
(setq points (reverse points)
      points (apply 'append points)
      )

(vl-catch-all-apply
  (function (lambda ()
	      (vlax-invoke-method
		nwb
		"Close" :vlax-false)))
  )

(vl-catch-all-apply
  (function (lambda ()
	      (vlax-invoke-method
		aexc
		"Quit")))
  )
(mapcar	(function (lambda (x)
		    (vl-catch-all-apply
		      (function	(lambda	()
				  (progn
				    (vlax-release-object x)
				    (setq x nil)))))))
	(list rang csht nwb wbks aexc)
	)

(setq
  adoc (vla-get-activedocument
	 (setq acapp (vlax-get-acad-object))
	 )
  )
(if (= 1 (vlax-get-property adoc "Activespace"))
  (setq acsp (vla-get-modelspace adoc))
  (setq acsp (vla-get-paperspace adoc))
  )

(setq poly (vlax-invoke acsp "Add3DPoly" points)
      )
(vla-eval
  acapp
  (strcat
    "ThisDrawing.SetVariable \"USERI1\","
    "MsgBox (\"Close Polyline?\","
    "vbYesNo"
    ",\""
    "Answer this question:"
    "\")"
    )
  )
(if (= 6 (setq result (getvar "USERI1")))
  (vlax-put-property poly "Closed" :vlax-true)
  )
(vla-zoomextents acapp)
  
(gc)
(gc)
(princ)
  )
(prompt "\t\t***\t\nType PX to run program\t***")
(prin1)
Проверено в A2008 и MS Excel2003

~'J'~

Последний раз редактировалось Олег (jr.), 03.07.2009 в 12:59. Причина: добавлен код
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 03.07.2009, 16:07
#23
evg76


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


не сочти за наглость
у меня в 2005 асаde выскочило
; error: bad argument type: VLA-OBJECT :vlax-false
или я чето не тоделаю
evg76 вне форума  
 
Непрочитано 03.07.2009, 19:37
#24
Олег (jr.)

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


Цитата:
Сообщение от evg76 Посмотреть сообщение
не сочти за наглость
у меня в 2005 асаde выскочило
; error: bad argument type: VLA-OBJECT :vlax-false
или я чето не тоделаю
Когда откроется файл Эксель с диалогом сначала нужно
выбрать диапазон с координатами - 2 или 3 столбца
затем кликнуть ОК
Добавил для LWPOLYLINE

Код:
[Выделить все]
(vl-load-com)

(defun C:PX (/ acapp acsp adoc aexc cel col cols coords csht
	       item nwb points poly rang result row rows sht tmp wbks)
(setq aexc (vlax-get-or-create-object "Excel.Application")
      wbks (vlax-get-property aexc "Workbooks")
      nwb  (vlax-invoke-method wbks "Open" "C:\\File excel.xls");;<--change file name here
      sht  (vlax-get-property nwb "Sheets")
      csht (vlax-get-property sht "Item" 1)
      )

(vla-put-visible aexc :vlax-true)
(setq rang (vlax-invoke-method
	     (vlax-get-property aexc "Application")
	     "InputBox"
	     "Select Diapazone To Get Coordinates"
	     "Let you get a points"
	     nil
	     nil
	     nil
	     nil
	     nil
	     (vlax-make-variant 8 3))
      )
(setq rang (vlax-variant-value rang)
      )
(setq coords (vlax-get-property rang "Value2")
      )
(setq rows (vlax-get-property (vlax-get-property rang "Rows") "Count")
      )
(setq cols (vlax-get-property
	     (vlax-get-property rang "Columns")
	     "Count")
      )
(setq row 1)
(repeat	rows
  (setq col 1)
  (repeat cols
    (setq cel (vlax-variant-value
		(vlax-get-property
		  (vlax-get-property rang "Cells")
		  "Item"
		  (vlax-make-variant row vlax-vbLong)
		  (vlax-make-variant col vlax-vbLong))))
    (setq item (vlax-variant-value
		 (vlax-get-property cel "Value2"))
	  )
    (setq tmp (cons item tmp)
	  )
    (setq col (1+ col)
	  )
    )
  (setq	points (cons (reverse tmp) points)
	tmp    nil
	row    (1+ row)
	)
  )
(setq points (reverse points))
(if (= 3 (length (car points)))
  (setq flag t)
  (setq flag nil)
  )
(setq points (apply 'append points)
      )

(vl-catch-all-apply
  (function (lambda ()
	      (vlax-invoke-method
		nwb
		"Close" :vlax-false)))
  )

(vl-catch-all-apply
  (function (lambda ()
	      (vlax-invoke-method
		aexc
		"Quit")))
  )
(mapcar	(function (lambda (x)
		    (vl-catch-all-apply
		      (function	(lambda	()
				  (progn
				    (vlax-release-object x)
				    (setq x nil)))))))
	(list rang csht nwb wbks aexc)
	)

(setq
  adoc (vla-get-activedocument
	 (setq acapp (vlax-get-acad-object))
	 )
  )
(if (= 1 (vlax-get-property adoc "Activespace"))
  (setq acsp (vla-get-modelspace adoc))
  (setq acsp (vla-get-paperspace adoc))
  )
  
(if flag
(setq poly (vlax-invoke acsp "Add3DPoly" points)
      )
(setq poly (vlax-invoke acsp "AddLightWeightPolyline" points)
      )
  )
(vla-eval
  acapp
  (strcat
    "ThisDrawing.SetVariable \"USERI1\","
    "MsgBox (\"Close Polyline?\","
    "vbYesNo"
    ",\""
    "Answer this question:"
    "\")"
    )
  )
(if (= 6 (setq result (getvar "USERI1")))
  (vlax-put-property poly "Closed" :vlax-true)
  )
(vla-zoomextents acapp)
  
(gc)
(gc)
(princ)
  )
(prompt "\t\t***\t\nType PX to run program\t***")
(prin1)
Простейший способ найти кокретную ошибку - это
загрузить код в редактор, добавить в самом конце
имя команды в скобках - в данном случае (C:PX)
там же в редакторе в меню Tools --> Load Text in Editor
загружаешь код на выполнение
Если выскочит ошибка ее можно посмотреть выделенной
в конкретной строке после того как в меню Debug нажать
Last Debug Source
Обычно я перед этим ставлю галочку на Break on Error
в меню Debug
~'J'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 06.07.2009, 08:59
#25
evg76


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


или у меня руки кривые новыдает.
; error: unsupported argument type: nil
evg76 вне форума  
 
Непрочитано 06.07.2009, 12:52
#26
Олег (jr.)

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


Цитата:
Сообщение от evg76 Посмотреть сообщение
или у меня руки кривые новыдает.
; error: unsupported argument type: nil
На какой строке?
Вслепую ниего не могу сказать

~'J'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 06.07.2009, 13:33
#27
evg76


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


в атокаде.
в экселе при запросе набираю A1;B1, эксел закрывается и в атокаде показывается строчка. Эксел в результате пустой.
evg76 вне форума  
 
Непрочитано 06.07.2009, 16:28
#28
Олег (jr.)

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


Цитата:
Сообщение от evg76 Посмотреть сообщение
в атокаде.
в экселе при запросе набираю A1;B1, эксел закрывается и в атокаде показывается строчка. Эксел в результате пустой.
В Экселе не надо ничего набирать - ты должен крестообразным курсором
только выделить нужный прямоугольный диапазон и нажать кнопку ОК


~'J'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 23.07.2009, 08:29
#29
evg76


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


при наличии 2 объектов нумерация начинается с 1 это не есть гуд
evg76 вне форума  
 
Непрочитано 28.07.2009, 21:43
#30
Олег (jr.)

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


Цитата:
Сообщение от evg76 Посмотреть сообщение
Добрый день уважаемые !!!
Есть вопрос.
существует программка в лиспе по формированию координат в txt файл и геоданных в поле автокада, можно ли перетащить данные в эксель и так как это сделано в прилагаемом файле.
даннные в xls. файле были сделаны в vba(работает из пд экселя) но прога сырая и не всегда работает

либо же прикрутить lisp+vba
Окончательный вариант записи в Эксель - если кому интересно

~'J'~
Вложения
Тип файла: lsp meva_v2.LSP (22.2 Кб, 113 просмотров)
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 14.08.2009, 14:07
#31
evg76


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


спасибки усе как надо.
а как насчет того чтобы склеить 2 лиспа в один или в последнем придумать с нумерацией
evg76 вне форума  
 
Автор темы   Непрочитано 29.10.2013, 14:55
#32
evg76


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


а можно ли это все заточить под автокад 12 и 10 офис
evg76 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > перенос данных и автокада в эксель



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос настроек Автокада МАА AutoCAD 14 08.06.2011 21:30
Перенос данных из таблицы Автокада в Excel - дубль2 Таня. AutoCAD 1 02.03.2009 16:08
Перенос таблицы Автокада в ... RSD AutoCAD 4 31.07.2006 15:43