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

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

Передача данных из Excel в контекст текста в Autocad

Ответ
Поиск в этой теме
Непрочитано 02.02.2011, 01:33 #1
Передача данных из Excel в контекст текста в Autocad
rass
 
Конструктор
 
Киев
Регистрация: 22.03.2007
Сообщений: 94

Здравствуйте!

Задача такая. Есть файл Excel, где в ячейках хрянятся данные, которые должны быть считаны при открытии фаила Autocad и вставленный в существующий текст-шаблон.

То есть на примере:
в Экселе в ячейках указаны отметки высот: допустим в
в первой ячейке 5.0м
во второй - 10.0м
в третьей - 15.0м

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

Аналог такой процедуры есть между Excel и Word, через слияние их фаилов и вставки в текст Поля данных MergeField "имя поля" с соответсвующим именем поля. В Автокаде такого Поля нет, а слияние с Эксель идет только в примитиве Таблица (возможно я ошибаюсь)
Просмотров: 15646
 
Непрочитано 02.02.2011, 05:03
#2
trir


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


зато можно в АкАд'е поле может ссылаться на ячейку акадовской таблицы ;=)
trir на форуме  
 
Автор темы   Непрочитано 02.02.2011, 23:13
#3
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 94
<phrase 1=


Цитата:
зато можно в АкАд'е поле может ссылаться на ячейку акадовской таблицы ;=)
а это хотя бы как сделать, через какое поле?
rass вне форума  
 
Непрочитано 02.02.2011, 23:25
#4
bradimava

КЖ
 
Регистрация: 26.03.2010
Moldova, Кишинёв
Сообщений: 57


на сколько я знаю - это надо учить VBA.
если есть другой выход - то я тоже хотел его знать.
bradimava вне форума  
 
Автор темы   Непрочитано 02.02.2011, 23:33
#5
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 94
<phrase 1=


Цитата:
на сколько я знаю - это надо учить VBA.
VBA - учить не надо, так как для своих пользовательских нужд я его успешно использую, просто не хотелось бы так глубоко решать такой вопрос, который легко решен в Ворде и Екселе все через эти самые поля
rass вне форума  
 
Непрочитано 03.02.2011, 00:06
#6
Кулик Алексей aka kpblc
Moderator

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


Offtop: Опять сравнивается теплое с мягким... Ну как можно ставить на одни весы офисный софт и чертежный / проектный?
Не, в Excel можно делать чертежи (и такое извращение я как-то раз наблюдал), и AutoCAD заставлять выполнять несвойственные ему функции - но насколько это логично? Может, стоит задачу пересмотреть, переформулировать и попытаться найти другие пути?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.02.2011, 00:26
#7
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 94
<phrase 1=


Цитата:
Ну как можно ставить на одни весы офисный софт и чертежный / проектный?
Я не пытаюсь сравнивать эти продукты. А просто спрашиваю вариант решения поставленной задачи в автокад, ссылаясь на простоту решения ее в продуктах Офиса, как аналогия для понимания. К тому же оба эти продукта используют Поля.
rass вне форума  
 
Непрочитано 03.02.2011, 00:34
#8
Кулик Алексей aka kpblc
Moderator

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


Поехали, как говорится, "от руды".
  1. Почему именно xls / xlsx, а не csv или txt?

  2. Цитата:
    Сообщение от rass Посмотреть сообщение
    есть текст в контексте которого упоминаются
    Ключевое слово - в контексте. Что под этим подразумевается? Допустим, есть "ячейка" с текстом "5.0 м". Объект однострочного текста "5 м" под "контекст" попадает? А текст в ячейке таблицы, например, "5" - тоже? А если это вообще атрибут (и необязательно это атрибут блока)?
  3. Почему нельзя использовать, например, пользовательские свойства файла и ставить поля, считывающие информацию оттуда?
Одна просьба - не прибегать к аргументам "так исторически сложилось". Все можно исправить и поставить на нормальные рельсы, только времени на это уйдет чуть больше, чем хотелось изначально.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.02.2011, 01:21
#9
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 94
<phrase 1=


Цитата:
Почему именно xls / xlsx, а не csv или txt?
Об этой идее я загорелся именно тогда, когда я открыл присланный мне Вордовский фаил, который ссылался на Екселевский и брал оттуда данные и вставлял в текст используюя Поле MergeField. Изучив, как это происходит в этих двух офисных программах (через слияние и Поля). Так как Автокад тоже использует Поля, то и подумал что это способ можно применить и для связывания Автокада и Эксел. Поэтому - Эксел. К томуже там удобнее вводить числовые и текстовые данные и проводить их сортировку и редактирование, чем скажем txt. А так Эксель не принципиально, если есть другой продукт схожей по удобству с ним и который легко связывается с Автокад, то с удовольствием могу применять и его.

Цитата:
Ключевое слово - в контексте. Что под этим подразумевается?
Контекст - это само тело текста (мультитекста или однострочного текста), то есть сам текст, одно из слов которого считтывается из фаила источник (пока все еще подразумеваю Экселевкий файл).

Цитата:
Объект однострочного текста "5 м" под "контекст" попадает? А текст в ячейке таблицы, например, "5" - тоже?
Попадает все что заненесно в эту ячеку. Атрибуты блоков я не рассматриваю.

Цитата:
Почему нельзя использовать, например, пользовательские свойства файла и ставить поля, считывающие информацию оттуда?
Я так сейчас и использую, но не очень удобно в плане редактирования этих данных, к тому же очень раздражает, что окно свойства фаила не динамичное, то есть нельзя его расширить, для наглядного ввода текста в одну из ячеек. Но пока довольствуюсь этим.
rass вне форума  
 
Непрочитано 03.02.2011, 17:02
#10
trir


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


Поле\Объекты\Формулы\Ячейка

Excel таблицу можно связать с Акадовской командой:
_DATALINK
trir на форуме  
 
Автор темы   Непрочитано 04.02.2011, 07:31
#11
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 94
<phrase 1=


Цитата:
Поле\Объекты\Формулы\Ячейка
Спасибо, trir, действительно работает - можно вставить в текст через Поле значение Автокадовской таблицы, но есть ньюанс вставляются только числовые значения, а у меня есть еще и текстовые значения, которые не воспринимаются и отображаются как #### (№№№№)
Как здесь быть?
Цитата:
Excel таблицу можно связать с Акадовской командой:
_DATALINK
Можно дествительно, но эта команда есть с Втокад 2008, а я работаю в 2007, и еще усугубляет то, что работу принимают в формате 2004. То есть Сохранятся ли эти все функции после сохранения в формате 2004, я не уверен.
rass вне форума  
 
Непрочитано 04.02.2011, 11:07
#12
Petrov-Vodkin


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


Недавно написал себе такую программку:
В папке с чертежами лежит один .txt файл с общими данными для всех чертежей проекта этой папки.
Жмакаете на кнопочку - копируются они в пользовательские свойства файла (summary info), а уж оттуда при помощи полей разлетаются по всему чертежу как и у Вас сейчас.

Это похоже на решение Вашего вопроса, или наличие эксель - дело обязательное?
Petrov-Vodkin вне форума  
 
Автор темы   Непрочитано 04.02.2011, 11:25
#13
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 94
<phrase 1=


Цитата:
Это похоже на решение Вашего вопроса, или наличие эксель - дело обязательное?
Да действительно это мое решение вопроса. Эксел - не обязательно. Можно и в txt вводить данные - там тоже удобно и наглядно это делать. В отличии, как уже писал выше, от окна пользовательских свойств файла.
Буду очень благодарен, если вы вышлите мне вашу программку. И в чем вы ее писали?
rass вне форума  
 
Непрочитано 04.02.2011, 11:52
#14
Petrov-Vodkin


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


Писал на VB.net под 2011 акад, вечером смогу выложить.
Программка крайне примитивная, ибо для моей задачи сложнее и не требовалось.
Файл .txt называется всегда одинаково, для наглядности его и скриншот результатов работы прилагаю.
Вложения
Тип файла: rar Primer_raboty.rar (37.6 Кб, 386 просмотров)
Petrov-Vodkin вне форума  
 
Автор темы   Непрочитано 04.02.2011, 12:00
#15
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 94
<phrase 1=


Цитата:
Писал на VB.net под 2011 акад, вечером смогу выложить.
Программка крайне примитивная, ибо для моей задачи сложнее и не требовалось.
Спасибо большое. Если что, то я ее под свои нужды переделаю, главное чтобы была основа.
rass вне форума  
 
Непрочитано 04.02.2011, 17:06
#16
trir


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


Цитата:
Сообщение от Petrov-Vodkin Посмотреть сообщение
Недавно написал себе такую программку:
В папке с чертежами лежит один .txt файл с общими данными для всех чертежей проекта этой папки.
Жмакаете на кнопочку - копируются они в пользовательские свойства файла (summary info), а уж оттуда при помощи полей разлетаются по всему чертежу как и у Вас сейчас.

Это похоже на решение Вашего вопроса, или наличие эксель - дело обязательное?
А чем вас RTEXT не устраивает?
trir на форуме  
 
Автор темы   Непрочитано 04.02.2011, 18:10
#17
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 94
<phrase 1=


Цитата:
А чем вас RTEXT не устраивает?
Интересная команда! не знал про такую. Здорово вставляет txt фаил в Автокад, сохраняя взаимосвязь с этим фаилом, но к моей задаче не очень подходит, так как у меня текст-шаблон есть в автокаде, а в нем уже меняется "слово-переменная", которое может быть различной длиной, что в следствии влияет на общее форматирование текста.
Если "слово-шаблон" сделать отделным элементом текста через RTEXT, то в разных случаях полетит общее форматирование текста идущее после "Слова-переменной". К тому же прийдется создавать несколько отделных фаилов ТХТ для разных Слов-переменных.
Но команда интересная, и какое нибудь применение я потом ей найду. Спасибо!
rass вне форума  
 
Непрочитано 04.02.2011, 18:49
#18
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Да не мудрите ради бога.....
Комманда TABLE, в диалоге выбрать From a data link, кликнуть по квадратику рядом с кнопочкой, появится новое диалоговое окно, кликнуть по Create a new Data Link ну и тд.
__________________
Сквозь тернии к звездам.... и обратно :yes:
Startrek вне форума  
 
Непрочитано 04.02.2011, 19:14
#19
Petrov-Vodkin


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


Выкладываю, как и обещал. Использую в работе каждый день, всё фунциклирует, но будьте бдительны - я в .net новичок .
Код:
[Выделить все]
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Microsoft.VisualBasic.FileIO.FileSystem

Public Class MySummaryInfo
    <CommandMethod("setCustomProp")> _
    Public Sub setCustomProperties()

        Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
        Dim acCurDb As Database = Application.DocumentManager.MdiActiveDocument.Database
        Dim SummaryLocation As String 'полный путь к файлу ProjektInfo.txt
        Dim CurrentDir As String

        CurrentDir = GetParentPath(acDoc.Name)  'адрес папки с открытым чертежом

        If CurrentDir = "" Then
            MsgBox("Сохраните чертеж и попробуйте еще раз")
            Exit Sub
        Else
            SummaryLocation = CombinePath(CurrentDir, "ProjektInfo.txt") 'полный путь к файлу ProjektInfo.txt
        End If

        If System.IO.File.Exists(SummaryLocation) = True Then 'если в папке с чертежом существует файл ProjektInfo.txt, то...

            Dim Чтение As New System.IO.StreamReader(SummaryLocation, System.Text.ASCIIEncoding.GetEncoding(1251))
            Dim Значение(10) As String  'одномерный массив значений пользов. свойств
            Dim i As Integer = 1

            Do While Чтение.Peek <> -1  'считываем строки пока не наткнемся на конец файла
                Значение(i) = Чтение.ReadLine
                i = i + 1
                If i > 10 Then Exit Do
            Loop
            Чтение.Close()

            Try
                Dim SummaryInfoBuilder As DatabaseSummaryInfoBuilder = New DatabaseSummaryInfoBuilder
                SummaryInfoBuilder.CustomPropertyTable.Item("Номер проекта") = Значение(1)
                SummaryInfoBuilder.CustomPropertyTable.Item("Название объекта") = Значение(2)
                SummaryInfoBuilder.CustomPropertyTable.Item("Инженер") = Значение(3)
                SummaryInfoBuilder.CustomPropertyTable.Item("Нормоконтроль") = Значение(4)
                SummaryInfoBuilder.CustomPropertyTable.Item("Раздел проекта") = Значение(5)
                SummaryInfoBuilder.CustomPropertyTable.Item("Организация") = Значение(6)
                SummaryInfoBuilder.CustomPropertyTable.Item("Имя1") = Значение(7)
                SummaryInfoBuilder.CustomPropertyTable.Item("Имя2") = Значение(8)
                SummaryInfoBuilder.CustomPropertyTable.Item("Имя3") = Значение(9)
                SummaryInfoBuilder.CustomPropertyTable.Item("Имя4") = Значение(10)

                acCurDb.SummaryInfo = SummaryInfoBuilder.ToDatabaseSummaryInfo
            Catch ex As Autodesk.AutoCAD.Runtime.Exception
                MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Exception")
            End Try
        Else : MsgBox("Файл ProjektInfo.txt отсутствует в каталоге чертежа")
        End If
    End Sub
End Class
Кому особо надо - могу готовую сборку под 2011 русский автокад выложить.
Цитата:
Сообщение от Startrek Посмотреть сообщение
Да не мудрите ради бога.....
Комманда TABLE, в диалоге выбрать From a data link, кликнуть по квадратику рядом с кнопочкой, появится новое диалоговое окно, кликнуть по Create a new Data Link ну и тд.
Не выйдет. Из экселя в таблицу текст попадет, а полем на него сослаться нельзя , "###" выдаст. Пробовал я уже такие костыли.

Последний раз редактировалось Petrov-Vodkin, 04.02.2011 в 19:26.
Petrov-Vodkin вне форума  
 
Автор темы   Непрочитано 04.02.2011, 19:28
#20
rass

Конструктор
 
Регистрация: 22.03.2007
Киев
Сообщений: 94
<phrase 1=


Цитата:
Комманда TABLE, в диалоге выбрать From a data link
Уважаемый Startrek, никто здесь не мудрит. Во превых я работаю в Акад2007, и у Таблицы не было пока функции From a data link.
Только не предлагайте мне переходить на более поздние версии, у меня параллельно установлен Акад 2010, но политика фирмы в которой я работаю и требования заказчика исключает работу в версиях выше 2007. К тому же мне необходимо вставить данные не в таблицу, а в текст.
Но все же благодарю за внимание.


Цитата:
Не выйдет. Из экселя в таблицу текст попадет, а полем на него сослаться нельзя , "###" выдаст. Пробовал я уже такие костыли.
Абсолютно верно!

Цитата:
Кому особо надо - могу готовую сборку под 2011 русский автокад выложить.
Особо надо ))))

Последний раз редактировалось rass, 04.02.2011 в 19:35.
rass вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Передача данных из Excel в контекст текста в Autocad

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблица из Excel в AutoCAD Elbrus AutoCAD 56 11.06.2012 11:41
LISP. Выравнивание текста по двум точкам. Krieger Готовые программы 10 24.12.2011 16:02
передача данных из AutoLisp в Excel Victorovich LISP 2 03.12.2011 22:28
Как перегнать таблицу из Autocad в файл Excel gizmo_zx Программирование 3 29.12.2009 15:32