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

Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > прочитать файл в массив ансиса

прочитать файл в массив ансиса

Ответ
Поиск в этой теме
Непрочитано 18.03.2008, 10:16 #1
прочитать файл в массив ансиса
funny_alex
 
Регистрация: 17.12.2007
Сообщений: 37

файл txt, в котором массив в 4 столбца.
пытаюсь прочитать его в массив и не получается...

NK=1505
*DIM,KOORD,ARRAY,NK,4
*VREAD,KOORD(1,1),UZLI,TXT
(11(F14.7,5X))
Просмотров: 7320
 
Непрочитано 18.03.2008, 10:27
#2
The_Mercy_Seat


 
Сообщений: n/a


Создаете вспомогательный массив
типа
*DIM,AUX,TABLE,1,1,1,
Ваш массив
*DIM,KOORD,ARRAY,NK,4
Читаете в цикле. что то типа этого
Код:
[Выделить все]
*DO,i,1,NK,1 
*TREAD,AUX,'UZLI','txt',' ',i, 
KOORD(i,1,1)=AUX(1)
*ENDDO
*VREAD связан с фортрановским Format-ом, т.е. предъявляет определенные требования к данным. *TREAD считывает любое число.
 
 
Автор темы   Непрочитано 18.03.2008, 10:46
#3
funny_alex


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


ой, по моему ансис заклинило и он не заканчивает считывание, а постоянно считывает и считывает
а этот вспомогательный массив млжно будет использовать еще раз при считвании другого файла или новый создавать?
funny_alex вне форума  
 
Непрочитано 18.03.2008, 10:56
#4
The_Mercy_Seat


 
Сообщений: n/a


да сколько угодно. только я не скажу как например считывать тридом данные из нескольких столбиков. почитайте справку про эту команду.
 
 
Автор темы   Непрочитано 18.03.2008, 10:58
#5
funny_alex


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


все таки закончил, но выдал *TREAD error in data read и то, что получилось в массиве совсем не то, что должно быть
funny_alex вне форума  
 
Непрочитано 18.03.2008, 23:35
#6
Vadique

Проектирование
 
Регистрация: 18.11.2007
Москва
Сообщений: 4


Разделите данные в строках запятыми чтобы не подбирать формат и попробуйте так:
*VREAD,KOORD(1,1),UZLI,TXT,,J,I,K,4,NK,,
(4F100.0)
Прочитайте в хелпе про команду *VREAD. Там разобран синтаксис и есть примеры.
Vadique вне форума  
 
Автор темы   Непрочитано 19.03.2008, 09:25
#7
funny_alex


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


в 1500 строчках запятые ставить?
я прочитала help и до этого считывала файлы, но эти файлы создавал сам ансис, а теперь не получается прочитать файл не созданный ансисом - все время ошибки выдает
funny_alex вне форума  
 
Непрочитано 19.03.2008, 09:45
#8
The_Mercy_Seat


 
Сообщений: n/a


Вы можете прочитать текстовый файл Exceleм или Calcом, там расставить запятые и вообще привести к нужному виду. Можете все таки разобраться с импортом (хотя это и непросто). Я один раз это делал командой *TREAD (в задаче нужно было прочитывать параметры, задаваемые в текстовом файле)- раза со второго или с третьего получилось. Вы напишите что за конкретно стоит задача, что за файлы, которые ансис сам создает и прочитать не может. Все что ему полагается считывать для расчетов (файлы коррдинат узлов, элементов, параметров) - он считывает отдельными функциями. Просто уметь считать абсолютно любой файл - это непросто. Да это и нормальных языках программирования не всегда просто.
 
 
Непрочитано 19.03.2008, 09:46
#9
Александр Бауск

FEA/CAD/МКЭ/САПР
 
Регистрация: 20.03.2007
48,38°:35,03°
Сообщений: 1,056
Отправить сообщение для Александр Бауск с помощью Skype™


>в 1500 строчках запятые ставить?
Find&Replace не поможет?
__________________
Reshaping the STEM field
Александр Бауск вне форума  
 
Автор темы   Непрочитано 19.03.2008, 10:17
#10
funny_alex


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


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

*TREAD тоже пробовала, но почему то заполняются еще и нулевые строчки...
funny_alex вне форума  
 
Непрочитано 19.03.2008, 13:44
#11
The_Mercy_Seat


 
Сообщений: n/a


Не отчаивайтесь. Кто сказал, что все просто...
У вас есть некий файл и вы хотите забить его в массивы ансиса? Командами ансиса надо еще уметь конечно, но всегда есть запасное решение.
1) научитесь импортировать текстовые файлы в Экселе. Раза с третьего получится расставить числы по ячейкам.
2) В экселе можете вставлять между столбцами новые столбцы, генерировать произвольно запятые и т.д.
Пусть у вас есть столбцы
3.2 1.1
5.5 2.4
2.8 9.5
Сделайте из него (добавлением и размножением, в независимости от размеров файла - одно и то же время)
array(1,1,1)=3.2 $ array(1,2,1)=1.1
array(2,1,1)=5.5 $ array(2,2,1)=2.4
array(3,1,1)=2.8 $ array(3,2,1)=9.5

Потом выделяете этот фрагмент книги и тупо вставляете ансису в коммандную строку или в Session Editor.
А если в Экселе еще и скрипт на VBA написать, то можно вообще что угодно сделать.

Последний раз редактировалось The_Mercy_Seat, 19.03.2008 в 13:49.
 
 
Автор темы   Непрочитано 19.03.2008, 14:10
#12
funny_alex


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


хотелось бы все таки, чтобы это все автоматически считывалось...

сделала, чтобы считывалось, когда каждый столбец в отдельном файле, а вот чтоб сразу все в один массив никак не получается.
funny_alex вне форума  
 
Непрочитано 19.03.2008, 14:23
#13
The_Mercy_Seat


 
Сообщений: n/a


Цитата:
Сообщение от funny_alex Посмотреть сообщение
а вот чтоб сразу все в один массив никак не получается.
Т.е. вы хотите универсальное решение для многократного применения?
Если запись в файл не строго форматная (т.е. числа занимают строго определенную позицию в строчке), то я не знаю, можно ли это сделать средствами ансиса вообще.
Практически, если вы сделаете один раз в Экселе, то что я вам описал - в следующий у вас этой займет три минуты.
А пока можете сосредоточится на операциях с массивами, вы же для чего то их создаете ...
 
 
Непрочитано 19.03.2008, 14:57
#14
cyberkolbasa

дискретизатор континуума (бывший)
 
Регистрация: 28.09.2005
Уфа
Сообщений: 299


Вот есть пара примеров на эту тему
Расчет многопролетной балки
Как перегнать сортамент из SCAD/Lira в ANSYS? Последний пример несколько устаревший. Он был сделан мной "на заре коммунизма". Но все же может быть полезен. Я же сейчайс делаю по 1му примеру с некоторыми вариациями. В APDL достаточно простора для фантазии.

PS. Исходные данные как правило готовлю в экселе и сохраняю как текстовый файл с разделителями табуляции.
__________________
я еще не волшебник, я только учусь
cyberkolbasa вне форума  
 
Автор темы   Непрочитано 19.03.2008, 14:58
#15
funny_alex


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


Цитата:
Сообщение от The_Mercy_Seat Посмотреть сообщение
Если запись в файл не строго форматная (т.е. числа занимают строго определенную позицию в строчке), то я не знаю, можно ли это сделать средствами ансиса вообще.
Я перевожу в экселе все числа в экспоненциальный формат. И насколько я понимаю, то если бы все числа были положительные или все отрицательные, то не было бы проблем?

На данный момент, все что я хочу сделать с этим массивом - это посторить по нему кейпойнты, а взяв данные из другого массива, соединить их линиями, так что проблем по операциям с массивами пока нет.
funny_alex вне форума  
 
Непрочитано 19.03.2008, 15:28
#16
novinkov


 
Регистрация: 10.03.2005
Кемерово
Сообщений: 277


Требуется прочитать файл с произвольными разделителями в массив вектор? Может так?
1. Создать массив-таблицу D1 и массив-вектор D2
2. Прочитать файл *TREAD (безформатное чтение) в массив-таблицу D1
3. Конвертировать массив-таблицу в массив-вектор (команда *MFUN,D2(1,1),COPY,D1(0,0)

Последний раз редактировалось novinkov, 19.03.2008 в 15:44.
novinkov вне форума  
 
Непрочитано 19.03.2008, 15:30
#17
The_Mercy_Seat


 
Сообщений: n/a


Цитата:
Сообщение от funny_alex Посмотреть сообщение
Я перевожу в экселе все числа в экспоненциальный формат. И насколько я понимаю, то если бы все числа были положительные или все отрицательные, то не было бы проблем?
.
Честно говоря не помню. Давно не использую. Вся эта фигня растет из фортрановского дурацкого FORMAT-а

Цитата:
Сообщение от funny_alex Посмотреть сообщение
На данный момент, все что я хочу сделать с этим массивом - это посторить по нему кейпойнты, а взяв данные из другого массива, соединить их линиями, так что проблем по операциям с массивами пока нет.
Если у вас это единичная задача (или раз в неделю вы планируете ее решать), то проще вообще сделать безо всяких массивов и ридов - от и до в Экселе.
Переносите текст в Excel
дорабатываете данные там автоматизированным копированием и вставками.
Координаты разделяете запятой, впереди присобачиваете K,
Перед линиями LSTR, (или L, ).
И все.
Несколько механических операций как в тумане и перед вами - код айпидээль.
Просто выделяете нужный фрагмент, нажимаете Ctrl+C
потом открываете текстовый файл и нажимаете Сtrl +v
 
 
Непрочитано 19.03.2008, 15:45
#18
novinkov


 
Регистрация: 10.03.2005
Кемерово
Сообщений: 277


Опробовал пост 16 на файле:
0 0 0
1, -6 4e6
-2.22222 5, 3-03
0 0 0

Вроде работает

Код:
[Выделить все]
d1=
d2=
*dim,d1,table,3,2,
*dim,d2,array,4,3
*tread,d1,uzli,txt
*mfun,d2(1,1),copy,d1(0,0)

Последний раз редактировалось novinkov, 19.03.2008 в 16:13.
novinkov вне форума  
 
Автор темы   Непрочитано 19.03.2008, 17:00
#19
funny_alex


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


Цитата:
Сообщение от The_Mercy_Seat Посмотреть сообщение
Если у вас это единичная задача (или раз в неделю вы планируете ее решать), то проще вообще сделать безо всяких массивов и ридов - от и до в Экселе.
Переносите текст в Excel
ну вот сейчас то массив используется один раз, но в дальнейшем стоит аналогичная задача по считыванию массива и пока еще конкретно неизвестно, что придется с ним делать...Хотелось бы все таки понять как это делается
funny_alex вне форума  
 
Непрочитано 19.03.2008, 21:04
#20
Vadique

Проектирование
 
Регистрация: 18.11.2007
Москва
Сообщений: 4


Чтобы вам помочь конкретнее надо знать что содержит данный файл и предполагаемые в дальнейшем . Выложите его или приведите хотя бы часть массива.
Если форматы чисел в строках не совпадают, например так:

0 0 0 0
10.001 10.001 10.001 10.001

то считать массив командой *VREAD можно только так как я вам написал. Это более или менее универсальный способ. Или пользуйтесь командой *TREAD как уже советовали.
Vadique вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > прочитать файл в массив ансиса



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите открыть файл :-( Tramp AutoCAD 16 12.08.2011 17:25
Файл сохранен тока для просмотра можно ли его редактировать Анальный пират AutoCAD 3 17.02.2008 06:01
непонятный "битый" файл gvs AutoCAD 6 22.02.2007 23:09
После выключения слоя файл не открывается в AutoCAD 2004! sak213 AutoCAD 1 29.08.2006 08:24
Проблема непонятно с чем. АДТ 2005 VG Прочее. Программное обеспечение 3 12.08.2005 11:36