Русскоязычный форум закрыт из-за отсутствия активности (доступен только для чтения).
Пожалуйста, пользуйтесь англоязычной его версией. Приносим извинения за неудобства
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Вход


Опции
К последнему сообщению К первому непрочитанному
Offline mikka  
#1 Оставлено : 11 июня 2010 г. 0:01:59(UTC)
mikka


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 21.01.2009(UTC)
Сообщений: 182
Мужчина
Откуда: Волгоград

Сказал «Спасибо»: 126 раз
Поблагодарили: 36 раз в 22 постах
Доброго времени суток уважаемый SMatch, спасибо вам большое за вашу программу! Очень хорошая программа...
Но для использования ее в инженерных целях, мне не хватает некоторых полезных функций...
Вопросы такие:
1) закончен ли процесс написания той части программы которая отвечает за взаимодействие с плагинами, в той степени, чтобы можно было писать плагины (с минимальными доработками или без доработок их в последующем )?
2) как писать собственные плагины ? (старая инструкция которую вы давали к smatch studio 0.85, как я понял не
подходит)
Есть пара предложений, которые я хочу попробовать реализовать сам... если интересно пишите в личку, расскажу идею...
Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru

Wanna join the discussion?! Login to your Форум проекта SMath forum account. Новые регистрации запрещены.

Offline smath  
#2 Оставлено : 11 июня 2010 г. 21:15:44(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Здравствуйте.

mikka написал:
1) закончен ли процесс написания той части программы которая отвечает за взаимодействие с плагинами, в той степени, чтобы можно было писать плагины (с минимальными доработками или без доработок их в последующем )?

Да, поддержка плагинов реализована полноценно. Можно добавлять свои переменные, функции (как в численные вычисления, так и в символьные), можно добавлять поддержку новых типов файлов для импорта/экспорта в SMath Studio. Гарантировать, что в последующих версиях ничего не изменится я пока не могу, т.к., по сути, это лишь только начало соответствующих работ, однако уверен, основные принципы уже не изменятся. Показателем готовности можно считать и то, что в версии 0.88 большинство функций и функциональности импорта/экспорта файлов уже вынесено в плагины (папка plugins в установочной директории программы).

mikka написал:
2) как писать собственные плагины ? (старая инструкция которую вы давали к smatch studio 0.85, как я понял не подходит)

Да, та инструкция к альфа версии программы уже неактуальна. На текущий момент самое большое кол-во информации о процессе создания плагинов собрано на английском форуме программы: How to create plugins for SMath Studio (обратите особое внимание на последний комментарий пользователя maweilian). Если будут какие-либо проблемы с английским, то всё равно рекомендую ознакомится с подготовленным мною видео (C#) или с пошаговой инструкцией (VB.Net). На русском кое-что написано здесь: Как создать плагин (дополнение) для SMath Studio. В любом случае не стесняйтесь задавать прямые вопросы по процессу реализации дополнений для SMath Studio - буду отвечать максимально оперативно.

С уважением, Андрей Ивашов.
Offline mikka  
#3 Оставлено : 11 июня 2010 г. 21:49:43(UTC)
mikka


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 21.01.2009(UTC)
Сообщений: 182
Мужчина
Откуда: Волгоград

Сказал «Спасибо»: 126 раз
Поблагодарили: 36 раз в 22 постах
Спасибо большое, английский я не очень хорошо знаю, но переводчик google поможет Wink
Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
Offline mikka  
#4 Оставлено : 12 июня 2010 г. 16:06:59(UTC)
mikka


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 21.01.2009(UTC)
Сообщений: 182
Мужчина
Откуда: Волгоград

Сказал «Спасибо»: 126 раз
Поблагодарили: 36 раз в 22 постах
Вроде все делал ка на видео, SMatch Studio принимает плагин, но при попытке вставить функцию выдает ошибку:

Необрабатываемое исключение в приложении. При нажатии кнопки "Продолжить" приложение проигнорирует ошибку и попытается продолжить работу. При нажатии кнопки "Выход" приложение немедленно завершит работу.
Не удалось привести тип объекта
"SMatch.MikTools.Plugininitializer" к типу
"SMath.Manager.IPluginLowLevelEvaluation".

Код:

using System;
using System.Collections.Generic;
using System.Text;

using SMath.Manager;
using SMath.Math;

namespace SMMikTools
{
   public class Class1 : IPluginHandleEvaluation, IPluginLowLevelEvaluation
   {
      private TermInfo[] termInfos;
      private AssemblyInfo[] asseblyInfos;

      TermInfo[] IPluginHandleEvaluation.TermsHandled
      {
         get { return this.termInfos; }
      }

      AssemblyInfo[] IPlugin.Dependences
      {
         get { return this.asseblyInfos; }
      }

      #region Члены IPluginHandleEvaluation

      public TermInfo[] TermsHandled
      {
         get { throw new NotImplementedException(); }
      }

      #endregion

      #region Члены IPlugin

      public AssemblyInfo[] Dependences
      {
         get { throw new NotImplementedException(); }
      }

      public void Initialize()
      {

         // Список обрабатываются функции плагина
         this.termInfos = new TermInfo[] {
                new TermInfo("[b]combine[/b]", TermType.Function, 2, "(n, k) - Возвращает число подмножеств", FunctionSection.Unknown, true),              
            };

         // Плагин требует SMath Studio 0,88
         this.asseblyInfos = new AssemblyInfo[] {
                new AssemblyInfo("SMath Studio", new Version(0, 88), new Guid("a37cba83-b69c-4c71-9992-55ff666763bd")),
            };
      }

      #endregion

      #region Члены IDisposable

      public void Dispose()
      {
         // тут ничего быть не должно
      }

      #endregion

      #region Члены IPluginLowLevelEvaluation

      public bool ExpressionEvaluation(Term root, Term[][] args, ref Store store, ref Term[] result)
      {
         //throw new NotImplementedException();

         if (root.Type == TermType.Function  && root.Text == "[b]combine[/b]" && root.ChildCount == 2)
         {
            Term[] arg1 = Decision.Preprocessing(args[0], ref store);
            Term[] arg2 = Decision.Preprocessing(args[1], ref store);
            // Предобработка(«Preprocessing») - описанная выше - действие необходимое, 
            // что бы правильно подготовить аргументы. Это значит, что все возможные замены будут выполняться.
            
            List <Term >
               answer = new List<Term>() ;
            
               //Теперь необходимо составить выражение массива образованное в обратной польской записи для такого математического выражения:
               // n1/(k!*(n-k)!)
               //В обратной польской записи, это выражение будет выглядеть вот так:
               //n ! k ! n k - ! * /
               //Таким образом введите следующие строки, составив список Terms:

            answer.AddRange(arg1);                                               // <- n
            answer.Add (new Term(Operator.Factorial, TermType.Operator, 1));     // !
            answer.AddRange(arg2);                                               // <- k
            answer.Add (new Term(Operator.Factorial, TermType.Operator, 1));     // !
            answer.AddRange(arg1);                                               // <- n
            answer.AddRange(arg2);                                               // <- k
            answer.Add (new Term(Operator.Substraction,TermType.Operator,2));    // -
            answer.Add (new Term(Operator.Multiplication, TermType.Operator,2)); // *
            answer.Add (new Term(Operator.Division , TermType.Operator,2));      // /

            result = answer.ToArray();
            return true ;
         }

         return false ;
      }

      #endregion
   }
}

Отредактировано пользователем 12 июня 2010 г. 23:33:28(UTC)  | Причина: Не указана

Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
Offline smath  
#5 Оставлено : 12 июня 2010 г. 16:24:43(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
А что такое SMatch.MikTools.Plugininitializer в сообщении об ошибке? В показанном коде я не могу найти ничего подобного.
Offline mikka  
#6 Оставлено : 12 июня 2010 г. 21:04:31(UTC)
mikka


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 21.01.2009(UTC)
Сообщений: 182
Мужчина
Откуда: Волгоград

Сказал «Спасибо»: 126 раз
Поблагодарили: 36 раз в 22 постах
Прошу проещения, все разобрался. Просто в папке с плагинами оставалась другая моя неудачная попытка Blush написать плагин... Теперь все работает... И код выше тоже рабочий...

Приложил почти полный перевод учебника (без части про отладку) Как написать плагин для SMatch Sudio на VB.NET (зеркало на сервере smath.info), добавил к нему часть для C#

Отредактировано модератором 21 сентября 2010 г. 20:47:53(UTC)  | Причина: добавил зеркало

Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
Offline mikka  
#7 Оставлено : 13 июня 2010 г. 0:47:30(UTC)
mikka


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 21.01.2009(UTC)
Сообщений: 182
Мужчина
Откуда: Волгоград

Сказал «Спасибо»: 126 раз
Поблагодарили: 36 раз в 22 постах
А вот еще вопрос, возможно ли поместить контрол в расчеты SMath ? Blush я только учусь программировать на С#, по этому если можно по подробней...
Я хочу реализовать вот что...


т.е. логика такая, вписываешь функцию и сразу за ней появляется комбобокс, который можно растягивать по длине за ручки...
1 параметр - матрица
2 параметр - номер колонки в матрице которая попадает в комбобокс
результат - номер выбранного элемента в комбобокс

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

Отредактировано пользователем 13 июня 2010 г. 0:57:38(UTC)  | Причина: Не указана

Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
Offline smath  
#8 Оставлено : 13 июня 2010 г. 19:43:49(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Реализация пользовательских элементов управления посредством плагинов - это следующий шаг расширения возможностей дополнений программы. На данный момент это невозможно.

P.S.: Большое спасибо за перевод и доработку справочника.
Offline mikka  
#9 Оставлено : 14 июня 2010 г. 15:20:32(UTC)
mikka


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 21.01.2009(UTC)
Сообщений: 182
Мужчина
Откуда: Волгоград

Сказал «Спасибо»: 126 раз
Поблагодарили: 36 раз в 22 постах
Жаль, буду ждать... Good
Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
Offline hard-t  
#10 Оставлено : 15 июня 2010 г. 5:22:21(UTC)
hard-t


Статус: Member

Группы: Registered
Зарегистрирован: 02.06.2010(UTC)
Сообщений: 10
Откуда: Москва

Я так понимаю плагины надо писать на C#. Я к примеру неплохо знаю С++ и java (ну и ассемблер). Так вот, возможно ли применять эти языки для создание плагинов?
Offline Lrrr  
#11 Оставлено : 9 января 2012 г. 5:04:06(UTC)
Lrrr

Статус: Newbie

Группы: Registered
Зарегистрирован: 24.12.2011(UTC)
Сообщений: 7

Добрый день! Познакомился с SMath, надо сказать был приятно поражен соотношением возможности/размер программы. Спасибо. Пытаюсь осваивать. Good
Хотелось бы узнать ответы на два вопроса, если не затруднит.
1. Можно ли заставить функцию "ExpressionEvaluation" вернуть строку, которую можно ? извините, чего-то не могу найти описание от Term и не очень понимаю как с ним работатьSad
2. Возможно ли создать свой элемент управления (панель инструментов, например)? Хотелось бы иметь такой элемент, например, для управления передачей данных во внешние приложения.
Offline smath  
#12 Оставлено : 11 января 2012 г. 13:45:02(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Здравствуйте!

Lrrr написал:
Можно ли заставить функцию "ExpressionEvaluation" вернуть строку, которую можно ? извините, чего-то не могу найти описание от Term и не очень понимаю как с ним работатьSad

Term - это компонента выражения, т.е. это может быть оператор (+ или - или другой), операнд (число, единицы измерения или имя переменной), функция или скобки.
Выражение состоит из массива таких компонентов (Term[]), но располагаются компоненты в нём в порядке обратной польской нотации, потому первое время разбирать глазами такие массивы может быть сложно. Если же Вы хотите, что бы программа самостоятельно перевела Term[] в "человеческий" (т.е. инфиксный) вид, то используйте следующий метод: SMath.Manager.Converter.ToString(здесь_вставляйте_массив_компонент);

Lrrr написал:
Возможно ли создать свой элемент управления (панель инструментов, например)? Хотелось бы иметь такой элемент, например, для управления передачей данных во внешние приложения.

Расширять панель инструментов пока нельзя, но такая возможность обязательно появится позже.

Посмотрите также тему на английском форуме: custom regions - там я показал, какие дополнения стало возможно создавать в последней версии.
Offline Lrrr  
#13 Оставлено : 12 января 2012 г. 11:18:51(UTC)
Lrrr

Статус: Newbie

Группы: Registered
Зарегистрирован: 24.12.2011(UTC)
Сообщений: 7

Большое спасибо за ответ, особенно за ссылочку на примеры. Будем изучать. Особенно заинтересовала возможность создания элементов управления. Как в Mathcad. Хотя, может это и не очень хорошая идея вставлять кнопки, переключатели и списки в рабочий документ? Рабдок сразу приобретает "непечатный" вид. Может лучше открывать их в окне "Менеджер свойств" при выборе выражения? Или в окне диалога при вызове из контекстного меню/контекстной панели инструментов? А в выражении показывать только результат выбора? Blush Ой..Извиняюсь за офф-топ.
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.