1 страниц (13 вхождений)
Как написать плагин ? - Сообщения
#1 Опубликовано: 10.06.2010 17:01:59
Доброго времени суток уважаемый SMatch, спасибо вам большое за вашу программу! Очень хорошая программа...
Но для использования ее в инженерных целях, мне не хватает некоторых полезных функций...
Вопросы такие:
1) закончен ли процесс написания той части программы которая отвечает за взаимодействие с плагинами, в той степени, чтобы можно было писать плагины (с минимальными доработками или без доработок их в последующем )?
2) как писать собственные плагины ? (старая инструкция которую вы давали к smatch studio 0.85, как я понял не
подходит)
Есть пара предложений, которые я хочу попробовать реализовать сам... если интересно пишите в личку, расскажу идею...
Но для использования ее в инженерных целях, мне не хватает некоторых полезных функций...
Вопросы такие:
1) закончен ли процесс написания той части программы которая отвечает за взаимодействие с плагинами, в той степени, чтобы можно было писать плагины (с минимальными доработками или без доработок их в последующем )?
2) как писать собственные плагины ? (старая инструкция которую вы давали к smatch studio 0.85, как я понял не
подходит)
Есть пара предложений, которые я хочу попробовать реализовать сам... если интересно пишите в личку, расскажу идею...
Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
#2 Опубликовано: 11.06.2010 14:15:44
Здравствуйте.
Да, поддержка плагинов реализована полноценно. Можно добавлять свои переменные, функции (как в численные вычисления, так и в символьные), можно добавлять поддержку новых типов файлов для импорта/экспорта в SMath Studio. Гарантировать, что в последующих версиях ничего не изменится я пока не могу, т.к., по сути, это лишь только начало соответствующих работ, однако уверен, основные принципы уже не изменятся. Показателем готовности можно считать и то, что в версии 0.88 большинство функций и функциональности импорта/экспорта файлов уже вынесено в плагины (папка plugins в установочной директории программы).
Да, та инструкция к альфа версии программы уже неактуальна. На текущий момент самое большое кол-во информации о процессе создания плагинов собрано на английском форуме программы: How to create plugins for SMath Studio (обратите особое внимание на последний комментарий пользователя maweilian). Если будут какие-либо проблемы с английским, то всё равно рекомендую ознакомится с подготовленным мною видео (C#) или с пошаговой инструкцией (VB.Net). На русском кое-что написано здесь: Как создать плагин (дополнение) для SMath Studio. В любом случае не стесняйтесь задавать прямые вопросы по процессу реализации дополнений для SMath Studio - буду отвечать максимально оперативно.
С уважением, Андрей Ивашов.
Wrote1) закончен ли процесс написания той части программы которая отвечает за взаимодействие с плагинами, в той степени, чтобы можно было писать плагины (с минимальными доработками или без доработок их в последующем )?
Да, поддержка плагинов реализована полноценно. Можно добавлять свои переменные, функции (как в численные вычисления, так и в символьные), можно добавлять поддержку новых типов файлов для импорта/экспорта в SMath Studio. Гарантировать, что в последующих версиях ничего не изменится я пока не могу, т.к., по сути, это лишь только начало соответствующих работ, однако уверен, основные принципы уже не изменятся. Показателем готовности можно считать и то, что в версии 0.88 большинство функций и функциональности импорта/экспорта файлов уже вынесено в плагины (папка plugins в установочной директории программы).
Wrote2) как писать собственные плагины ? (старая инструкция которую вы давали к smatch studio 0.85, как я понял не подходит)
Да, та инструкция к альфа версии программы уже неактуальна. На текущий момент самое большое кол-во информации о процессе создания плагинов собрано на английском форуме программы: How to create plugins for SMath Studio (обратите особое внимание на последний комментарий пользователя maweilian). Если будут какие-либо проблемы с английским, то всё равно рекомендую ознакомится с подготовленным мною видео (C#) или с пошаговой инструкцией (VB.Net). На русском кое-что написано здесь: Как создать плагин (дополнение) для SMath Studio. В любом случае не стесняйтесь задавать прямые вопросы по процессу реализации дополнений для SMath Studio - буду отвечать максимально оперативно.
С уважением, Андрей Ивашов.
#3 Опубликовано: 11.06.2010 14:49:43
Спасибо большое, английский я не очень хорошо знаю, но переводчик google поможет 

Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
#4 Опубликовано: 12.06.2010 09:06:59
Вроде все делал ка на видео, SMatch Studio принимает плагин, но при попытке вставить функцию выдает ошибку:
Необрабатываемое исключение в приложении. При нажатии кнопки "Продолжить" приложение проигнорирует ошибку и попытается продолжить работу. При нажатии кнопки "Выход" приложение немедленно завершит работу.
Не удалось привести тип объекта
"SMatch.MikTools.Plugininitializer" к типу
"SMath.Manager.IPluginLowLevelEvaluation".
Необрабатываемое исключение в приложении. При нажатии кнопки "Продолжить" приложение проигнорирует ошибку и попытается продолжить работу. При нажатии кнопки "Выход" приложение немедленно завершит работу.
Не удалось привести тип объекта
"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
}
}
Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
#5 Опубликовано: 12.06.2010 09:24:43
А что такое SMatch.MikTools.Plugininitializer в сообщении об ошибке? В показанном коде я не могу найти ничего подобного.
#6 Опубликовано: 12.06.2010 14:04:31
Прошу проещения, все разобрался. Просто в папке с плагинами оставалась другая моя неудачная попытка
написать плагин... Теперь все работает... И код выше тоже рабочий...
Приложил почти полный перевод учебника (без части про отладку) Как написать плагин для SMatch Sudio на VB.NET (зеркало на сервере smath.info), добавил к нему часть для C#

Приложил почти полный перевод учебника (без части про отладку) Как написать плагин для SMatch Sudio на VB.NET (зеркало на сервере smath.info), добавил к нему часть для C#
Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
#7 Опубликовано: 12.06.2010 17:47:30
А вот еще вопрос, возможно ли поместить контрол в расчеты SMath ?
я только учусь программировать на С#, по этому если можно по подробней...
Я хочу реализовать вот что...

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

Я хочу реализовать вот что...

т.е. логика такая, вписываешь функцию и сразу за ней появляется комбобокс, который можно растягивать по длине за ручки...
1 параметр - матрица
2 параметр - номер колонки в матрице которая попадает в комбобокс
результат - номер выбранного элемента в комбобокс
з.ы. это не обязательно должна быть функция. это может быть элемент типа графика или что то в этом роде
Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
#8 Опубликовано: 13.06.2010 12:43:49
Реализация пользовательских элементов управления посредством плагинов - это следующий шаг расширения возможностей дополнений программы. На данный момент это невозможно.
P.S.: Большое спасибо за перевод и доработку справочника.
P.S.: Большое спасибо за перевод и доработку справочника.
#9 Опубликовано: 14.06.2010 08:20:32
Жаль, буду ждать...

Не официальный справочник http://sites.google.com/site/mikkhalichlab/
jabber конференция smath@conference.jabber.ru
#10 Опубликовано: 14.06.2010 22:22:21
Я так понимаю плагины надо писать на C#. Я к примеру неплохо знаю С++ и java (ну и ассемблер). Так вот, возможно ли применять эти языки для создание плагинов?
#11 Опубликовано: 08.01.2012 22:04:06
Добрый день! Познакомился с SMath, надо сказать был приятно поражен соотношением возможности/размер программы. Спасибо. Пытаюсь осваивать.
Хотелось бы узнать ответы на два вопроса, если не затруднит.
1. Можно ли заставить функцию "ExpressionEvaluation" вернуть строку, которую можно ? извините, чего-то не могу найти описание от Term и не очень понимаю как с ним работать
2. Возможно ли создать свой элемент управления (панель инструментов, например)? Хотелось бы иметь такой элемент, например, для управления передачей данных во внешние приложения.

Хотелось бы узнать ответы на два вопроса, если не затруднит.
1. Можно ли заставить функцию "ExpressionEvaluation" вернуть строку, которую можно ? извините, чего-то не могу найти описание от Term и не очень понимаю как с ним работать

2. Возможно ли создать свой элемент управления (панель инструментов, например)? Хотелось бы иметь такой элемент, например, для управления передачей данных во внешние приложения.
#12 Опубликовано: 11.01.2012 06:45:02
Здравствуйте!
Term - это компонента выражения, т.е. это может быть оператор (+ или - или другой), операнд (число, единицы измерения или имя переменной), функция или скобки.
Выражение состоит из массива таких компонентов (Term[]), но располагаются компоненты в нём в порядке обратной польской нотации, потому первое время разбирать глазами такие массивы может быть сложно. Если же Вы хотите, что бы программа самостоятельно перевела Term[] в "человеческий" (т.е. инфиксный) вид, то используйте следующий метод: SMath.Manager.Converter.ToString(здесь_вставляйте_массив_компонент);
Расширять панель инструментов пока нельзя, но такая возможность обязательно появится позже.
Посмотрите также тему на английском форуме: custom regions - там я показал, какие дополнения стало возможно создавать в последней версии.
WroteМожно ли заставить функцию "ExpressionEvaluation" вернуть строку, которую можно ? извините, чего-то не могу найти описание от Term и не очень понимаю как с ним работать
Term - это компонента выражения, т.е. это может быть оператор (+ или - или другой), операнд (число, единицы измерения или имя переменной), функция или скобки.
Выражение состоит из массива таких компонентов (Term[]), но располагаются компоненты в нём в порядке обратной польской нотации, потому первое время разбирать глазами такие массивы может быть сложно. Если же Вы хотите, что бы программа самостоятельно перевела Term[] в "человеческий" (т.е. инфиксный) вид, то используйте следующий метод: SMath.Manager.Converter.ToString(здесь_вставляйте_массив_компонент);
WroteВозможно ли создать свой элемент управления (панель инструментов, например)? Хотелось бы иметь такой элемент, например, для управления передачей данных во внешние приложения.
Расширять панель инструментов пока нельзя, но такая возможность обязательно появится позже.
Посмотрите также тему на английском форуме: custom regions - там я показал, какие дополнения стало возможно создавать в последней версии.
#13 Опубликовано: 12.01.2012 04:18:51
Большое спасибо за ответ, особенно за ссылочку на примеры. Будем изучать. Особенно заинтересовала возможность создания элементов управления. Как в Mathcad. Хотя, может это и не очень хорошая идея вставлять кнопки, переключатели и списки в рабочий документ? Рабдок сразу приобретает "непечатный" вид. Может лучше открывать их в окне "Менеджер свойств" при выборе выражения? Или в окне диалога при вызове из контекстного меню/контекстной панели инструментов? А в выражении показывать только результат выбора?
Ой..Извиняюсь за офф-топ.

1 страниц (13 вхождений)
-
Новые сообщения
-
Нет новых сообщений