Jump to content

Вывод 2D массива в файл


MaryMadeleine

Recommended Posts

MaryMadeleine

Доброго времени суток!

 

Знаю, что тема не новая, но нигде толкового ничего найти не могу. Задача простая - есть 2D массив (m x n) элементов, нужно записать его в текстовый файл. Я не понимаю, как пользоваться *MWRITE, поэтому всю жизнь писал в столбик через *VWRITE и потом преобразовывал обратно в матрицу. Подскажите, пожалуйста, как вывести массив в таком же виде в файл? То есть m строк и n столбцов. Можно ли в ANSYS писать значения по одному в строку, чтобы он автоматом не делал перенос строки (*VWRITE все пишет с новой строки)?

 

Я вот так пытался, но получается не пойми-что:

 

*dim,test,array,5,7

*do,i,1,5
*do,j,1,7
test(i,j)=i*7+j
*enddo
*enddo

*create,macro

*vlen,5,7
*mwrite,test,test,txt
(E11.3)
*end

/input,macro

Link to post
Share on other sites


UnPinned posts

Не уверен, что это именно то, что вам нужно, но вот пример макроса:

*CREATE,reaction
*cfopen,Results,txt,,append
*vwrite,Angle,ReactY,ReactZ,MomX,
(F3.0,'  ',F15.5,'  ',F15.5,'  ',F15.5)
*cfclos
*END

Вот результат, который он выдает:

 0.       2513.27412          0.00000          0.00000
 5.       2494.20589        217.95088         -6.57139
10.       2437.58058        429.27943        -13.09276
15.       2345.11871        627.56455        -19.51450
20.       2219.62970        806.78143        -25.78771
25.       2064.92646        961.48467        -31.86467
....

 

Link to post
Share on other sites
MaryMadeleine
9 минут назад, Dandy сказал:

Не уверен, что это именно то, что вам нужно, но вот пример макроса:


*CREATE,reaction
*cfopen,Results,txt,,append
*vwrite,Angle,ReactY,ReactZ,MomX,
(F3.0,'  ',F15.5,'  ',F15.5,'  ',F15.5)
*cfclos
*END

Вот результат, который он выдает:


 0.       2513.27412          0.00000          0.00000
 5.       2494.20589        217.95088         -6.57139
10.       2437.58058        429.27943        -13.09276
15.       2345.11871        627.56455        -19.51450
20.       2219.62970        806.78143        -25.78771
25.       2064.92646        961.48467        -31.86467
....

 

Ну да, это то, о чем я писал: тут руками приходится писать в строку элементы, которые я хочу вывести, т.е. "Angle,ReactY,ReactZ,MomX". Мой вопрос был о том, можно ли вывести вот так же в строчку любое число элементов матрицы, например, n = 1000.

Link to post
Share on other sites
Борман
В 21.10.2020 в 14:52, MaryMadeleine сказал:

*vlen,5,7
*mwrite,test,test,txt
(E11.3)

 

заменить на...

 

*mwrite,test,test,txt
(7E11.3)

 

  • Нравится 1
Link to post
Share on other sites
MaryMadeleine
21 минуту назад, Борман сказал:

*mwrite,test,test,txt (7E11.3)

О, спасибо, это работает. А есть возможность в формат (7E11.3) вместо 7 засунуть параметр?

Link to post
Share on other sites
Борман
5 часов назад, MaryMadeleine сказал:

О, спасибо, это работает. А есть возможность в формат (7E11.3) вместо 7 засунуть параметр?

Наэрно нет.

Link to post
Share on other sites
Борман

Вот чёрт... проще вам попробовать самому врубиться, чем мне объяснять что тут происходит :lighten:

*dim,test,array,5,7

*do,i,1,5
*do,j,1,7
	test(i,j)=i*7+j
*enddo
*enddo

par=7

*cfopen,hack.mac
	s1='*mwrite,test,test,txt'
	*vwrite,s1,par
%c%/(%iE11.3)
*cfclose

*use,hack.mac
/delete,hack.mac

 

  • Нравится 1
  • Хаха 1
Link to post
Share on other sites
В 22.10.2020 в 20:47, Борман сказал:

Наэрно нет.

Есть. Надо просто записать макрос из-под макроса, а потом считать его.

Собственно, что и делается здесь:

В 22.10.2020 в 21:08, Борман сказал:

*dim,test,array,5,7 *do,i,1,5 *do,j,1,7 test(i,j)=i*7+j *enddo *enddo par=7 *cfopen,hack.mac s1='*mwrite,test,test,txt' *vwrite,s1,par %c%/(%iE11.3) *cfclose *use,hack.mac /delete,hack.mac

 

Вот ещё от меня примерчик (как у меня водится, с COM'ом):

/OUTPUT,exec !Начинаем писать в файл

/COM, *MWRITE,fi_x,fi_x,txt,,JIK,n,pts,1 !Записываем сам текст команды MWRITE

/COM, (%n%(1x,E20.13)) !Записываем формат с параметром n

/OUTPUT !Перекидываем вывод обратно в консоль

/INPUT,exec !Считываем полученный макрос

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

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • vad0000
      Экран ЧПУ? ЧПУ DELEM DA65 под DOS?
    • Андрей_NX
      Тонкие (заказывали каталожные), и не было возможности выбрать усиленный ступенчатый. Спасибо за ответы
    • 1240@ukr.net
      там в качестве примеров идут файлы  *.mcam их разве можно открыть в мастеркам 2019? а в версии Х9? я запутался, это разные версии или нет? файлы примеров можно посмотреть в Х9?  
    • BSV1
      Bild сообщила о первом в ФРГ случае увольнения из-за отказа сделать прививку от COVID-19   Думайте сами, решайте сами - иметь или не иметь ...." 
    • Denys8257
      Я знаю,что можно это сделать через бобышку по сечении,но я видел что такую же фигуру делают через бобышку на границе. Возможно я непрвильно выбираю профиля или направления? Или сам эскиз у меня неправильный.
    • Denys8257
      Здравствуйте. У меня проблемка, не могу создать бобышку на границе хотя в эскизе вроде все хорошо. С начала выбираю 2 профиля, потом начинаю выбирать направление, и когда очередь доходит до двух последних линий, то выскакивает ошибка в окне в котором список направлений, либо ошибка при перестраивании.И в результи выходит не то что нужно,а  мне нужно что б были толко плоские грани. Надеюсь на вашу помощь прикрепляю эскиз и скрины. Деталь1.SLDPRT
    • karachun
      В CAD геометрии у цилиндрических отверстий будет две образующих. По двум точкам на одной образующей найдете вектор нормали поверхности а за центр поверхности можете принять среднюю точку между двумя точками на разных образующих. Только и нужно что найти координаты существующих точек и посчитать то что нужно в екселе или маткаде.
    • rasta89
      Спасибо что разжевали! попробую вроде бы все понятно! так точно! https://yadi.sk/d/02ZcA1SWWpBIEA   не знаю мужики, не выходит что-то пока, ошибка
    • AlexKaz
    • karachun
      @rasta89 Вам же вот так нужно? Чтобы по одному цвету на каждое отверстие? Все верно?
×
×
  • Create New...