Script Region - Extends SMath Studio with a Script Region (c#, vb.net, python) - Сообщения
#1 Опубликовано: 20.06.2014 06:30:40
Script Region

C# and VB.Net:
Do not use directive "using". You just need to fill function body.
List of specified namespaces (c#, vn.net):
System
System.IO
System.Diagnostics
System.Xml
System.Linq
System.Text
System.Reflection
System.Collections.Generic
System.Globalization
System.Drawing
System.Drawing.Drawing2D
System.Drawing.Imaging
SMath.Manager
SMath.Controls
SMath.Math
SMath.Math.Numeric
List of specified namespaces (python (import * used)):
System
SMath.Manager
SMath.Controls
SMath.Math
SMath.Math.Numeric
Predefined variables available in script (c#, vn.net, python): Store store.
Links:
1. Fast Colored TextBox for Syntax Highlighting (Pavel Torgashov).
2. Runtime-генерирование .Net-кода для тех, кому некогда (Андрей Мартынов).
3. Scripting .NET Applications with IronPython (Jerome Terry).
4. SMath Studio Core documentation (CHM)
Examples:
Script. CurrentDirectory.sm (5 КиБ) скачан 274 раз(а).
Script. CurrentDirectory.pdf (51 КиБ) скачан 338 раз(а).
Script. Show time.sm (4 КиБ) скачан 217 раз(а).
Script. Show time.pdf (42 КиБ) скачан 253 раз(а).
Script. InOut.sm (8 КиБ) скачан 322 раз(а).
Script. InOut.pdf (30 КиБ) скачан 392 раз(а).





C# and VB.Net:
Do not use directive "using". You just need to fill function body.
List of specified namespaces (c#, vn.net):
System
System.IO
System.Diagnostics
System.Xml
System.Linq
System.Text
System.Reflection
System.Collections.Generic
System.Globalization
System.Drawing
System.Drawing.Drawing2D
System.Drawing.Imaging
SMath.Manager
SMath.Controls
SMath.Math
SMath.Math.Numeric
List of specified namespaces (python (import * used)):
System
SMath.Manager
SMath.Controls
SMath.Math
SMath.Math.Numeric
Predefined variables available in script (c#, vn.net, python): Store store.
Links:
1. Fast Colored TextBox for Syntax Highlighting (Pavel Torgashov).
2. Runtime-генерирование .Net-кода для тех, кому некогда (Андрей Мартынов).
3. Scripting .NET Applications with IronPython (Jerome Terry).
4. SMath Studio Core documentation (CHM)
Examples:
Script. CurrentDirectory.sm (5 КиБ) скачан 274 раз(а).
Script. CurrentDirectory.pdf (51 КиБ) скачан 338 раз(а).
Script. Show time.sm (4 КиБ) скачан 217 раз(а).
Script. Show time.pdf (42 КиБ) скачан 253 раз(а).
Script. InOut.sm (8 КиБ) скачан 322 раз(а).
Script. InOut.pdf (30 КиБ) скачан 392 раз(а).
Russia ☭ forever, Viacheslav N. Mezentsev
2 пользователям понравился этот пост
#2 Опубликовано: 20.06.2014 11:50:01
#3 Опубликовано: 21.06.2014 01:53:48
#4 Опубликовано: 28.10.2014 17:10:34
Updated. Small improvements.
EDIT:
Test (c#).

Script:
EDIT:
Test (c#).
Script:
var log = ( Action<string> ) ( ( text ) => store.TraceData(
String.Format( "{0} {1} [INFO ] {2}",
DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString(),text ) ) );
var defs = Enumerable.Range( 0, store.Count ).Select( n => store[n] ).ToList();
defs.ForEach( d => log( d.ToString() ) );
Russia ☭ forever, Viacheslav N. Mezentsev
#5 Опубликовано: 01.02.2016 14:08:32
The source code has been restored, updated and uploaded to svn. Something does not work yet (last example). The plugin is not available, because Release Manager can't build it (too complex I think).
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
Davide Carpi 01.02.2016 14:39:00
#6 Опубликовано: 02.02.2016 04:44:50
Updated (svn). Now last example works and we are waiting when Andrey fix the Release Manager.
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
Davide Carpi 02.02.2016 19:27:00
#7 Опубликовано: 09.02.2016 01:11:56
Updated. Now available.
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
Davide Carpi 09.02.2016 16:36:00
#8 Опубликовано: 23.05.2016 18:12:44
Hi Uni. Admirable work, thanks a lot for this plugin. Just few questions:
- From where plugin's take c#, vb.net and python ¿(i.e. came when plugin is downloaded)?
- ¿Can call nympi or Sci python?
- ¿Can you show how to modify some SMtah's vector or matrix variable? In other words, ¿there are an output, avoiding handling files, to smath worksheet or only can view results in the trace window?
- Not related with your plugin, but ... easy asking you: SMath don't have maple's traperror or mathcad onerror functions?
Have a nice day.
Alvaro.
- From where plugin's take c#, vb.net and python ¿(i.e. came when plugin is downloaded)?
- ¿Can call nympi or Sci python?
- ¿Can you show how to modify some SMtah's vector or matrix variable? In other words, ¿there are an output, avoiding handling files, to smath worksheet or only can view results in the trace window?
- Not related with your plugin, but ... easy asking you: SMath don't have maple's traperror or mathcad onerror functions?
Have a nice day.
Alvaro.
#9 Опубликовано: 25.05.2016 04:41:58
Wrote- From where plugin's take c#, vb.net and python ¿(i.e. came when plugin is downloaded)?
- ¿Can call nympi or Sci python?
- ¿Can you show how to modify some SMtah's vector or matrix variable? In other words, ¿there are an output, avoiding handling files, to smath worksheet or only can view results in the trace window?
c#, vn.net from the .Net Framework which is already installed on your PC.
As for the python I used IronPython which is a part of the plugin.
Not shure about numpi and Sci. I think it is impossible use them now.
You can modify and add definitions to the worksheet dynamically (inside the script). It not so simple to show how you can use this, I need a time to make an example.
Russia ☭ forever, Viacheslav N. Mezentsev
#10 Опубликовано: 27.05.2016 08:11:50
Wrote
c#, vn.net from the .Net Framework which is already installed on your PC.
As for the python I used IronPython which is a part of the plugin.
Not shure about numpi and Sci. I think it is impossible use them now.
You can modify and add definitions to the worksheet dynamically (inside the script). It not so simple to show how you can use this, I need a time to make an example.
Examples (specially regarding Python) would be greatly appreciated!

Tinu
1 пользователям понравился этот пост
Davide Carpi 27.05.2016 08:16:00
#11 Опубликовано: 06.08.2016 10:22:58
Dear all,
I donwloaded @uni's #3 smath file. Tried to understand but it seems more explanation is needed for low level users like me
It would be really perfect having Python scripts running within Smath.
Is there any ongoing effort?
++Ahmet
I donwloaded @uni's #3 smath file. Tried to understand but it seems more explanation is needed for low level users like me

It would be really perfect having Python scripts running within Smath.
Is there any ongoing effort?
++Ahmet
1 пользователям понравился этот пост
frapuano 02.03.2017 09:44:00
#12 Опубликовано: 02.03.2017 01:04:24
Updated. Variable terms added. Some namespaces declared implicit.

Script:
Script:
try
{
string varname = terms[0].Text;
List<Definition> list = new List<Definition>();
for ( int n = 0; n < store.Count; n++ ) list.Add( store[ n ] );
// Функция условия для поиска определения.
Predicate< Definition > cond = delegate( Definition x )
{
// Если имя определения (переменной) равно varname.
return x.Name.Equals( varname );
};
// Метод Find ищет первый элемент, который удовлетворяет условию.
Definition def = list.Find( cond );
// Если элемент найден, то что-нибудь делаем.
store.TraceData( varname + ( def != null ? " " : " not " ) + "found" );
if ( def != null )
{
TMatrix m = new TMatrix( new TNumber[ 2, 3 ] );
m.unit.SetValue( ( TNumber ) new TDouble( "\"name\"" ), new long[] { 0, 0 } );
m.unit.SetValue( ( TNumber ) new TDouble( "\"descr\"" ), new long[] { 0, 1 } );
m.unit.SetValue( ( TNumber ) new TDouble( "\"value\"" ), new long[] { 0, 2 } );
m.unit.SetValue( ( TNumber ) new TDouble( "\"" + def.Name + "\"" ), new long[] { 1, 0 } );
m.unit.SetValue( ( TNumber ) new TDouble( "\"" + def.Description + "\"" ), new long[] { 1, 1 } );
TNumber val = SMath.Math.Numeric.Expression.Calculate( def.Result, store );
m.unit.SetValue( val, new long[] { 1, 2 } );
Definition res = new Definition( "out", m.ToTerms(), new Term[0] );
store.AddDefinition( res );
}
}
catch ( Exception ex )
{
store.TraceData( ex.Message );
}
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
frapuano 02.03.2017 09:44:00
#13 Опубликовано: 02.03.2017 15:51:49
Updated. Fixed some issues related to vb compiler.
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
frapuano 02.03.2017 19:32:00
#14 Опубликовано: 04.03.2017 05:58:07
Updated. Examples added.
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
frapuano 04.03.2017 17:36:00
#15 Опубликовано: 04.03.2017 12:44:52
Updated. Now more magic available.
![2017-03-04 20-42-28 SMath Studio - [Script. Lambda. Linq.sm].png](/ru-RU/file/RLcvLY/2017-03-04-20-42-28-SMath-Studio---_Script_-Lambda_-Linq_sm__png)
Script:
Script:
var args = Entry.Create( terms );
var entries = args.Items.ToList().Take(3).Select( x => Decision.Preprocessing( x, store ) ).ToList();
var nums = entries.Select( x => SMath.Math.Numeric.Expression.Calculate( x, store ).obj.ToDouble() ).ToList();
nums.ForEach( n => store.TraceData( n.ToString() ) );
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
frapuano 04.03.2017 17:38:00
#16 Опубликовано: 06.03.2017 07:12:14
Updated. Another attempt to fix the problem related with the portable version. Martin, please try again. Now the tmp directory appears in the plugins directory and you need to remove it content manually periodically. Fix this later.
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
Martin Kraska 06.03.2017 09:18:00
#17 Опубликовано: 06.03.2017 11:09:45
Now working with the portable version, thanks. With maxima, we had quite some issues with temp dirs (interference between multiple smath instances or documents...
Martin Kraska
Pre-configured portable distribution of SMath Studio: https://en.smath.info/wiki/SMath%20with%20Plugins.ashx
#18 Опубликовано: 08.03.2017 04:12:54
Add definitions from list of strings. To get a textual representation we use [Ctrl+C], [Ctrl+V].
![2017-03-08 12-08-37 SMath Studio - [Script. Load definitions.sm ].png](/ru-RU/file/eEV8ed/2017-03-08-12-08-37-SMath-Studio---_Script_-Load-definitions_sm-__png)
Script:
Script:
var defs = new List<string>( new[] { "E:m*c^2", "a:1", "b:2" } );
defs.ForEach( d =>
{
var tmp = SMath.Math.Symbolic.Converter.ToMItem(d).ToTerms();
Decision.SymbolicCalculation( Entry.Create( tmp ), store );
} );
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
Davide Carpi 08.03.2017 06:06:00
#19 Опубликовано: 08.03.2017 13:32:48
String to matrix (c#).
![2017-03-08 21-31-34 SMath Studio - [Script. String to matrix.sm].png](/ru-RU/file/4eQA65/2017-03-08-21-31-34-SMath-Studio---_Script_-String-to-matrix_sm__png)
Script:
Script:
// rows - 2, cols - 3.
var text =
@"
1, 1.2, 0.3,
2, 9.5, -12,
2, 3
";
var provider = new NumberFormatInfo() { NumberDecimalSeparator = "." };
var vals = text
.Split( ',' ).Select( s => s.Trim() )
.Select( x => new TDouble( double.Parse( x, provider ) ).ToTerms() )
.Select( x => Entry.Create(x) ).ToList();
var mat = new Entry( "mat", TermType.Function, vals.ToArray() );
store.AddDefinition( "out", new Term[0], mat );
Russia ☭ forever, Viacheslav N. Mezentsev
1 пользователям понравился этот пост
frapuano 09.03.2017 13:47:00
#20 Опубликовано: 22.03.2017 13:30:36
-
Новые сообщения
-
Нет новых сообщений