Mathcad EFI плагин

Mathcad EFI плагин - уни - Messages

#21 Posted: 11/23/2010 11:07:06 AM
уни

уни

156 likes in 355 posts.

Group: User

Я вспомнил, что собирал архивчик в отладочной конфигурации (Debug), может поэтому не работало. Пересобрал в релиз и вроде стало лучше: mcadefi_20101123.7z

Помните, что пока это тестовая версия. Работа со строками пока не реализована, сообщения об ошибках из маткадовских библиотек игнорируются.

К слову сказать, не много я видел проектов пользовательских библиотек для Mathcad. Я мог бы показать ещё одну интересную библиотечку, но там нужна визуализация двумерных массивов, содержащих изображения. В SMath Studio пока такого нет.

Вот:
http://edu.tnw.utwente.nl/inlopt/lpmcad/manual/onlinemanual.htm

Думается мне, что эту библиотечку можно будет прикрутить.
Россия навсегда! Вячеслав Мезенцев
#22 Posted: 11/23/2010 11:42:52 AM
уни

уни

156 likes in 355 posts.

Group: User

Ха, работает:


Жаль только посмотреть результаты работы пока нельзя и почему-то в версии для 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
#23 Posted: 11/24/2010 3:20:19 AM
уни

уни

156 likes in 355 posts.

Group: User

Вот почти полная подержка маткадовских библиотек: mcadefi_20101124.7z

Добавил поддержку строк. Осталось только сделать доступными сообщения об ошибках, которые должны регистрироваться.
Ещё я не смог победить баг при освобождении неуправляемой памяти для строк. Не знаю в чём дело, так что пока примирился с возможной утечкой памяти при работе со строками.

Могу ещё до кучи добавить пример пользовательской библиотеки на ассемблере. Да, для SMath Studio можно будет писать численные плагины и на ассемблере, через это дополнение. Может кому-то пригодится.

П.С. Теперь для маткадовских функций в описании пишется и модуль (имя dll'ки), где она находится.

П.С.2 Исправил ссылку, теперь поддерживаются и сообщения об ошибках из самих библиотек. От обилия функций окно с текстом в Сервис\Дополнения... зависает. Уж не знаю на кого грешить. Добавил пакет WSPro, а там больше 300, кажется, функций... и всё, окно в ауте, загрузка процессора 100%.
Россия навсегда! Вячеслав Мезенцев
1 users liked this post
Andrey Ivashov 11/24/2010 5:35:00 AM
#24 Posted: 11/24/2010 2:48:51 PM
уни

уни

156 likes in 355 posts.

Group: User

Пояснительная записка к плагину для MathCAD bqmcad:
http://schoolbell.nichost.ru/tmp/bqmcad.pdf

Исправил ошибки, плагин включил в архив: mcadefi_20101125.7z

Дополнительная ссылка: http://karataev.nm.ru/bqmcad/bqmcadru.html
Россия навсегда! Вячеслав Мезенцев
#25 Posted: 11/25/2010 5:46:33 AM
уни

уни

156 likes in 355 posts.

Group: User

Андрей, правильно ли я понимаю, что строка хранится вместе с обрамляющими двойными кавычками?
В плагине строка передаётся как есть в маткадовский плагин. Ещё есть некоторая неточность при индексировании номера ошибки. При возникновении ошибки в маткадовском плагине, сообщение может не соответствовать. Не понял пока алгоритма выбора сообщения об ошибке из таблицы ошибок (поведение отличается от того же в Маткаде).
Россия навсегда! Вячеслав Мезенцев
#26 Posted: 11/25/2010 6:30:05 AM
Andrey Ivashov

Andrey Ivashov

2269 likes in 3729 posts.

Group: Super Administrator

Wrote

Андрей, правильно ли я понимаю, что строка хранится вместе с обрамляющими двойными кавычками?


Верно. Двойные кавычки в начале и конце являются ключём к типу данных. Так же и с единицами измерения - апостроф в начале есть такой же ключ.
#27 Posted: 11/25/2010 1:34:17 PM
уни

уни

156 likes in 355 posts.

Group: User

Тут одна идея возникла. Можно предлагать использовать программу фирмам на подобие этой:
http://www.techwareeng.com/

Там есть ряд продуктов для вычислений. Они "заточены" под Excel, Lotus и Mathcad (см. документацию по ссылкам).
Учитывая наличие дополнения mcadefi можно, думается мне, уже предлагать не навязчиво попробовать их продукты и с SMath Studio.

Сейчас плагин вполне работоспособен. В следующем релизе сделаю ещё ряд мелких исправлений и дополнений.
Россия навсегда! Вячеслав Мезенцев
#28 Posted: 11/26/2010 8:40:15 AM
уни

уни

156 likes in 355 posts.

Group: User

Андрей, а чем отличается тип ArgumentSections::FileName от ArgumentSections::String?

mcadefi_20101126.7z

Новая версия. Пофиксил некоторые баги, добавил тип параметра INFILE. Плагин mcadefi должен отрабатывать более корректно. А вот библиотечка от NIT, которую я упоминал выше, использует какие-то странные параметры в описании некоторых функций, которые не определены в заголовочном файле. Поэтому ни Маткад, ни тем более mcadefi не смогут загрузить функции, параметров которых не знают. Такие функции будут просто проигнорированы.
Россия навсегда! Вячеслав Мезенцев
#29 Posted: 11/26/2010 8:53:33 AM
Andrey Ivashov

Andrey Ivashov

2269 likes in 3729 posts.

Group: Super Administrator

Только тем, что будет подставляться в описание функции. Никакого другого функционала от этого не зависит. Если же смотреть с точки зрения чисто логического, то FileName (будучи URI) является частным случаем String.
#30 Posted: 11/26/2010 9:14:35 AM
уни

уни

156 likes in 355 posts.

Group: User

В маткаде тоже есть параметр INFILE, но там очень много чего зависит от него:

// 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
Я обработал этот тип как строку за исключением того, что в библиотеку передаю указатель на строку, я не структуру, как в случае со строкой. В Руководстве разработчика такой тип вообще не описан и не используется, как, видимо, и многие другие, только COMPLEX_SCALAR, COMPLEX_ARRAY и STRING. Хотя тесты показали, что Маткад INFILE отрабатывает согласно заголовочника, плагин mcadefi теперь тоже. Правда никаких текущих путей я не трогаю.
Россия навсегда! Вячеслав Мезенцев
#31 Posted: 4/17/2012 1:11:14 PM
уни

уни

156 likes in 355 posts.

Group: User

Как подключить старый паскалевский численный код через интерфейс 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/
Россия навсегда! Вячеслав Мезенцев
#32 Posted: 9/26/2012 1:26:58 AM
Balakin Vladimir

Balakin Vladimir

0 likes in 3 posts.

Group: User

Приветствую.
Версия Smath 0.95(сборка 4594). Из mcadefi_20120411.zip/plugins пара .dll и папка "userefi" скопирована в папку плагинов Smath. При запуске появляется окно с ошибкой (размер картинки 118 кб). Что можно тут сдалать?
#33 Posted: 9/26/2012 1:58:29 AM
уни

уни

156 likes in 355 posts.

Group: User

Wrote

Приветствую.
Версия Smath 0.95(сборка 4594). Из mcadefi_20120411.zip/plugins пара .dll и папка "userefi" скопирована в папку плагинов Smath. При запуске появляется окно с ошибкой (размер картинки 118 кб). Что можно тут сдалать?


Не знаю, если честно. Я заменил сборку на новую, которая работает у меня на машине (WinXP, на семерке пока не проверял). Попробуйте ещё раз.
Россия навсегда! Вячеслав Мезенцев
#34 Posted: 9/27/2012 3:14:39 AM
Balakin Vladimir

Balakin Vladimir

0 likes in 3 posts.

Group: User

На какой версии Smath у Вас работало или работает?
#35 Posted: 9/27/2012 8:53:16 AM
уни

уни

156 likes in 355 posts.

Group: User

На последней SMath Studio 0.95(сборка 4594). Вообще, ошибка странная, этот Windows 7 мне никогда не нравился. Я попробую запустить SMath на своей Win7 вместе с плагином и посмотрю что будет.

П.С. Посмотрел на чистой семёрке x32. Всё работает. Запускал под админом. Если дадите доступ к системе через Team Viewer 7, то я могу попробовать посмотреть на проблему живьём.
Россия навсегда! Вячеслав Мезенцев
#36 Posted: 9/28/2012 2:34:28 AM
Balakin Vladimir

Balakin Vladimir

0 likes in 3 posts.

Group: User

У меня в Windows 7 64-разрядной не работает. На следующей неделе в будний день после 18 часов по Москве сможете?
#37 Posted: 9/28/2012 2:38:47 AM
уни

уни

156 likes in 355 posts.

Group: User

Wrote

У меня в Windows 7 64-разрядной не работает. На следующей неделе в будний день после 18 часов по Москве сможете?


Скорее всего мне нужно просто перекомпилировать проект под 64 разряда. Я посмотрю где там и что нужно поменять и сделаю специальный релиз для Win7(x64). Посмотрим что будет. Правда как при этом будут загружаться обычные dll, они ведь тоже для 32-х разрядов?

Россия навсегда! Вячеслав Мезенцев
#38 Posted: 9/28/2012 2:51:44 AM
уни

уни

156 likes in 355 posts.

Group: User

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

mcaduser-x64.zip
Россия навсегда! Вячеслав Мезенцев
#39 Posted: 2/7/2013 4:49:34 AM
Martin Kraska

Martin Kraska

1222 likes in 2150 posts.

Group: Moderator

Wrote

Последняя редакция дополнения: mcadefi_20120926.zip



К сожалению плагин у меня не работает (win 7, x64). Очень хотелось бы испытать его.

Сначала SMath жалуется что не может наидти файл, потом жалуется про формат файла.

Мартин
mcaduser-error.PNG
Martin Kraska Pre-configured portable distribution of SMath Studio: https://en.smath.info/wiki/SMath%20with%20Plugins.ashx
#40 Posted: 2/7/2013 1:41:58 PM
Вячеслав Мезенцев

Вячеслав Мезенцев

1402 likes in 1708 posts.

Group: Moderator

Увы, он и не предназначен для 64-разрядных систем. Я его делал для совместимости с пользовательскими dll Mathcad. Не уверен, что можно так просто использовать 32-разрядные версии дополнений в 64-разрядной среде. У меня просто нет под рукой 64-разрядной системы, а так я бы может нашёл в чём дело. В любом случае это рудимент и его назначение - это использование старого кода, который лень или неохота переписывать под .Net.
Как появится рабочая машина с 64-разрядами я попробую собрать дополнение и протестировать его работу.
Russia ☭ forever, Viacheslav N. Mezentsev
1 users liked this post
Martin Kraska 2/7/2013 7:22:00 PM
  • New Posts New Posts
  • No New Posts No New Posts