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

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

Хочу в автокаде в узлах расчета вставить значения из excel, и чтобы они менялись

Ответ
Поиск в этой теме
Непрочитано 15.01.2015, 13:29 #1
stessi2006
 
проектирование газоснабжения
 
СПб
Регистрация: 04.02.2011
Сообщений: 59

Делаю гидравлический расчет газопроводов.
Есть огромная таблица с расчетами в excel + схема в автокаде.
В узлах на схеме мне надо расставить значения (конечные давления).
Обычно я перепечатываю в каждом узле давление из таблицы вручную.
Часто возникают какие-то изменения, все значения в расчете меняются, надо опять перепечатывать.

Можно как-то вставить ячейку из таблицы excel в автокад (точнее много отдельных ячеек около узлов), чтобы значения в них менялись, когда я в excel изменения происходят?

Красненьким выделено значение конечно давления в узле, вместо этого хочу ячейку вставить.

Миниатюры
Нажмите на изображение для увеличения
Название: 111111111.JPG
Просмотров: 240
Размер:	102.0 Кб
ID:	141978  


Последний раз редактировалось Кулик Алексей aka kpblc, 15.01.2015 в 13:34.
Просмотров: 9097
 
Непрочитано 15.01.2015, 13:36
#2
Кулик Алексей aka kpblc
Moderator

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


Вставляй блоки с атрибутами, потом _.attout, открыть в Excel, изменить значения и обратно _.attin
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.01.2015, 13:57
#3
stessi2006

проектирование газоснабжения
 
Регистрация: 04.02.2011
СПб
Сообщений: 59
Отправить сообщение для stessi2006 с помощью Skype™


Где можно подробнее почитать?
Оч стыдно, но ничего не поняла.
На команды _.attout, _.attin - "неизв. команда"
stessi2006 вне форума  
 
Непрочитано 15.01.2015, 14:04
#4
hudozhnik

Дизайнер/ Проектировщик/ Архитектор/ Инженер =)
 
Регистрация: 01.10.2010
Кронштадт
Сообщений: 179
Отправить сообщение для hudozhnik с помощью AIM


Цитата:
Сообщение от stessi2006 Посмотреть сообщение
Где можно подробнее почитать?
Оч стыдно, но ничего не поняла.
На команды _.attout, _.attin - "неизв. команда"
Это команды из Express Tools - дополнение к стандартному Автокаду.
hudozhnik вне форума  
 
Автор темы   Непрочитано 15.01.2015, 14:09
#5
stessi2006

проектирование газоснабжения
 
Регистрация: 04.02.2011
СПб
Сообщений: 59
Отправить сообщение для stessi2006 с помощью Skype™


Express Tools установила.
Дальше непонятно.

----- добавлено через ~6 мин. -----
В автокаде есть функция "связь с данными" - не поможет?

Последний раз редактировалось stessi2006, 15.01.2015 в 14:34.
stessi2006 вне форума  
 
Непрочитано 15.01.2015, 15:19
1 | #6
skkkk


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


Цитата:
Сообщение от stessi2006 Посмотреть сообщение
В автокаде есть функция "связь с данными" - не поможет?
Поможет, как вариант.
1. Создаем связь с данными. Указываем в ней нужный диапазон в excel.
2. Создаем таблицу на основе этой связи с данными.
3. Создаем поле (_.FIELD). Категория - Объекты, Имя - Ячейка. Указываем нужную ячейку, затем место вставки поля. Тут важно проследить, чтобы на всех этапах формат в ячейке был ЧИСЛОВЫМ!
4. После изменения и сохранения таблицы в excel в Автокаде появится сообщение об этом и предложение обновить связи.
5. Регенерация (_.REGENALL)
Всё.
skkkk вне форума  
 
Непрочитано 15.01.2015, 15:35
1 | #7
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Имя - Ячейка
По-моему, надо формулу выбирать ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.01.2015, 17:41
#8
skkkk


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


Да-да, Формула, и тогда появится кнопка Ячейка. Писал по памяти, прошу прощения
skkkk вне форума  
 
Непрочитано 15.01.2015, 19:36
#9
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 375


Возможно, поможет эта тема http://forum.dwg.ru/showthread.php?p...2&#post1323602
ps Видео из поста #12 https://www.youtube.com/watch?v=wvZV_-xXxks
art_rrc вне форума  
 
Автор темы   Непрочитано 15.01.2015, 20:22
#10
stessi2006

проектирование газоснабжения
 
Регистрация: 04.02.2011
СПб
Сообщений: 59
Отправить сообщение для stessi2006 с помощью Skype™


Как у меня получилось:
1. создаю связь (указываю одну ячейку в excel)
2. создаю таблицу (в параметрах вставки выбираю "на основе связи с данными")

Работает.

Единственное бесит, что ширину столбца не задать.
stessi2006 вне форума  
 
Непрочитано 15.01.2015, 22:56
1 | #11
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 375


Цитата:
Сообщение от stessi2006 Посмотреть сообщение
Единственное бесит, что ширину столбца не задать.
Можно.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 304
Размер:	58.1 Кб
ID:	142015  
art_rrc вне форума  
 
Непрочитано 16.01.2015, 10:30
#12
hudozhnik

Дизайнер/ Проектировщик/ Архитектор/ Инженер =)
 
Регистрация: 01.10.2010
Кронштадт
Сообщений: 179
Отправить сообщение для hudozhnik с помощью AIM


Я так понял все предложенные способы работают при неизменном количестве ячеек в таблице. Потому что, если в середине таблицы, допустим, появится новая ячейка, то связь "поедет".
hudozhnik вне форума  
 
Непрочитано 16.01.2015, 12:14
#13
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 375


Цитата:
Сообщение от hudozhnik Посмотреть сообщение
Я так понял все предложенные способы работают при неизменном количестве ячеек в таблице. Потому что, если в середине таблицы, допустим, появится новая ячейка, то связь "поедет".
Если брать данные напрямую из первоисточника, то да. В таком случае нужно иметь в Ехсе1 дополнительную таблицу данных. И связываться уже с ней, ведь ексель лишен такой проблемы:
Цитата:
Сообщение от hudozhnik Посмотреть сообщение
появится новая ячейка, то связь "поедет".
art_rrc вне форума  
 
Непрочитано 22.01.2015, 12:08
#14
Сергей812


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


Как вариант - можно обновлять мультитекст в AutoCAD из самого Excel. Далее приведен код для Excel!


Код:
[Выделить все]
Option Explicit

' Слой, на котором находятся обновляемые объекты MText
Const cNameLayerUpdateMText As String = "0"

' Получение значения мультитекста по его хэндлу
Private Function GetUpdateText(ByVal aHandle As String) As String
   Dim lCurrRow As Long
   Dim lHandle As String
   lCurrRow = 2
   lHandle = Trim(ActiveWorkbook.ActiveSheet.Cells.Range("A" & CStr(lCurrRow)).Value)
   While (Len(lHandle) > 0)
      If (lHandle = aHandle) Then
         GetUpdateText = Trim(ActiveWorkbook.ActiveSheet.Cells.Range("B" & CStr(lCurrRow)).Value)
         Exit Function
      End If
      lCurrRow = lCurrRow + 1
      lHandle = Trim(ActiveWorkbook.ActiveSheet.Cells.Range("A" & CStr(lCurrRow)).Value)
   Wend
   GetUpdateText = "Error!"
End Function


' Сграбить содержимое мультитекстов
Public Sub GrabberMText()
   Dim lAcadAppObj As AutoCAD.AcadApplication
   Dim lAcadDocObj As AutoCAD.AcadDocument
   On Error GoTo ErrConnectACAD
   Set lAcadAppObj = GetObject(, "AutoCAD.Application")
   On Error GoTo ErrConnectAcadDoc
   Set lAcadDocObj = lAcadAppObj.ActiveDocument
   On Error GoTo ErrGrabberMText
   Dim I1 As Long
   Dim lCountItem As Long
   Dim lCurrRow As Long
   lCurrRow = 1
   Dim lMText As AcadMText
   lCountItem = lAcadDocObj.ModelSpace.Count
   For I1 = 0 To lCountItem - 1
      ' Если мультитекст
      If (lAcadDocObj.ModelSpace.Item(I1).ObjectName = "AcDbMText") Then
         Set lMText = lAcadDocObj.ModelSpace.Item(I1)
         If (lMText.Layer = cNameLayerUpdateMText) Then
            lCurrRow = lCurrRow + 1
            ActiveWorkbook.ActiveSheet.Cells.Range("A" & CStr(lCurrRow)).Value = lMText.Handle
            ActiveWorkbook.ActiveSheet.Cells.Range("B" & CStr(lCurrRow)).Value = lMText.TextString
         End If
         Set lMText = Nothing
      End If
   Next I1
   MsgBox "Мультитекст был успешно сграблен!", vbOKOnly + vbInformation, "Завершено"
   Exit Sub
ErrConnectACAD:
   MsgBox "Не удалось подключиться к AutoCAD!", vbOKOnly + vbCritical, "Ошибка"
   On Error GoTo 0
   Exit Sub
ErrConnectAcadDoc:
   MsgBox "Не удалось получить текущий документ AutoCAD!", vbOKOnly + vbCritical, "Ошибка"
   On Error GoTo 0
   Set lAcadAppObj = Nothing
   Exit Sub
ErrGrabberMText:
   MsgBox "Ошибка в процессе сграбления мультитекста в AutoCAD!", vbOKOnly + vbCritical, "Ошибка"
   On Error GoTo 0
   Set lMText = Nothing
   Set lAcadDocObj = Nothing
   Set lAcadAppObj = Nothing
End Sub


' Обновить содержимое мультитекстов
Public Sub UpdateMText()
   Dim lAcadAppObj As AutoCAD.AcadApplication
   Dim lAcadDocObj As AutoCAD.AcadDocument
   On Error GoTo ErrConnectACAD
   Set lAcadAppObj = GetObject(, "AutoCAD.Application")
   On Error GoTo ErrConnectAcadDoc
   Set lAcadDocObj = lAcadAppObj.ActiveDocument
   On Error GoTo ErrUpdateMText
   lAcadDocObj.StartUndoMark
   Dim I1 As Long
   Dim lCountItem As Long
   Dim lMText As AcadMText
   lCountItem = lAcadDocObj.ModelSpace.Count
   For I1 = 0 To lCountItem - 1
      ' Если мультитекст
      If (lAcadDocObj.ModelSpace.Item(I1).ObjectName = "AcDbMText") Then
         Set lMText = lAcadDocObj.ModelSpace.Item(I1)
         If (lMText.Layer = cNameLayerUpdateMText) Then
            lMText.TextString = GetUpdateText(lMText.Handle)
            lMText.Update
         End If
         Set lMText = Nothing
      End If
   Next I1
   lAcadDocObj.EndUndoMark
   MsgBox "Мультитекст был успешно обновлен!", vbOKOnly + vbInformation, "Завершено"
   Exit Sub
ErrConnectACAD:
   MsgBox "Не удалось подключиться к AutoCAD!", vbOKOnly + vbCritical, "Ошибка"
   On Error GoTo 0
   Exit Sub
ErrConnectAcadDoc:
   MsgBox "Не удалось получить текущий документ AutoCAD!", vbOKOnly + vbCritical, "Ошибка"
   On Error GoTo 0
   Set lAcadAppObj = Nothing
   Exit Sub
ErrUpdateMText:
   MsgBox "Ошибка в процессе обновления мультитекста в AutoCAD!", vbOKOnly + vbCritical, "Ошибка"
   On Error GoTo 0
   Set lMText = Nothing
   Set lAcadDocObj = Nothing
   Set lAcadAppObj = Nothing
End Sub
Естественно, в Excel надо добавить в VBA редакторе: Tools->Reference - ссылки на библиотеки AutoCAD. По сути этот код - своего рода аналог _.attout, _.attin, только для мультитекста.
Сергей812 вне форума  
 
Непрочитано 22.01.2015, 12:35
#15
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Ну всё - код пошёл
А зачем тогда вообще Excel? Пишем код на dotNET, данные храним в XML или БД, а АкАд используем для визуализации...
trir вне форума  
 
Непрочитано 22.01.2015, 13:03
#16
Сергей812


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


Цитата:
Сообщение от trir Посмотреть сообщение
А зачем тогда вообще Excel? Пишем код на dotNET, данные храним в XML или БД, а АкАд используем для визуализации...
Ну если это займет 5..10 минут - то можно и так) Если у человека уже есть какие-то наработки по расчету гидравлики в экселе (насколько понимаю), то их надо бросить и все переделывать под современные технологии?
Сергей812 вне форума  
 
Непрочитано 22.01.2015, 13:29
#17
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Ну не минут, дней. Но зато какой прирост КПД будет! Окупится за один раз!
trir вне форума  
 
Непрочитано 22.01.2015, 13:53
#18
Сергей812


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


Цитата:
Сообщение от trir Посмотреть сообщение
Ну не минут, дней. Но зато какой прирост КПД будет! Окупится за один раз!
Угу. Заказчику-подождите, пожалуйста, дней 5..10. Сроки горят - да ну, какие глупости. Зато потом как за полдня сделаем

Хочется, конечно - чтобы все было реализовано на современных технологиях, с заделом на будущее. Или вообще на вертикальных решениях. Но есть хотелки, а есть доступные средства и время.. и что это скорее всего оплачиваться дополнительно не будет.. поэтому нужно ли делать/покупать профессиональные универсальные решения или обходиться сугубо унитарными решениями именно под свои нужды - каждый решает сам, имхо.
Сергей812 вне форума  
 
Непрочитано 22.01.2015, 16:25
#19
skkkk


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
покупать профессиональные универсальные решения
А если таких просто не существует? Для гидравлики есть еще, конечно, "Гидравлический калькулятор". Но профессиональным его назвать язык не поворачивается. Универсальным... Ну не знаю. Сколько знаю его позакупили, по крайней мере, из моих знакомых, три фирмы, - всё равно все они сидят по-старинке в Автокаде с Экселем. А делать? Конкретно под одну организацию - ей дорого обойдется, а всем не угодить. Еще и методик расчета этой гидравлики - целый воз. Каждый мочит как хочет)). У меня есть куча мыслей, как это всё в разы упростить, но нет катастрофически времени на реализацию.

Удручает более всего то, что приходится работать в разных средах и в каждую из сред заново вводить все исходные данные, прорисовывать трассу. В самых изощренных вариантах данные вообще вводятся каждый раз заново в каждый из сотен (!) документов в Ворде. Хорошо хоть каждый заново, с нуля не печатается - многие в этом видят венец компьютеризации. В общем, пока лично я вижу такую картину: большинство до сих пор используют Автокад просто как электронный кульман. Это, несомненно, прогресс, но прирост скорости в основном только за счет того, что можно легко подтереть что-то раз сто, на размазав грязи на ватмане, да выноски и блоки можно взять из прошлого проекта (шаблона), "чуть" изменив цифры и буквы. В остальном - почти полностью ручной труд. Есть и те, кто пытаются что-то оптимизировать, ищут, внедряют, но Заказчику действительно не объяснишь, почему сроки сорваны, а денег кому-то платить жалко и неоткуда. Эти бедняги ночами и в выходные что-то изобретают, но этого времени мало, и может, на закате карьеры что-то стоящее уже и родится, когда никому это будет уже не нужно... Печаль
skkkk вне форума  
 
Непрочитано 23.01.2015, 09:00
#20
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Цитата:
А если таких просто не существует?
http://www.politerm.com.ru/zuluhydro/index.htm
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Хочу в автокаде в узлах расчета вставить значения из excel, и чтобы они менялись



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Экспертиза расчета металлоконструкций. IBZ Металлические конструкции 555 14.09.2017 18:46
ГОСТы, СНиПы, ПРАВИЛА и т.д. ki Разное 120 19.09.2007 09:05