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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как вывести значения размеров из AutoCAD в Excel или Как пакетно вывести значения размеров из чертежа в таблицу Автокад?

Как вывести значения размеров из AutoCAD в Excel или Как пакетно вывести значения размеров из чертежа в таблицу Автокад?

Ответ
Поиск в этой теме
Непрочитано 24.08.2022, 18:22 #1
Как вывести значения размеров из AutoCAD в Excel или Как пакетно вывести значения размеров из чертежа в таблицу Автокад?
vgvladik3
 
Регистрация: 24.08.2022
Сообщений: 8

Здравствуйте Уважаемые участники форума.

Прежде чем писать свою тему, предварительно я изучил похожие как на данном форуме, так и в интернете.

Ситуация следующая. Есть чертеж с размерами. Необходимо значения размеров с чертежа перенести в файл Excel.

Как это сделать?

Предварительно проработал вопрос и поэтому решением этой проблемы могут быть следующие варианты:
--
1. Как вставить массово (пакетно) размеры из чертежа в таблицу (созданную в Автокад например рядом с чертежом). Если вы мне подскажете как это сделать, то тогда таблица с данными размерами выделяется - Правая кнопка мыши - п.Экспорт и данные можно быстро сохранить в Эксель.

2. Или же есть возможность создать Lisp код для этой процедуры для экспорта напрямую в Эксель. Извлечение данных пробовал, но там нет типа данных "значение размера".

Помогите мне пожалуйста в решении этого вопроса.

Чертеж (пример) самый простой прикрепил к данному сообщению.

Вложения
Тип файла: dwg
DWG 2018
Чертеж1.dwg (40.8 Кб, 34 просмотров)

Просмотров: 4857
 
Непрочитано 24.08.2022, 18:51
#2
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,779


_dataextraction
engngr вне форума  
 
Автор темы   Непрочитано 24.08.2022, 18:53
#3
vgvladik3


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


Цитата:
Сообщение от engngr Посмотреть сообщение
_dataextraction
А можно подробнее?

----- добавлено через ~3 мин. -----
_dataextraction - так это то же извлечение данных, только вызывается через командную строку, а не через кнопку.
vgvladik3 вне форума  
 
Непрочитано 24.08.2022, 18:56
#4
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,112


Извлечение данных тс пробовал. Не смотрел чертеж...
Если можно параметризировать, то почему бы не рассмотреть обратную задачу - построение обьекта по параметрам из эксель, или же, если совсем простой объект - динблоками.
v.psk вне форума  
 
Автор темы   Непрочитано 24.08.2022, 19:00
#5
vgvladik3


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


А если чертеж вот такой (смотри прикрепленный рисунок) и нужно выполнить извлечение размеров?
Миниатюры
Нажмите на изображение для увеличения
Название: Clip2net_220824185831.png
Просмотров: 184
Размер:	199.2 Кб
ID:	249401  
vgvladik3 вне форума  
 
Непрочитано 24.08.2022, 19:10
#6
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,112


Хорошо.... А для чего? Может так удастся что полезное подсказать....
Будет куча чисел к примеру на выходе.... Что с ними делать?
v.psk вне форума  
 
Непрочитано 24.08.2022, 19:13
#7
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,779


Цитата:
Сообщение от vgvladik3 Посмотреть сообщение
Извлечение данных пробовал, но там нет типа данных "значение размера".
Тогда поразбивать размеры к *матери и извлечь тексты. Люди без фантазии пошли какие-то.
engngr вне форума  
 
Непрочитано 24.08.2022, 19:19
#8
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,112


Если подключить экстрасенсорику.....
Может быть требуется ведомость отделки помещений сделать?
v.psk вне форума  
 
Непрочитано 24.08.2022, 20:38
#9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,040


Цитата:
Сообщение от vgvladik3 Посмотреть сообщение
Или же есть возможность создать Lisp код для этой процедуры для экспорта напрямую в Эксель. Извлечение данных пробовал, но там нет типа данных "значение размера".
ну ничто не мешает из экселя по COM выгрести данные:
Код:
[Выделить все]
  Dim lAcadApp As AcadApplication
  Set lAcadApp = GetObject(, "AutoCAD.Application")
  Dim lCurrDoc As AcadDocument
  Set lCurrDoc = lAcadApp.ActiveDocument
  Dim lSS As AcadSelectionSet
  On Error Resume Next
  Set lSS = lCurrDoc.SelectionSets("DIMSS")
  If (Err.Number = 0) Then
    lSS.Clear
  Else
    Set lSS = lCurrDoc.SelectionSets.Add("DIMSS")
  End If
  On Error GoTo 0
  Dim lCode(0 To 1) As Integer
  Dim lData(0 To 1) As Variant
  lCode(0) = 0: lData(0) = "Dimension"
  lCode(1) = 67: lData(1) = "0"
  lSS.Select acSelectionSetAll, , , lCode, lData
  Dim I1 As Long, lODim As AcadObject, lDValue As String
  For I1 = 0 To lSS.Count - 1
    Set lODim = lSS(I1)
    lDValue = vbNullString
    If (TypeOf lODim Is AcadDimAngular) Then
      lDValue = lODim.Measurement * 360 / (2 * 3.14159265358979)
    End If
    If ((lDValue = vbNullString) And (TypeOf lODim Is AcadDimRotated)) Then
      lDValue = lODim.Measurement
    End If
    If ((lDValue = vbNullString) And (TypeOf lODim Is AcadDimAligned)) Then
      lDValue = lODim.Measurement
    End If
    MsgBox lDValue
  Next I1
  Set lCurrDoc = Nothing
  Set lAcadApp = Nothing
если нужно отображение как на экране - см. системные переменные DIMDEC, DIMADEC, DIMAUNIT, DIMRND. Только что потом с этими циферками то будете делать, действительно...)
Сергей812 вне форума  
 
Автор темы   Непрочитано 24.08.2022, 20:45
#10
vgvladik3


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну ничто не мешает из экселя по COM выгрести данные:
Код:
[Выделить все]
  Dim lAcadApp As AcadApplication
  Set lAcadApp = GetObject(, "AutoCAD.Application")
  Dim lCurrDoc As AcadDocument
  Set lCurrDoc = lAcadApp.ActiveDocument
  Dim lSS As AcadSelectionSet
  On Error Resume Next
  Set lSS = lCurrDoc.SelectionSets("DIMSS")
  If (Err.Number = 0) Then
    lSS.Clear
  Else
    Set lSS = lCurrDoc.SelectionSets.Add("DIMSS")
  End If
  On Error GoTo 0
  Dim lCode(0 To 1) As Integer
  Dim lData(0 To 1) As Variant
  lCode(0) = 0: lData(0) = "Dimension"
  lCode(1) = 67: lData(1) = "0"
  lSS.Select acSelectionSetAll, , , lCode, lData
  Dim I1 As Long, lODim As AcadObject, lDValue As String
  For I1 = 0 To lSS.Count - 1
    Set lODim = lSS(I1)
    lDValue = vbNullString
    If (TypeOf lODim Is AcadDimAngular) Then
      lDValue = lODim.Measurement * 360 / (2 * 3.14159265358979)
    End If
    If ((lDValue = vbNullString) And (TypeOf lODim Is AcadDimRotated)) Then
      lDValue = lODim.Measurement
    End If
    If ((lDValue = vbNullString) And (TypeOf lODim Is AcadDimAligned)) Then
      lDValue = lODim.Measurement
    End If
    MsgBox lDValue
  Next I1
  Set lCurrDoc = Nothing
  Set lAcadApp = Nothing
если нужно отображение как на экране - см. системные переменные DIMDEC, DIMADEC, DIMAUNIT, DIMRND. Только что потом с этими циферками то будете делать, действительно...)
А как мне этот код подключить к Автокад?

----- добавлено через 33 сек. -----
Цитата:
Сообщение от v.psk Посмотреть сообщение
Если подключить экстрасенсорику.....
Может быть требуется ведомость отделки помещений сделать?
Знакомый попросил именно так сделать.

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от engngr Посмотреть сообщение
Тогда поразбивать размеры к *матери и извлечь тексты. Люди без фантазии пошли какие-то.
Я видел данный совет в интернете, но так как слоев на чертеже очень много, данное решение представляется громоздким. Извлекать данные нужно постоянно. Хотелось бы так сделать - на кнопочку нажал - выделил нужные размеры - правая кнопка мыши - и значения размеров в экселе. Что нибудь в этом роде.
vgvladik3 вне форума  
 
Непрочитано 24.08.2022, 20:57
#11
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,040


Цитата:
Сообщение от vgvladik3 Посмотреть сообщение
А как мне этот код подключить к Автокад?
никак, он сам подключиться. А код размещается в модуле книги excel (при этом в редакторе Tools->References и подключить сборку AutoCAD XXXX Type Library) и сохраняется как книга с макросами, либо можно как надстройку. Это лишь работающий пример, а там сами уже дотачивайте под требуемый функционал.

----- добавлено через ~4 мин. -----
а в фильтрацию можно и слои добавить. Сейчас выгребает все размеры с пространства модели без разбора.
Сергей812 вне форума  
 
Непрочитано 25.08.2022, 04:49
#12
name02


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


Вот держи лисп D2X.lsp
Выделяешь размеры, жмешь Enter - открывается Excel со значениями выделенных размеров записанными в столбец
name02 вне форума  
 
Автор темы   Непрочитано 25.08.2022, 12:06
#13
vgvladik3


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


Цитата:
Сообщение от name02 Посмотреть сообщение
Вот держи лисп Вложение 249403
Выделяешь размеры, жмешь Enter - открывается Excel со значениями выделенных размеров записанными в столбец
Потрясающе. Великолепно. Да, получается очень просто.

И теперь еще один момент. Ваш Lisp код экспортирует данные значения размера, то есть данные из свойства "Величина размера".

А вы можете сделать в вашем коде переключение на экспорт данных из свойства "Текстовая строка". В это свойство помещается рандомное значение размера, которое вставляется через Lisp код GeoRandom, который в свою очередь генерирует это рандомное значение размера, основываясь на предварительно заданном диапазоне и исходном значении размера.

Можно так сделать?

----- добавлено через 55 сек. -----
Смотрите скриншот с пояснениями
Миниатюры
Нажмите на изображение для увеличения
Название: Свойство - Текстовая строка.jpg
Просмотров: 128
Размер:	256.1 Кб
ID:	249417  
vgvladik3 вне форума  
 
Непрочитано 25.08.2022, 12:13
#14
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,112


Цитата:
Сообщение от vgvladik3 Посмотреть сообщение
который в свою очередь генерирует это рандомное значение размера,
и всё-таки исполнительная, видимость работы)
v.psk вне форума  
 
Автор темы   Непрочитано 25.08.2022, 12:17
#15
vgvladik3


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


Цитата:
Сообщение от v.psk Посмотреть сообщение
и всё-таки исполнительная, видимость работы)
Да, вы правы.

Цитата:
Сообщение от v.psk Посмотреть сообщение
и всё-таки исполнительная, видимость работы)
Да, вы правы

Последний раз редактировалось Кулик Алексей aka kpblc, 25.08.2022 в 12:46.
vgvladik3 вне форума  
 
Непрочитано 25.08.2022, 13:30
#16
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,112


Цитата:
Сообщение от vgvladik3 Посмотреть сообщение
Да, вы правы
ну тогда мало ли пригодится....
лисп, рандомно меняющий значение в тексте, до указанной амплитуды... не помню где брал
Вложения
Тип файла: lsp tr2.lsp (2.5 Кб, 29 просмотров)
v.psk вне форума  
 
Автор темы   Непрочитано 25.08.2022, 15:05
#17
vgvladik3


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


Цитата:
Сообщение от v.psk Посмотреть сообщение
лисп, рандомно меняющий значение в тексте, до указанной амплитуды... не помню где брал
Ваш лисп у меня не работает. На просторах интернета я нашел и другое исполнение данной задачи.
Я говорю, отличное решение это GeoRandom - хоть и платное, но очень круто сделано. И кроме рандомных размеров там еще есть ряд лисп кодов которые решают другие задачи.
Сейчас нужно доработать экспорт текстовой строки каждого размера
vgvladik3 вне форума  
 
Непрочитано 25.08.2022, 16:49
#18
name02


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


Цитата:
Сообщение от vgvladik3 Посмотреть сообщение
А вы можете сделать в вашем коде переключение
Код не мой, я его нашел в интернете, минут за 15...
Но вот переделанный вариант - D2X.lsp
Чтобы экспортировать действительный размеры в командной строке набрать
(D2X 0)

, чтобы переписанные вручную
(D2X 1)

Набирать нужно обязательно со скобками!
name02 вне форума  
 
Непрочитано 25.08.2022, 17:27
#19
Кулик Алексей aka kpblc
Moderator

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


Если надо только выводить (причем сейчас одно, завтра другое) - то как вариант, накидал по-быстрому
Код:
[Выделить все]
 (defun c:dim-to-csv (/ selset file)
                  ;|
  *    Выводит все значения выбранных размеров в csv-файл
  |;

  (if (and (= (type (setq selset (vl-catch-all-apply (function (lambda () (ssget '((0 . "DIM*"))))))))
              'pickset
           ) ;_ end of =
           (setq file (getfiled "Файл результата" "" "csv" 1))
           (/ file "")
      ) ;_ end of and
    (progn
      (setq selset (mapcar (function (lambda (x)
                                       (setq x (vlax-ename->vla-object x))
                                       (cons (vl-princ-to-string (vla-get-measurement x))
                                             (if (= (vla-get-textoverride x) "")
                                               "-"
                                               (vla-get-textoverride x)
                                             ) ;_ end of if
                                       ) ;_ end of cons
                                     ) ;_ end of lambda
                           ) ;_ end of function
                           ((lambda (/ tab item)
                              (repeat (setq tab  nil
                                            item (sslength selset)
                                      ) ;_ end setq
                                (setq tab (cons (ssname selset (setq item (1- item))) tab))
                              ) ;_ end repeat
                            ) ;_ end of lambda
                           )
                   ) ;_ end of mapcar
            handle (open file "w")
      ) ;_ end of setq
      (foreach item selset
        (write-line (strcat (car item) ";" (cdr item)) handle)
      ) ;_ end of foreach
      (close handle)
    ) ;_ end of progn
  ) ;_ end of if
) ;_ end of defun
Вывод в csv файл, разделитель ";". Если размер не переопределен, во второй колоне будет стоять "-".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.08.2022, 18:25
#20
vgvladik3


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


Цитата:
Сообщение от name02 Посмотреть сообщение
Код не мой, я его нашел в интернете, минут за 15...
Но вот переделанный вариант - Вложение 249421
Чтобы экспортировать действительный размеры в командной строке набрать
(D2X 0)

, чтобы переписанные вручную
(D2X 1)

Набирать нужно обязательно со скобками!
Огромная благодарность вам за помощь. Очень круто, великолепно и просто в использовании. Тему можно закрывать.
vgvladik3 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как вывести значения размеров из AutoCAD в Excel или Как пакетно вывести значения размеров из чертежа в таблицу Автокад?

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести из SCAD текстовые значения армирования наклонных пластин в Autocad? nickname2019 SCAD 8 27.01.2021 11:41
Ломается форматирование таблицы AutoCad при обновлении данных из Excel _MUAY_THAI_ AutoCAD 15 27.06.2016 13:35
Hp laserjet 5035 MFP смещение чертежа на формате A3 при печати из Autocad 2011 и 2013 merdoc2003 AutoCAD 6 18.04.2013 23:59
Выгрузка данных SQL server в значения атрибутов блоков Autocad Cosmosila Прочее. Программное обеспечение 14 05.03.2013 13:04
Как разместить огромную таблицу Excel в автокад (ведомость трубопроводов)? Madogg AutoCAD 26 24.06.2012 21:18