Mathcad EFI плагин - уни - Messages
Я вспомнил, что собирал архивчик в отладочной конфигурации (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
Думается мне, что эту библиотечку можно будет прикрутить.
Россия навсегда!
Вячеслав Мезенцев
Ха, работает:

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

Россия навсегда!
Вячеслав Мезенцев
4 users liked this post
densy 7/25/2020 5:38:00 PM, Fridel Selitsky 11/23/2010 12:59:00 PM, build_your_web 11/23/2010 7:53:00 PM, Mikka 11/24/2010 2:27:00 AM
Вот почти полная подержка маткадовских библиотек: mcadefi_20101124.7z
Добавил поддержку строк. Осталось только сделать доступными сообщения об ошибках, которые должны регистрироваться.
Ещё я не смог победить баг при освобождении неуправляемой памяти для строк. Не знаю в чём дело, так что пока примирился с возможной утечкой памяти при работе со строками.
Могу ещё до кучи добавить пример пользовательской библиотеки на ассемблере. Да, для SMath Studio можно будет писать численные плагины и на ассемблере, через это дополнение. Может кому-то пригодится.
П.С. Теперь для маткадовских функций в описании пишется и модуль (имя dll'ки), где она находится.
П.С.2 Исправил ссылку, теперь поддерживаются и сообщения об ошибках из самих библиотек. От обилия функций окно с текстом в Сервис\Дополнения... зависает. Уж не знаю на кого грешить. Добавил пакет WSPro, а там больше 300, кажется, функций... и всё, окно в ауте, загрузка процессора 100%.
Добавил поддержку строк. Осталось только сделать доступными сообщения об ошибках, которые должны регистрироваться.
Ещё я не смог победить баг при освобождении неуправляемой памяти для строк. Не знаю в чём дело, так что пока примирился с возможной утечкой памяти при работе со строками.
Могу ещё до кучи добавить пример пользовательской библиотеки на ассемблере. Да, для SMath Studio можно будет писать численные плагины и на ассемблере, через это дополнение. Может кому-то пригодится.
П.С. Теперь для маткадовских функций в описании пишется и модуль (имя dll'ки), где она находится.
П.С.2 Исправил ссылку, теперь поддерживаются и сообщения об ошибках из самих библиотек. От обилия функций окно с текстом в Сервис\Дополнения... зависает. Уж не знаю на кого грешить. Добавил пакет WSPro, а там больше 300, кажется, функций... и всё, окно в ауте, загрузка процессора 100%.
Россия навсегда!
Вячеслав Мезенцев
1 users liked this post
Andrey Ivashov 11/24/2010 5:35:00 AM
Пояснительная записка к плагину для 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
Россия навсегда!
Вячеслав Мезенцев
Андрей, правильно ли я понимаю, что строка хранится вместе с обрамляющими двойными кавычками?
В плагине строка передаётся как есть в маткадовский плагин. Ещё есть некоторая неточность при индексировании номера ошибки. При возникновении ошибки в маткадовском плагине, сообщение может не соответствовать. Не понял пока алгоритма выбора сообщения об ошибке из таблицы ошибок (поведение отличается от того же в Маткаде).
В плагине строка передаётся как есть в маткадовский плагин. Ещё есть некоторая неточность при индексировании номера ошибки. При возникновении ошибки в маткадовском плагине, сообщение может не соответствовать. Не понял пока алгоритма выбора сообщения об ошибке из таблицы ошибок (поведение отличается от того же в Маткаде).
Россия навсегда!
Вячеслав Мезенцев
WroteАндрей, правильно ли я понимаю, что строка хранится вместе с обрамляющими двойными кавычками?
Верно. Двойные кавычки в начале и конце являются ключём к типу данных. Так же и с единицами измерения - апостроф в начале есть такой же ключ.
Тут одна идея возникла. Можно предлагать использовать программу фирмам на подобие этой:
http://www.techwareeng.com/
Там есть ряд продуктов для вычислений. Они "заточены" под Excel, Lotus и Mathcad (см. документацию по ссылкам).
Учитывая наличие дополнения mcadefi можно, думается мне, уже предлагать не навязчиво попробовать их продукты и с SMath Studio.
Сейчас плагин вполне работоспособен. В следующем релизе сделаю ещё ряд мелких исправлений и дополнений.
http://www.techwareeng.com/
Там есть ряд продуктов для вычислений. Они "заточены" под Excel, Lotus и Mathcad (см. документацию по ссылкам).
Учитывая наличие дополнения mcadefi можно, думается мне, уже предлагать не навязчиво попробовать их продукты и с SMath Studio.
Сейчас плагин вполне работоспособен. В следующем релизе сделаю ещё ряд мелких исправлений и дополнений.
Россия навсегда!
Вячеслав Мезенцев
Андрей, а чем отличается тип ArgumentSections::FileName от ArgumentSections::String?
mcadefi_20101126.7z
Новая версия. Пофиксил некоторые баги, добавил тип параметра INFILE. Плагин mcadefi должен отрабатывать более корректно. А вот библиотечка от NIT, которую я упоминал выше, использует какие-то странные параметры в описании некоторых функций, которые не определены в заголовочном файле. Поэтому ни Маткад, ни тем более mcadefi не смогут загрузить функции, параметров которых не знают. Такие функции будут просто проигнорированы.
mcadefi_20101126.7z
Новая версия. Пофиксил некоторые баги, добавил тип параметра INFILE. Плагин mcadefi должен отрабатывать более корректно. А вот библиотечка от NIT, которую я упоминал выше, использует какие-то странные параметры в описании некоторых функций, которые не определены в заголовочном файле. Поэтому ни Маткад, ни тем более mcadefi не смогут загрузить функции, параметров которых не знают. Такие функции будут просто проигнорированы.
Россия навсегда!
Вячеслав Мезенцев
Только тем, что будет подставляться в описание функции. Никакого другого функционала от этого не зависит. Если же смотреть с точки зрения чисто логического, то FileName (будучи URI) является частным случаем String.
В маткаде тоже есть параметр 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
Россия навсегда!
Вячеслав Мезенцев
Как подключить старый паскалевский численный код через интерфейс 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/
Россия навсегда!
Вячеслав Мезенцев
Приветствую.
Версия Smath 0.95(сборка 4594). Из mcadefi_20120411.zip/plugins пара .dll и папка "userefi" скопирована в папку плагинов Smath. При запуске появляется окно с ошибкой (размер картинки 118 кб). Что можно тут сдалать?
Версия Smath 0.95(сборка 4594). Из mcadefi_20120411.zip/plugins пара .dll и папка "userefi" скопирована в папку плагинов Smath. При запуске появляется окно с ошибкой (размер картинки 118 кб). Что можно тут сдалать?
WroteПриветствую.
Версия Smath 0.95(сборка 4594). Из mcadefi_20120411.zip/plugins пара .dll и папка "userefi" скопирована в папку плагинов Smath. При запуске появляется окно с ошибкой (размер картинки 118 кб). Что можно тут сдалать?
Не знаю, если честно. Я заменил сборку на новую, которая работает у меня на машине (WinXP, на семерке пока не проверял). Попробуйте ещё раз.
Россия навсегда!
Вячеслав Мезенцев
На какой версии Smath у Вас работало или работает?
На последней SMath Studio 0.95(сборка 4594). Вообще, ошибка странная, этот Windows 7 мне никогда не нравился. Я попробую запустить SMath на своей Win7 вместе с плагином и посмотрю что будет.
П.С. Посмотрел на чистой семёрке x32. Всё работает. Запускал под админом. Если дадите доступ к системе через Team Viewer 7, то я могу попробовать посмотреть на проблему живьём.
П.С. Посмотрел на чистой семёрке x32. Всё работает. Запускал под админом. Если дадите доступ к системе через Team Viewer 7, то я могу попробовать посмотреть на проблему живьём.
Россия навсегда!
Вячеслав Мезенцев
У меня в Windows 7 64-разрядной не работает. На следующей неделе в будний день после 18 часов по Москве сможете?
WroteУ меня в Windows 7 64-разрядной не работает. На следующей неделе в будний день после 18 часов по Москве сможете?
Скорее всего мне нужно просто перекомпилировать проект под 64 разряда. Я посмотрю где там и что нужно поменять и сделаю специальный релиз для Win7(x64). Посмотрим что будет. Правда как при этом будут загружаться обычные dll, они ведь тоже для 32-х разрядов?
Россия навсегда!
Вячеслав Мезенцев
Россия навсегда!
Вячеслав Мезенцев
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
Увы, он и не предназначен для 64-разрядных систем. Я его делал для совместимости с пользовательскими dll Mathcad. Не уверен, что можно так просто использовать 32-разрядные версии дополнений в 64-разрядной среде. У меня просто нет под рукой 64-разрядной системы, а так я бы может нашёл в чём дело. В любом случае это рудимент и его назначение - это использование старого кода, который лень или неохота переписывать под .Net.
Как появится рабочая машина с 64-разрядами я попробую собрать дополнение и протестировать его работу.
Как появится рабочая машина с 64-разрядами я попробую собрать дополнение и протестировать его работу.
Russia ☭ forever, Viacheslav N. Mezentsev
1 users liked this post
Martin Kraska 2/7/2013 7:22:00 PM
-
New Posts
-
No New Posts