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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > C#. Конвертеры сетки GMSH (*.msh) в FEA для Stark ES и SLI для Лиры

C#. Конвертеры сетки GMSH (*.msh) в FEA для Stark ES и SLI для Лиры

Ответ
Поиск в этой теме
Непрочитано 14.01.2022, 05:05 6 | #1
C#. Конвертеры сетки GMSH (*.msh) в FEA для Stark ES и SLI для Лиры
Нубий-IV
 
Инженер-философ
 
Хабаровск
Регистрация: 24.04.2019
Сообщений: 1,153

Во вложении - программы с исходниками и тестовый пример.

Можно работать в консоли.
Можно создать кнопки команд в Total/Double Commander.
Можно создать ярлыки на рабочем столе и перетаскивать на них файлы MSH.

Миниатюры
Нажмите на изображение для увеличения
Название: Gmsh.png
Просмотров: 364
Размер:	67.3 Кб
ID:	244386  Нажмите на изображение для увеличения
Название: Stark.png
Просмотров: 362
Размер:	58.4 Кб
ID:	244387  Нажмите на изображение для увеличения
Название: Lira.png
Просмотров: 355
Размер:	77.1 Кб
ID:	244388  

Вложения
Тип файла: zip msh.zip (16.7 Кб, 46 просмотров)
Тип файла: zip Test.zip (4.7 Кб, 34 просмотров)

Просмотров: 1580
 
Непрочитано 14.01.2022, 17:24
#2
Бахил

?
 
Регистрация: 17.06.2014
Царицын
Сообщений: 10,549


Offtop: А чё всё на англицком?
__________________
В конструктивных дискуссиях каждый участник укрепляется в своих заблуждениях.
Бахил вне форума  
 
Непрочитано 14.01.2022, 18:20
#3
Буряк А.

Человек с пробегом. Инженер.
 
Регистрация: 25.08.2012
Новороссийск
Сообщений: 42
Отправить сообщение для Буряк А. с помощью Yahoo


Поздравляю с релизом!
Буряк А. вне форума  
 
Непрочитано 14.01.2022, 19:47
1 | #4
Сергей812


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


Код:
[Выделить все]
 var node = 
								"    <NodeCoords " +
								"NdX=\"" + nums[1] + "\" " +
								"NdY=\"" + nums[2] + "\" " +
								"NdZ=\"" + nums[3] + "\" " +
								"/>\n";
							sliNodes.Add(node);
почему StringBuilder не используете в подобном коде? При каждой операции объединения строк .Net создает новую строку, а старые строки отправляются в мусор дожидаться сборщика.
Сергей812 вне форума  
 
Автор темы   Непрочитано 15.01.2022, 05:39
#5
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 1,153


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
почему StringBuilder не используете в подобном коде?
Не программист, не в курсе, что такое вообще есть. Предыдущая версия лежит в теме про открытый решатель под акад, там все было на строках, и модель здания на 150тыс элементов тормозила полчаса. В этой версии сборку пары длинных строк заменил на список, теперь практические задачи в секунду укладываются. Сейчас проверил - замена сборки строк отдельных узлов и элементов со String на StringBuilder уже ничего принципиально не ускоряет, а читается хуже. Дальше оптимизировать пока нет смысла.

Главная проблема в том, что физические группы не переводятся автоматически в материалы, потому что они в старой версии MSH не сохраняются. Но старый формат сетки можно читать и переводить построчно, а новые надо разбирать, у них структура свободная. Возможно еще, что файлы с пользовательской нумерацией узлов и элементов не сконвертятся: узлы пишутся без коррекции номеров; с нумерацией по умолчанию это работает. Но, если все делать честно, вместо пары экранов кода и свободного вечера получается возня на много дней. А в моем языке программирования до начала кодинга запускается препроцессор ЛЕНЬ.exe, и редкая мысль переживает послеобеденный сон .
Нубий-IV вне форума  
 
Непрочитано 15.01.2022, 09:16
#6
Бахил

?
 
Регистрация: 17.06.2014
Царицын
Сообщений: 10,549


Всё это прекрасно, но моделирование в GMSH тот ещё геморрой.
__________________
В конструктивных дискуссиях каждый участник укрепляется в своих заблуждениях.
Бахил вне форума  
 
Непрочитано 15.01.2022, 09:29
#7
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 13,065


Цитата:
Сообщение от Бахил Посмотреть сообщение
Всё это прекрасно, но моделирование в GMSH тот ещё геморрой.
Можно моделить в автокаде и через ifc или stl передавать в GMSH.
А в GMSH можно держать готовые патерны для перевода в msh.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 15.01.2022, 10:03
| 1 #8
Сергей812


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


Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
не в курсе, что такое вообще есть.
просто в .Net используется интернирование строк - т.е. например десять одинаковых строк в реальности: одна запись в хэш-таблице + 10 ссылок на нее. Плюсы - экономия памяти, проще сравнивать строки на совпадение. А минус - что нельзя строки менять непосредственно, как в плюсах - путем перераспределения памяти под нее. Поэтому был придуман StringBuilder - который собирает добавляемые символьные и строковые данные в обычный массив, и уже только на выходе преобразует в запись хэш-таблицы строк.

ну а что скорости не добавило существенно - значит, другие части кода занимают основное время выполнения. Но, например, внутри той же string.Format и ей подобных по работе со строками как раз StringBuilder "прячется" - не зря же)
Сергей812 вне форума  
 
Непрочитано 15.01.2022, 11:03
#9
nick.klochkov


 
Регистрация: 06.03.2013
Сообщений: 1,032


есть такая программка simsolid, в которой вообще отсутствует операция построение/оптимизация сетки кэ, сама строит и оптимизирует)
правда нет графического редактора, все исходники геометрии импортируются
nick.klochkov вне форума  
 
Непрочитано 15.01.2022, 14:49
#10
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,513
<phrase 1=


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Код:
[Выделить все]
 var node = 
								"    <NodeCoords " +
								"NdX=\"" + nums[1] + "\" " +
								"NdY=\"" + nums[2] + "\" " +
								"NdZ=\"" + nums[3] + "\" " +
								"/>\n";
							sliNodes.Add(node);
почему StringBuilder не используете в подобном коде? При каждой операции объединения строк .Net создает новую строку, а старые строки отправляются в мусор дожидаться сборщика.
Сомневаюсь что тут можно ускорить. если строки складываются в цикле - да, надо предварительно выделить память и скопировать туда строки = stringbuilder. подобные же конструкции компилятор должен оптимизировать
zamtmn вне форума  
 
Непрочитано 15.01.2022, 16:06
1 | #11
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,495


на вкус и цвет фломастеры разные, но почему строку по человечески то не записать?
Код:
[Выделить все]
 var node =$"<NodeCoords NdX=\"{nums[1]}\" NdY=\"{nums[2]}\" NdZ=\"{nums[3]}\" />\n";
Да, синтаксический сахар, но читать то удобнее...

и вот такого рода конструкции
Код:
[Выделить все]
 						uint nNodesMsh = uint.Parse(fileMSH.ReadLine());

						var sliNodes = new List<string>((int)nNodesMsh);
вызывают некоторую неоднозначность.... почему сразу не использовать int и TryParse(string s, out Int32 result); ?

и вот тут:
Код:
[Выделить все]
 Console.WriteLine("msh2sli.exe gmsh_mesh_file_1.msh [gmsh_mesh_file_2.msh ...]");
Console.WriteLine("Convert GMSH *.MSH file version 1.0 to Lira *.SLI file");
return;
перед return, я бы Console.ReadLine() поставил бы, а то ничего не прочитать же =)
__________________
_бложиг

Последний раз редактировалось Boxa, 15.01.2022 в 16:24.
Boxa вне форума  
 
Непрочитано 15.01.2022, 17:13
1 | #12
Сергей812


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


Еще бы поигрался с размерами буфера filestream, по умолчанию там всего DefaultFileStreamBufferSize = 4096. Чем меньше обращаетесь к диску, тем меньше тот же антивир влезает в процесс - ему же любопытно)

Цитата:
Сообщение от Boxa Посмотреть сообщение
Console.ReadLine() поставил бы, а то ничего не прочитать же =)
а ReadKey еще лучше, а перед ним подсказка Writeline("Press any key for exit...")
Сергей812 вне форума  
 
Автор темы   Непрочитано 15.01.2022, 17:54
#13
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 1,153


Цитата:
Сообщение от Boxa Посмотреть сообщение
почему строку по человечески то не записать
Контролировать при копипасте замену X на Y или [1] на [2] удобнее, когда они в столбик выровнены, а не в строку. Когда элемент на 8 узлов - строка длиннее экрана становится. И, самое главное, этот формат записи совместим и с JavaScript (nanoCad), и с Python (Blender). Нет смысла учить килограммы сахара под каждый язык, который используется раз в год - через год я забуду, что так можно было писать. Проще помнить минимальный общий синтаксис.
Цитата:
Сообщение от Boxa Посмотреть сообщение
почему сразу не использовать int и TryParse
Потому что в прошлой версии не было списка и не надо было конвертировать типы. А в новой быстрее добавить (int), чем править по несколько строк на каждое изменение. И в короткой консольной программе проще вылететь с ошибкой, чем пытаться анализировать битые числа через TryParse. В программе на два экрана можно оставить малость грязи.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Еще бы поигрался с размерами буфера filestream
Файл сетки на миллион узлов и миллион элементов обрабатывается за 1.5с. Гораздо дольше ждать, когда GMSH такую сетку нарежет.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а ReadKey еще лучше, а перед ним подсказка Writeline
А я бы поубивал, например, авторов загрузочных окон автокада или нанокада, которые не дают работать пока его величество запускается. Или придумавших переспрашивать "вы точно хотите отключить слой?". Или "Вы тут выключаете компьютер, а программы при этом закрывать?". Не задалбывайте пользователя, и не задалбываемы будете.

P.S.
За советы по хорошему стилю спасибо, но они мне впрок не пойдут, слишком редко я пишу, чтобы их до автоматизма выучить.
Также торжественно клянусь, если соберусь экспортер в Старк на C++ под нанокад/автокад перевести, сделать освобождение ресурсов на макросах через GOTO, потому что оно читается лучше, чем примеры обработки ошибок из документации по ObjectARX .
Нубий-IV вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > C#. Конвертеры сетки GMSH (*.msh) в FEA для Stark ES и SLI для Лиры

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript. nanoCAD 5. Экспорт геометрии в позиционный проект Stark ES Нубий-IV Готовые программы 15 15.10.2020 17:47
Blender 2.80 / Python. Аддоны экспорта сетки в FEA-проект Stark / TXT-файл Scad / SLI-файл для Лиры-Сапр Нубий-IV Готовые программы 10 10.06.2020 12:41
STARK ES. Проблема при генерации сетки КЭ. EYELESS STARK ES 27 11.04.2013 11:56
Создание сетки конечных элементов для Лиры в Автокаде. professor_off Лира / Лира-САПР 11 28.10.2010 20:39
генерация КЭ сетки в Stark ES 09 Mavrovskiy STARK ES 1 24.02.2010 21:00