Mathcad EFI плагин - уни - Сообщения
#21 Опубликовано: 23.11.2010 11:07:06
Я вспомнил, что собирал архивчик в отладочной конфигурации (Debug), может поэтому не работало. Пересобрал в релиз и вроде стало лучше: mcadefi_20101123.7z
Помните, что пока это тестовая версия. Работа со строками пока не реализована, сообщения об ошибках из маткадовских библиотек игнорируются.
К слову сказать, не много я видел проектов пользовательских библиотек для Mathcad. Я мог бы показать ещё одну интересную библиотечку, но там нужна визуализация двумерных массивов, содержащих изображения. В SMath Studio пока такого нет.
Вот:
http://edu.tnw.utwente.nl/inlopt/lpmcad/manual/onlinemanual.htm
Думается мне, что эту библиотечку можно будет прикрутить.
Помните, что пока это тестовая версия. Работа со строками пока не реализована, сообщения об ошибках из маткадовских библиотек игнорируются.
К слову сказать, не много я видел проектов пользовательских библиотек для Mathcad. Я мог бы показать ещё одну интересную библиотечку, но там нужна визуализация двумерных массивов, содержащих изображения. В SMath Studio пока такого нет.
Вот:
http://edu.tnw.utwente.nl/inlopt/lpmcad/manual/onlinemanual.htm
Думается мне, что эту библиотечку можно будет прикрутить.
Россия навсегда!
Вячеслав Мезенцев
#22 Опубликовано: 23.11.2010 11:42:52
Ха, работает:

Жаль только посмотреть результаты работы пока нельзя и почему-то в версии для MC14 загрузилась только эта функция
Жаль только посмотреть результаты работы пока нельзя и почему-то в версии для MC14 загрузилась только эта функция

Россия навсегда!
Вячеслав Мезенцев
4 пользователям понравился этот пост
densy 25.07.2020 17:38:00, Fridel Selitsky 23.11.2010 12:59:00, build_your_web 23.11.2010 19:53:00, Mikka 24.11.2010 02:27:00
#23 Опубликовано: 24.11.2010 03:20:19
Вот почти полная подержка маткадовских библиотек: mcadefi_20101124.7z
Добавил поддержку строк. Осталось только сделать доступными сообщения об ошибках, которые должны регистрироваться.
Ещё я не смог победить баг при освобождении неуправляемой памяти для строк. Не знаю в чём дело, так что пока примирился с возможной утечкой памяти при работе со строками.
Могу ещё до кучи добавить пример пользовательской библиотеки на ассемблере. Да, для SMath Studio можно будет писать численные плагины и на ассемблере, через это дополнение. Может кому-то пригодится.
П.С. Теперь для маткадовских функций в описании пишется и модуль (имя dll'ки), где она находится.
П.С.2 Исправил ссылку, теперь поддерживаются и сообщения об ошибках из самих библиотек. От обилия функций окно с текстом в Сервис\Дополнения... зависает. Уж не знаю на кого грешить. Добавил пакет WSPro, а там больше 300, кажется, функций... и всё, окно в ауте, загрузка процессора 100%.
Добавил поддержку строк. Осталось только сделать доступными сообщения об ошибках, которые должны регистрироваться.
Ещё я не смог победить баг при освобождении неуправляемой памяти для строк. Не знаю в чём дело, так что пока примирился с возможной утечкой памяти при работе со строками.
Могу ещё до кучи добавить пример пользовательской библиотеки на ассемблере. Да, для SMath Studio можно будет писать численные плагины и на ассемблере, через это дополнение. Может кому-то пригодится.
П.С. Теперь для маткадовских функций в описании пишется и модуль (имя dll'ки), где она находится.
П.С.2 Исправил ссылку, теперь поддерживаются и сообщения об ошибках из самих библиотек. От обилия функций окно с текстом в Сервис\Дополнения... зависает. Уж не знаю на кого грешить. Добавил пакет WSPro, а там больше 300, кажется, функций... и всё, окно в ауте, загрузка процессора 100%.
Россия навсегда!
Вячеслав Мезенцев
1 пользователям понравился этот пост
Andrey Ivashov 24.11.2010 05:35:00
#24 Опубликовано: 24.11.2010 14:48:51
Пояснительная записка к плагину для MathCAD bqmcad:
http://schoolbell.nichost.ru/tmp/bqmcad.pdf
Исправил ошибки, плагин включил в архив: mcadefi_20101125.7z
Дополнительная ссылка: http://karataev.nm.ru/bqmcad/bqmcadru.html
http://schoolbell.nichost.ru/tmp/bqmcad.pdf
Исправил ошибки, плагин включил в архив: mcadefi_20101125.7z
Дополнительная ссылка: http://karataev.nm.ru/bqmcad/bqmcadru.html
Россия навсегда!
Вячеслав Мезенцев
#25 Опубликовано: 25.11.2010 05:46:33
Андрей, правильно ли я понимаю, что строка хранится вместе с обрамляющими двойными кавычками?
В плагине строка передаётся как есть в маткадовский плагин. Ещё есть некоторая неточность при индексировании номера ошибки. При возникновении ошибки в маткадовском плагине, сообщение может не соответствовать. Не понял пока алгоритма выбора сообщения об ошибке из таблицы ошибок (поведение отличается от того же в Маткаде).
В плагине строка передаётся как есть в маткадовский плагин. Ещё есть некоторая неточность при индексировании номера ошибки. При возникновении ошибки в маткадовском плагине, сообщение может не соответствовать. Не понял пока алгоритма выбора сообщения об ошибке из таблицы ошибок (поведение отличается от того же в Маткаде).
Россия навсегда!
Вячеслав Мезенцев
#26 Опубликовано: 25.11.2010 06:30:05
WroteАндрей, правильно ли я понимаю, что строка хранится вместе с обрамляющими двойными кавычками?
Верно. Двойные кавычки в начале и конце являются ключём к типу данных. Так же и с единицами измерения - апостроф в начале есть такой же ключ.
#27 Опубликовано: 25.11.2010 13:34:17
Тут одна идея возникла. Можно предлагать использовать программу фирмам на подобие этой:
http://www.techwareeng.com/
Там есть ряд продуктов для вычислений. Они "заточены" под Excel, Lotus и Mathcad (см. документацию по ссылкам).
Учитывая наличие дополнения mcadefi можно, думается мне, уже предлагать не навязчиво попробовать их продукты и с SMath Studio.
Сейчас плагин вполне работоспособен. В следующем релизе сделаю ещё ряд мелких исправлений и дополнений.
http://www.techwareeng.com/
Там есть ряд продуктов для вычислений. Они "заточены" под Excel, Lotus и Mathcad (см. документацию по ссылкам).
Учитывая наличие дополнения mcadefi можно, думается мне, уже предлагать не навязчиво попробовать их продукты и с SMath Studio.
Сейчас плагин вполне работоспособен. В следующем релизе сделаю ещё ряд мелких исправлений и дополнений.
Россия навсегда!
Вячеслав Мезенцев
#28 Опубликовано: 26.11.2010 08:40:15
Андрей, а чем отличается тип ArgumentSections::FileName от ArgumentSections::String?
mcadefi_20101126.7z
Новая версия. Пофиксил некоторые баги, добавил тип параметра INFILE. Плагин mcadefi должен отрабатывать более корректно. А вот библиотечка от NIT, которую я упоминал выше, использует какие-то странные параметры в описании некоторых функций, которые не определены в заголовочном файле. Поэтому ни Маткад, ни тем более mcadefi не смогут загрузить функции, параметров которых не знают. Такие функции будут просто проигнорированы.
mcadefi_20101126.7z
Новая версия. Пофиксил некоторые баги, добавил тип параметра INFILE. Плагин mcadefi должен отрабатывать более корректно. А вот библиотечка от NIT, которую я упоминал выше, использует какие-то странные параметры в описании некоторых функций, которые не определены в заголовочном файле. Поэтому ни Маткад, ни тем более mcadefi не смогут загрузить функции, параметров которых не знают. Такие функции будут просто проигнорированы.
Россия навсегда!
Вячеслав Мезенцев
#29 Опубликовано: 26.11.2010 08:53:33
Только тем, что будет подставляться в описание функции. Никакого другого функционала от этого не зависит. Если же смотреть с точки зрения чисто логического, то FileName (будучи URI) является частным случаем String.
#30 Опубликовано: 26.11.2010 09:14:35
В маткаде тоже есть параметр INFILE, но там очень много чего зависит от него:
Я обработал этот тип как строку за исключением того, что в библиотеку передаю указатель на строку, я не структуру, как в случае со строкой. В Руководстве разработчика такой тип вообще не описан и не используется, как, видимо, и многие другие, только COMPLEX_SCALAR, COMPLEX_ARRAY и STRING. Хотя тесты показали, что Маткад INFILE отрабатывает согласно заголовочника, плагин mcadefi теперь тоже. Правда никаких текущих путей я не трогаю.
// File name variables. These are passed as const char *pointers
// if the string doesn't look like it has a path in it then
// the current working directory will be prepended to the string
// before it is passed to the user function.
//
//
// your function will be passed a const char * pointer
#define INFILE 13
Россия навсегда!
Вячеслав Мезенцев
#31 Опубликовано: 17.04.2012 13:11:14
Как подключить старый паскалевский численный код через интерфейс Mathcad User EFI. На примере древней библиотеки "NUMERICAL RECIPES IN PASCAL".
Один уральский программист (Александров О.Е.) из УПИ (УФУ) с ФизТеха портировал маткадовский интерфейс на паскаль. Получилось два файла:
1. McadUserTypes.pas
2. McadUserEx.pas
То была часть НИР "Разработка методики создания виртуальных приборов для учебных целей и создание учебно-программного комплекса на базе эмулятора масс-спектрометра МИ-1201 АГМ". По-моему, это единственное место в сети, где человек решил писать пользовательские библиотеки для Mathcad'а на паскале. Это, конечно, не очень хорошо, но это работает, что позволяет подключать сторонний математический код на старом паскале, с которым Вы ну никак не хотите расставаться всю оставшуюся жизнь.
Для подключения своей функции нужно выполнить несколько шагов:
1. Описать функцию в стиле User EFI (см. примеры: FLMOONUnit.pas)
2. Написать обёртку для Вашей функции в стиле User EFI (примеры там же).
3. Зарегистрировать функцию, вызовом CreateUserFunction() в основном модуле (см. примеры: MainUnit.pas)
Ниже приведены исходники для Delphi7. И в результате мы имеем:

П.С. А плохо это тем, что отлаживать такой код можно только при помощи специального лога ошибок, который делать вручную. Либо я не понял как это делать в Delphi7. SMath Studio работает в управляемом пространстве .Net, а код написан для неуправляемого пространства Windows. Поэтому, таким образом лучше подключать уже отлаженный код или отлаживать его отдельно, а потом подключать.
Ссылки:
Исходники: http://pascal.sources.ru/math/nrpas13.htm
Исходники плагина: https://smath.info/svn/public/plugins/mcadefi/NumericalRecipesPascal/
Сам плагин: nrpas13.dll (нужно положить в папку /plugins/userefi/)
НИР: http://mp.ustu.ru/Users/NIR_05.01.038/
Один уральский программист (Александров О.Е.) из УПИ (УФУ) с ФизТеха портировал маткадовский интерфейс на паскаль. Получилось два файла:
1. McadUserTypes.pas
2. McadUserEx.pas
То была часть НИР "Разработка методики создания виртуальных приборов для учебных целей и создание учебно-программного комплекса на базе эмулятора масс-спектрометра МИ-1201 АГМ". По-моему, это единственное место в сети, где человек решил писать пользовательские библиотеки для Mathcad'а на паскале. Это, конечно, не очень хорошо, но это работает, что позволяет подключать сторонний математический код на старом паскале, с которым Вы ну никак не хотите расставаться всю оставшуюся жизнь.
Для подключения своей функции нужно выполнить несколько шагов:
1. Описать функцию в стиле User EFI (см. примеры: FLMOONUnit.pas)
2. Написать обёртку для Вашей функции в стиле User EFI (примеры там же).
3. Зарегистрировать функцию, вызовом CreateUserFunction() в основном модуле (см. примеры: MainUnit.pas)
Ниже приведены исходники для Delphi7. И в результате мы имеем:
П.С. А плохо это тем, что отлаживать такой код можно только при помощи специального лога ошибок, который делать вручную. Либо я не понял как это делать в Delphi7. SMath Studio работает в управляемом пространстве .Net, а код написан для неуправляемого пространства Windows. Поэтому, таким образом лучше подключать уже отлаженный код или отлаживать его отдельно, а потом подключать.
Ссылки:
Исходники: http://pascal.sources.ru/math/nrpas13.htm
Исходники плагина: https://smath.info/svn/public/plugins/mcadefi/NumericalRecipesPascal/
Сам плагин: nrpas13.dll (нужно положить в папку /plugins/userefi/)
НИР: http://mp.ustu.ru/Users/NIR_05.01.038/
Россия навсегда!
Вячеслав Мезенцев
#32 Опубликовано: 26.09.2012 01:26:58
Приветствую.
Версия Smath 0.95(сборка 4594). Из mcadefi_20120411.zip/plugins пара .dll и папка "userefi" скопирована в папку плагинов Smath. При запуске появляется окно с ошибкой (размер картинки 118 кб). Что можно тут сдалать?
Версия Smath 0.95(сборка 4594). Из mcadefi_20120411.zip/plugins пара .dll и папка "userefi" скопирована в папку плагинов Smath. При запуске появляется окно с ошибкой (размер картинки 118 кб). Что можно тут сдалать?
#33 Опубликовано: 26.09.2012 01:58:29
WroteПриветствую.
Версия Smath 0.95(сборка 4594). Из mcadefi_20120411.zip/plugins пара .dll и папка "userefi" скопирована в папку плагинов Smath. При запуске появляется окно с ошибкой (размер картинки 118 кб). Что можно тут сдалать?
Не знаю, если честно. Я заменил сборку на новую, которая работает у меня на машине (WinXP, на семерке пока не проверял). Попробуйте ещё раз.
Россия навсегда!
Вячеслав Мезенцев
#34 Опубликовано: 27.09.2012 03:14:39
На какой версии Smath у Вас работало или работает?
#35 Опубликовано: 27.09.2012 08:53:16
На последней SMath Studio 0.95(сборка 4594). Вообще, ошибка странная, этот Windows 7 мне никогда не нравился. Я попробую запустить SMath на своей Win7 вместе с плагином и посмотрю что будет.
П.С. Посмотрел на чистой семёрке x32. Всё работает. Запускал под админом. Если дадите доступ к системе через Team Viewer 7, то я могу попробовать посмотреть на проблему живьём.
П.С. Посмотрел на чистой семёрке x32. Всё работает. Запускал под админом. Если дадите доступ к системе через Team Viewer 7, то я могу попробовать посмотреть на проблему живьём.
Россия навсегда!
Вячеслав Мезенцев
#36 Опубликовано: 28.09.2012 02:34:28
У меня в Windows 7 64-разрядной не работает. На следующей неделе в будний день после 18 часов по Москве сможете?
#37 Опубликовано: 28.09.2012 02:38:47
WroteУ меня в Windows 7 64-разрядной не работает. На следующей неделе в будний день после 18 часов по Москве сможете?
Скорее всего мне нужно просто перекомпилировать проект под 64 разряда. Я посмотрю где там и что нужно поменять и сделаю специальный релиз для Win7(x64). Посмотрим что будет. Правда как при этом будут загружаться обычные dll, они ведь тоже для 32-х разрядов?
Россия навсегда!
Вячеслав Мезенцев
#38 Опубликовано: 28.09.2012 02:51:44
Россия навсегда!
Вячеслав Мезенцев
#39 Опубликовано: 07.02.2013 04:49:34
WroteПоследняя редакция дополнения: mcadefi_20120926.zip
К сожалению плагин у меня не работает (win 7, x64). Очень хотелось бы испытать его.
Сначала SMath жалуется что не может наидти файл, потом жалуется про формат файла.
Мартин
Martin Kraska
Pre-configured portable distribution of SMath Studio: https://en.smath.info/wiki/SMath%20with%20Plugins.ashx
#40 Опубликовано: 07.02.2013 13:41:58
Увы, он и не предназначен для 64-разрядных систем. Я его делал для совместимости с пользовательскими dll Mathcad. Не уверен, что можно так просто использовать 32-разрядные версии дополнений в 64-разрядной среде. У меня просто нет под рукой 64-разрядной системы, а так я бы может нашёл в чём дело. В любом случае это рудимент и его назначение - это использование старого кода, который лень или неохота переписывать под .Net.
Как появится рабочая машина с 64-разрядами я попробую собрать дополнение и протестировать его работу.
Как появится рабочая машина с 64-разрядами я попробую собрать дополнение и протестировать его работу.
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
Martin Kraska 07.02.2013 19:22:00
-
Новые сообщения
-
Нет новых сообщений