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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание графика в AutoCAD на основе txt или xls файла

Создание графика в AutoCAD на основе txt или xls файла

Ответ
Поиск в этой теме
Непрочитано 08.07.2008, 17:28
Создание графика в AutoCAD на основе txt или xls файла
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,980

Имею txt файл. В нем запись такого содержания
3.2,0.2
9.2,1.5
15.2,-2.8
И так далее подобные строчки.
На основе этого файла надо в AutoCAD создать график.
При этом по оговоренным координатам расставляются блоки с именем “ Отметка графика”, затем эти же точки соединяются полигинией.
График начинается с абсолютной координаты 0,0.
В файле имею так же блок в котором сетка с отметками, думаю его присудствие не должно ни на что повлиять.
Файлик вот такой.ъ
Прошу помочь.
Заранее спасибо если кто ответит.

Вложения
Тип файла: dwg
DWG 2004
Таблицы отклонений.dwg (66.3 Кб, 22955 просмотров)

__________________
Блог

Последний раз редактировалось Red Nova, 17.07.2008 в 16:25.
Просмотров: 78620
 
Непрочитано 07.08.2008, 11:39
#61
Alex II


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


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
нет проблем - добавил свою старенькую функцию чтения из экселя...
Из плюсов - читает экселевские файлы, даже если эксель не установлен.
Если в экселе есть несколько листов, точнее есть данные в нескольких листах, то будет создано несколько графиков, по одному на каждый лист.
Из ограничений - я не парился с адресацией данных в экселе, т.е для отрисовки берутся два первых попавшихся столбца с данными и предполагается, что в них числа...
Pochemuto iz odnogo faila stroit normal'no, a iz drugih pishet: error: bad DXF group: (10 nil nil) i rasstavljajet tol'ko bloki, polylinijej ne sojedinjajet. Ne znajete v chjom delo?
Alex II вне форума  
 
Непрочитано 20.01.2009, 17:15
#62
Nazhul


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


Помогите плиз...
Похожая проблема но (!) имеется файл в котором ряд столбцов (фиксированиое количество 21). Первый столбец - значения по X,
Последующие 20 слобцов - 5 групп по 4 столбца.
X Y1 Y2 Y3 ... Y20
необходимо построить 5 графиков с четымя полилиниями на каждом графике. Координаты каждого графика задаются отдельно.
первый график Y1=f(x), Y2=f(x), Y3=f(x), Y4=f(x)
второй Y5=f(x), Y6=f(x), Y7=f(x), Y8=f(x)
и т. п.
X - общий для всех
Y - по 4 линии на каждый график.
Каждое значение Y подписывается рядом (не имеет значение где хотя лутше если не в точке графика и с задаваемой величиной высоты текста)
Без (!) подключения екселя потому как график передают с другой фирмы где он есть, а на работе у меня нет...
Переганять на 20 графиков неудобно.

Последний раз редактировалось Nazhul, 20.01.2009 в 18:54.
Nazhul вне форума  
 
Непрочитано 20.01.2009, 18:19
#63
-mavlin-


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


Вот есть такая прога http://dwg.ru/dnl/4177
Правда, подписи значений не ставит
-mavlin- вне форума  
 
Непрочитано 20.01.2009, 18:50
#64
Nazhul


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


Смотрел, не получается...
Возможно не понял схему работы...
Опишите какой результат должен дыть после каждой команды или шага.останавливаюсь на "откройте нужный файл в ексель" - а Екселя то нету....
Заранее спасибо...
Подписи данных обязательны.
Nazhul вне форума  
 
Непрочитано 20.01.2009, 20:46
#65
-mavlin-


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


Без экселя програмка работать не будет. И подписи данных она не ставит. Текстовый файл довольно легко можно перегнать в эксель.

Или, как вариант, можно построить графики в экселе (либо в чем-то еще) и вставить их в автокад как OLE-объекты.

Последний раз редактировалось -mavlin-, 20.01.2009 в 20:52.
-mavlin- вне форума  
 
Непрочитано 21.01.2009, 09:36
#66
Nazhul


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


В темке уже была программа которая работает без екселя.
Работает хорошо. Но только по двум слобцам. И не подписывает данные.
Необходимо подкоректировать но как, не знаю.
Nazhul вне форума  
 
Непрочитано 21.01.2009, 20:23
#67
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
Сообщение от Nazhul Посмотреть сообщение
Помогите плиз...
Похожая проблема но (!) имеется файл в котором ряд столбцов (фиксированиое количество 21). Первый столбец - значения по X,
Последующие 20 слобцов - 5 групп по 4 столбца.
X Y1 Y2 Y3 ... Y20
необходимо построить 5 графиков с четымя полилиниями на каждом графике. Координаты каждого графика задаются отдельно.
первый график Y1=f(x), Y2=f(x), Y3=f(x), Y4=f(x)
второй Y5=f(x), Y6=f(x), Y7=f(x), Y8=f(x)
и т. п.
X - общий для всех
Y - по 4 линии на каждый график.
Каждое значение Y подписывается рядом (не имеет значение где хотя лутше если не в точке графика и с задаваемой величиной высоты текста)
Без (!) подключения екселя потому как график передают с другой фирмы где он есть, а на работе у меня нет...
Переганять на 20 графиков неудобно.
Вот программка на VBA, теоретически должна делать то, что вы хотите. (Модуль BrowseForFolder у кого-то передрал). При запуске появляется форма; в верхнем текстбоксе отображается текущая папка (в которой должен находиться файл с координатами графиков), комбобокс ниже - со списком всех текстовых файлов из этой папки. Директория при 1-м запуске - либо та же, где лежит файл dvb, либо корень диска C. При последующих запусках теоретически должны отображаться те папка и файл, которые были выбраны при выходе из программы. Соответствующая кнопка позволяет директорию поменять. При выборе файла в комбобоксе информация с него считывается в массив (21 столбец, строк - произвольное кол-во). Разделители строк - vbcrlf ("enter"), столбцов - те что вбиты в соответствуещее текстовое поле. Кнопка "Создать тестовый файл" создает в текущей директории файл "примера", - произвольное кол-во строк, значения Y из всех столбцов, кроме 1-го (который "x")- случайные числа; разделитель столбцов - из соотв. текстового поля.
Кнопка голубого цвета должна вставлять графики в пр-во модели чертежа (для каждого из 5 графиков нач. точка задается пользователем)
В каждую вершину полилинии вставляется текст с координатой Y, высота текста - из соотв. поля на форме.
При изменении имени файла в комбобоксе можно просмотреть все загрузившиеся координаты в листбоксе (дабы его лицезреть, надо нажать кнопку "\/"). Если в файле, к примеру, меньше 21 столбца, то недостающие значения заменяются 0)
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 1688
Размер:	50.7 Кб
ID:	15008  Нажмите на изображение для увеличения
Название: ____.JPG
Просмотров: 1297
Размер:	90.5 Кб
ID:	15009  
Вложения
Тип файла: rar Grafiki.rar (54.9 Кб, 812 просмотров)
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!

Последний раз редактировалось AlexV, 21.01.2009 в 20:40.
AlexV вне форума  
 
Непрочитано 21.01.2009, 20:31
#68
maximas

проектирование. автоматика
 
Регистрация: 18.10.2007
Литва
Сообщений: 104


может чуть не по теме, но касательно.
Получили как-то чертеж из морского порта, так там в екселе чертеж корабля . т. е. ячейки квадратные, и как пиксели. оооочень удивило, кто нибудь встречал похожее ?
maximas вне форума  
 
Непрочитано 21.01.2009, 23:06
#69
Кулик Алексей aka kpblc
Moderator

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


Даже на форуме где-то выкладывалось, по-моему...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.01.2009, 12:18
#70
Nazhul


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


Суперррр...
Только почему-то остання строка все нули и график замыкается на начало координат...
И еще такое дело.... А возможно задавать максимальное значение высоты графика отнсительно которого будут маштабироватся графики (но не их значания). Напр. Не выше 20 ед.
и как сделать разделитель по умолчанию Tab?

Последний раз редактировалось Nazhul, 22.01.2009 в 13:46.
Nazhul вне форума  
 
Непрочитано 22.01.2009, 13:47
#71
Nazhul


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


Все спасиб ничего менять не нужно сам подправил под свои нужды. Там кнопочки поменял и т.п...
Риспект огромный за помощь.
Осталось только сделать чтобы несколько пробелов считало как 1....

Последний раз редактировалось Nazhul, 22.01.2009 в 14:11.
Nazhul вне форума  
 
Непрочитано 22.01.2009, 21:23
#72
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
Сообщение от Nazhul Посмотреть сообщение
Все спасиб ничего менять не нужно сам подправил под свои нужды. Там кнопочки поменял и т.п...
Риспект огромный за помощь.
Осталось только сделать чтобы несколько пробелов считало как 1....
Несколько пробелов тоже можно задать в текстбоксе. Но правда, разделитель должен быть одинаковый (т.е. если 2
пробела, - то везде 2, если 3 -то 3 и т.д.) Если кол-во пробелов может быть разным, то надо добавить функцию обработки разделителя (я думаю, это не сложно).
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!

Последний раз редактировалось AlexV, 22.01.2009 в 21:30.
AlexV вне форума  
 
Непрочитано 17.04.2009, 14:54
#73
Сергей Дубина


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


Предлагаю сделать следующее:
Вставить данные в эксэль (если они ещё не там), разбить текст по столбцам (если не ошибаюсь разделитель - запятая) в итоге получите несколько столбцов.
В соседнем столбике вбейте формулу ="_point "&A1&","&B1&","&C1
(пример для трёх координат x,y,z) и протяните по всем строчкам. Далее копируется полученное в бувер обмена и вставляется непосредственно в коммандную строку. И никакой высшей математики. Имея навыки работы с акадом эта схема легко адаптируется под другие примитивы. Удачи.
Сергей Дубина вне форума  
 
Непрочитано 17.04.2009, 23:09
#74
-mavlin-


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


Цитата:
Сообщение от Сергей Дубина Посмотреть сообщение
Предлагаю сделать следующее:
Вставить данные в эксэль (если они ещё не там), разбить текст по столбцам (если не ошибаюсь разделитель - запятая) в итоге получите несколько столбцов.
В соседнем столбике вбейте формулу ="_point "&A1&","&B1&","&C1
(пример для трёх координат x,y,z) и протяните по всем строчкам. Далее копируется полученное в бувер обмена и вставляется непосредственно в коммандную строку. И никакой высшей математики. Имея навыки работы с акадом эта схема легко адаптируется под другие примитивы. Удачи.
Пять баллов!!! Молодец!
И не надо никакого лиспа или ВБА
-mavlin- вне форума  
 
Непрочитано 22.04.2009, 09:27
#75
Nazhul


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


А как же с подписями данных???
То что уже доделано проекрасно работает и подписывает координаты эпюр.
Но как вариант просто нарисовать ломаную можно использовать и такой подход канечно...
Nazhul вне форума  
 
Непрочитано 27.03.2011, 20:51
#76
Fynjy87


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


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

Помогите, пожалуйста, решить проблему. Я слегка переделал под свои нужды программу Елпанова Евгения из сообщения #55.
Но оказалось, что она не работает с файлами, которые создает MathCAD при экспорте данных в Excel. Не пойму почему, вроде, формат такой же.
Вот образец файла экселя, который создан маткадом:
http://narod.ru/disk/8570182001/Qn-Hn.rar.html


Проблема отпала, т.к. нашелся способ наладить нормальный вывод из маткада в эксель. Спасибо, если пытались решить эту проблему.


Код:
[Выделить все]
 (defun GET_xl (tbl / ADOCONNECT ADORECORDSET LST)
              ;|
     GET_XL.LSP
     created 21-04-2006
     last edit 19-02-2007
     Created by Elpanov Evgeny
     
     [email protected]
     [email protected]

Data reading from Microsoft Excel not using Excel.
This code, can read diverse data from all tables.

 ARGUMENTS:
 A string containing a complete file name, including the path.
 (setq tbl "D:\\4.xls")

 USAGE:
 (GET_xl tbl)

 RETURN VFALUES
 The list of all pages in a file with all data
|;
 (defun rec-rem-dupl (lst)
  (if lst
   (cons (car lst) (rec-rem-dupl (vl-remove (car lst) (cdr lst))))
  ) ;_  if
 ) ;_  defun
 (setq ADOConnect   (vlax-get-or-create-object "ADODB.Connection")
       ADORecordset (vlax-get-or-create-object "ADODB.Recordset")
 ) ;_  setq
 (if
  (not (vl-catch-all-error-p
        (vl-catch-all-apply
         (function vlax-invoke-method)
         (list ADOConnect
               "Open"
               (strcat "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
                       tbl
                       ";Extended Properties=;Excel 8.0;HDR=No"
               ) ;_  strcat
               "admin"
               ""
               nil
         ) ;_  list
        ) ;_  vl-catch-all-apply
       ) ;_  vl-catch-all-error-p
  ) ;_  not
  (progn (setq
          lst (mapcar
               (function (lambda (l / i c)
                          (vlax-invoke-method
                           ADORecordset
                           "Open"
                           (strcat "SELECT * FROM [" l "]")
                           ADOConnect
                           1
                           3
                           nil
                          ) ;_  vlax-invoke-method
                          (setq i
                                (length
                                 (car (vlax-safearray->list
                                       (vlax-variant-value
                                        (vlax-invoke-method ADORecordset "GetRows" 65535)
                                       ) ;_  vlax-variant-value
                                      ) ;_  vlax-safearray->list
                                 ) ;_  car
                                ) ;_  length
                          ) ;_  setq
                          (vlax-invoke-method ADORecordset "Close")
                          (while (not (zerop i))
                           (vlax-invoke-method
                            ADORecordset
                            "Open"
                            (strcat "SELECT * FROM ["
                                    l
                                    "a"
                                    (itoa i)
                                    ":IV"
                                    (itoa i)
                                    "]"
                            ) ;_  strcat
                            ADOConnect
                            1
                            3
                            nil
                           ) ;_  vlax-invoke-method
                           (setq c (cons
                                    (car
                                     (apply
                                      (function mapcar)
                                      (cons
                                       'list
                                       (mapcar
                                        (function
                                         (lambda (a)
                                          (mapcar
                                           (function (lambda (b) (vlax-variant-value b))
                                           ) ;_  function
                                           a
                                          ) ;_  mapcar
                                         ) ;_  lambda
                                        ) ;_  function
                                        (vlax-safearray->list
                                         (vlax-variant-value
                                          (vlax-invoke-method
                                           ADORecordset
                                           "GetRows"
                                           65535
                                          ) ;_  vlax-invoke-method
                                         ) ;_  vlax-variant-value
                                        ) ;_  vlax-safearray->list
                                       ) ;_  mapcar
                                      ) ;_  cons
                                     ) ;_  apply
                                    ) ;_  car
                                    c
                                   ) ;_  cons
                                 i (1- i)
                           ) ;_  setq
                           (vlax-invoke-method ADORecordset "Close")
                          ) ;_  while
                          (if (equal c '((nil) (nil)))
                           (list l)
                           (cons l c)
                          ) ;_  if
                         ) ;_  lambda
               ) ;_  function
               (mapcar
                (function (lambda (x)
                           (if (= (substr x 1 1) "'")
                            (substr x 2 (- (strlen x) 2))
                            x
                           ) ;_  if
                          ) ;_  lambda
                ) ;_  function
                (rec-rem-dupl
                 (caddr
                  (mapcar
                   (function
                    (lambda (a) (mapcar (function vlax-variant-value) a))
                   ) ;_  function
                   (vlax-safearray->list
                    (vlax-variant-value
                     (vlax-invoke-method
                      (vlax-invoke-method ADOConnect "OpenSchema" 4)
                      "GetRows"
                      65535
                     ) ;_  vlax-invoke-method
                    ) ;_  vlax-variant-value
                   ) ;_  vlax-safearray->list
                  ) ;_  apply
                 ) ;_  caddr
                ) ;_  rec-rem-dupl
               ) ;_  mapcar
              ) ;_  mapcar
         ) ;_  setq
         (vlax-invoke-method ADOConnect "Close")
         (vlax-release-object ADORecordset)
         (vlax-release-object ADOConnect)
         (setq ADORecordset nil
               ADOConnect nil
         ) ;_  setq
         lst
  ) ;_  progn
  (progn
   (vl-catch-all-apply 'vlax-invoke-method (list ADOConnect "Close"))
   (vlax-release-object ADORecordset)
   (vlax-release-object ADOConnect)
   (setq ADORecordset nil
         ADOConnect nil
   ) ;_  setq
   nil
  ) ;_  progn
 ) ;_  if
) ;_  defun

(defun c:gx (/ A B F L)
 ;;пример для экселя...
 (vl-load-com)
 (if (setq f (getfiled "Укажите файл с точками графика" "" "xls" 0))
  (progn
   (setq l (GET_xl f))
   (foreach x (mapcar 'cdr l)
    (if x
     (entmakex
      (append
       (list '(0 . "SPLINE")
             '(100 . "AcDbEntity")
             '(410 . "Model")
         '(8 . "0")
             '(100 . "AcDbSpline")
         '(210 0.0 0.0 1.0)
         '(71 . 3)
       ) ;_  list
       (mapcar
        '(lambda (a)
          (setq a (list 11 (car a) (cadr a)))
          a
         ) ;_  lambda
        x
       ) ;_  mapcar
      ) ;_  append
     ) ;_  entmakex
    ) ;_  if
   ) ;_  foreach
   (princ)
  ) ;_  progn
 ) ;_  if
)

Последний раз редактировалось Fynjy87, 28.03.2011 в 14:05.
Fynjy87 вне форума  
 
Непрочитано 18.11.2011, 17:46
#77
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116


Цитата:
Сообщение от VVA Посмотреть сообщение
Как-то была задача экспортировать точки и их описание из Excell в Автокад. На основе кода, выложенного здесь и опубликованного здесь. К нему прикрутил функцию Алексея graph-by-file-with-poin. Получилось такие команды:
Xl2PT - импорт точек из Excel в Автокад Столбец A - X; B - Y; C - Z; D - описание точки Высота текста - переменная TEXTSIZE
Xl2PL - построение LW полилинии по координатам столбцов A (X) и B (Y)

*** Добавлено
Грузить vlx файл
Доброго дня.
что то поискал и нашел кучу прграмм, но как то не получается у точек проставить описание их.
Подскажите, что не так могу делать?
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Mikhail вне форума  
 
Непрочитано 18.11.2011, 18:16
#78
VVA

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


Цитата:
Сообщение от Mikhail Посмотреть сообщение
Доброго дня.
что то поискал и нашел кучу прграмм, но как то не получается у точек проставить описание их.
Подскажите, что не так могу делать?
Сложно догадаться по 3 строчкам, что делаешь не так. Из Минска СПБ не видно
Посмотри эту программу: Импорт координат из текстового файла txt (sdr csv) в AutoCAD
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.11.2011, 22:06
#79
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от VVA Посмотреть сообщение
Из Минска СПБ не видно
Offtop: Вот он
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 21.11.2011, 09:28
#80
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116


Цитата:
Сообщение от VVA Посмотреть сообщение
Сложно догадаться по 3 строчкам, что делаешь не так. Из Минска СПБ не видно
Спасибо за отклик)
Загружаю GetPointFormExcel.VLX
выбираю файл excel. Точки программа строит, а описание точки из столбца D не ставит.
p.s. а за ссылку на программу спасибо. она в принципе делает, что надо. просто приходится перекидывать из экселя в тхт файл данные.
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.

Последний раз редактировалось Mikhail, 21.11.2011 в 09:49.
Mikhail вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание графика в AutoCAD на основе txt или xls файла

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Растр в AutoCad - внутрь файла. Как? dep AutoCAD 3 10.12.2007 16:38
Одна из целей: Создание экспертных систем на базе AutoCAD. Сергей Юрьевич Программирование 9 01.01.2005 15:17