Script Region - Extends SMath Studio with a Script Region (c#, vb.net, python) - Messages
#1 Posted: 6/20/2014 6:30:40 AM
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 KiB) downloaded 272 time(s).
Script. CurrentDirectory.pdf (51 KiB) downloaded 337 time(s).
Script. Show time.sm (4 KiB) downloaded 209 time(s).
Script. Show time.pdf (42 KiB) downloaded 252 time(s).
Script. InOut.sm (8 KiB) downloaded 322 time(s).
Script. InOut.pdf (30 KiB) downloaded 389 time(s).





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 KiB) downloaded 272 time(s).
Script. CurrentDirectory.pdf (51 KiB) downloaded 337 time(s).
Script. Show time.sm (4 KiB) downloaded 209 time(s).
Script. Show time.pdf (42 KiB) downloaded 252 time(s).
Script. InOut.sm (8 KiB) downloaded 322 time(s).
Script. InOut.pdf (30 KiB) downloaded 389 time(s).
Russia ☭ forever, Viacheslav N. Mezentsev
2 users liked this post
#2 Posted: 6/20/2014 11:50:01 AM
#3 Posted: 6/21/2014 1:53:48 AM
#4 Posted: 10/28/2014 5:10:34 PM
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 Posted: 2/1/2016 2:08:32 PM
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 users liked this post
Davide Carpi 2/1/2016 2:39:00 PM
#6 Posted: 2/2/2016 4:44:50 AM
Updated (svn). Now last example works and we are waiting when Andrey fix the Release Manager.
Russia ☭ forever, Viacheslav N. Mezentsev
1 users liked this post
Davide Carpi 2/2/2016 7:27:00 PM
#7 Posted: 2/9/2016 1:11:56 AM
Updated. Now available.
Russia ☭ forever, Viacheslav N. Mezentsev
1 users liked this post
Davide Carpi 2/9/2016 4:36:00 PM
#8 Posted: 5/23/2016 6:12:44 PM
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 Posted: 5/25/2016 4:41:58 AM
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 Posted: 5/27/2016 8:11:50 AM
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 users liked this post
Davide Carpi 5/27/2016 8:16:00 AM
#11 Posted: 8/6/2016 10:22:58 AM
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 users liked this post
frapuano 3/2/2017 9:44:00 AM
#12 Posted: 3/2/2017 1:04:24 AM
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 users liked this post
frapuano 3/2/2017 9:44:00 AM
#13 Posted: 3/2/2017 3:51:49 PM
Updated. Fixed some issues related to vb compiler.
Russia ☭ forever, Viacheslav N. Mezentsev
1 users liked this post
frapuano 3/2/2017 7:32:00 PM
#14 Posted: 3/4/2017 5:58:07 AM
Updated. Examples added.
Russia ☭ forever, Viacheslav N. Mezentsev
1 users liked this post
frapuano 3/4/2017 5:36:00 PM
#15 Posted: 3/4/2017 12:44:52 PM
Updated. Now more magic available.
![2017-03-04 20-42-28 SMath Studio - [Script. Lambda. Linq.sm].png](/en-US/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 users liked this post
frapuano 3/4/2017 5:38:00 PM
#16 Posted: 3/6/2017 7:12:14 AM
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 users liked this post
Martin Kraska 3/6/2017 9:18:00 AM
#17 Posted: 3/6/2017 11:09:45 AM
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 Posted: 3/8/2017 4:12:54 AM
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](/en-US/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 users liked this post
Davide Carpi 3/8/2017 6:06:00 AM
#19 Posted: 3/8/2017 1:32:48 PM
String to matrix (c#).
![2017-03-08 21-31-34 SMath Studio - [Script. String to matrix.sm].png](/en-US/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 users liked this post
frapuano 3/9/2017 1:47:00 PM
#20 Posted: 3/22/2017 1:30:36 PM
-
New Posts
-
No New Posts