Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Data Handling

Column/Cell Value Formula

...

JIRA

SUMMARY

Description

DETAILS

ORG-20778

Excel like pi product function

Add product Labtalk function which returns the product of a dataset

double product(vector vd)

E.g. column A is filled with 2, 3, 4, 5

In B1 cell, enter = product(A) will get 120, which is 2*3*4*5.

ORG-21992

Excel like LET function

Add LET Labtalk function which pairs values and names and calculates the expression using the names

Easier to write complex formulas, by making it possible to declare and assign values to variables inside a formula

LET(name1, exp1, [name2…], [exp2…], calculation)

exp1 is resolved and assigned to name1, exp2 is resolved and assigned to name2, then assign names to calculation for result. 

LET(x, 1, x+1) -> 2

LET(sum, total(A), n, count(A), sum/n)

ORG-13898

Command Window improvement

Command Window now supports Zoom in/out and auto code complete

support mouse wheel zoom, more support on auto complete

ORG-21926

Introduce new LabTalk command to update pending locks

Improve Labtalk command run -p to update pending locks for active book/sheet.

Code Block
run -p aub;//active book
run -p auw;//active sheet
run -p aubd;//active book and all its descendants
run -p auwd;//active sheet and all its descendants

ORG-21587

LabTalk Access to Dash Definition at Plot Level

Labtalk command set supports setting line dash property.

Syntax: set name -ldf value

Code Block
set %c -ldf  "5 20 10";

ORG-19233

GetN supports dataset elements

GetN Box now supports to assign dataset values.

E.g.

dataset values;
values.setsize(3);
getn (Value 1) values[1] (Value 2) values[2] (Value 3) values[3];

ORG-22214

LT Labtalk control of Box Plots

Add more Labtalk controls to customize Box Plot properties such as statistical lines, labels, etc

layer.plot1.boxchart.line=1,2,3; //show lines in box chart, 1=median,2=mean or 3 both

layer.plot1.boxchart.label=1,2,3;//show label of line, 1=median,2=mean or 3 both

layer.plot.label.font=1; //label font

layer.plot1.label.fsize=20; //label font size

layer.plot1.label.color=2; //label color based on color list, e.g. 1=black, 2=red, etc.

ORG-18101

Sort columns by Long name, etc.

Added Labtalk worksheet method SortCols() to sort columns by Long names

wks.SortCols(L,d);//sort LongName decending

ORG-21874

ORG-22418

ORG-22525

ORG-22838

ORG-22127

Labtalk access to more plot properties

Add more Labtalk controls to customize plot properties such as symbol overlaps, label properties, plot color, etc

Code Block
layer.plot.label.Spec$="0";//to show label at end of plot
layer.plot.label.Spec$="";//turn off show label at specific indices checkbox
layer.plot.label.fsize
layer.plot.label.color
layer.plot.label.form$
layer.plot.symbol.offset = 1; // Symbol Overlapped Arrangement: 0=disable, 1=horizontal, 2=vertical
layer.plot.symbol.oct = 1; // Symbol Overlapped offset center type
layer.plot.contlines = 1; // Enable Contours for surface plot
layer.plot.contmat //specify the index of matrix use for contour line, 0 = self
set/get %c -ccl name //set/get the matrix use for contour line
layer.plot.color
layer.plot.colorlist$ //support individual and group plot
layer.plot.shapelist$ //support individual and group plot, only write access
layer.plot.symbol.size
layer.plot.symbol.kind

ORG-22475

GetNBox focus issue

Increase default GetNBox entry focus time

Changed the default value of 22127

LT labtalk Color() function supports specify mapping column

Improve Color() function to set plot color by column

Syntax: m=colormap, n=indexing, r=RGB

Code Block
layer.plot1.color = color(1, m);//colormap next column to Y
layer.plot1.color = color(-1, n);//index color, one column to the left of Y

ORG-22475

GetNBox focus issue

Increase default GetNBox entry focus time

Changed the default value of @ETG to 1700.

ORG-22313

Skip none-accessible objects in doc looping

doc -e G will skip none-accessible objects in looping graph objects.

When use doc -e G command to loop for all labels and other named objects in the active graph layer, the objects that not accessible from LabTalk will be skipped now.

ORG-21997

Plot Hide Show events from Labtalk

Add a new event “Plot Hide Show” in Object Properties

Open Object Properties dialog, in Programming tab, a new event is added in the Script Run After drop-down list. Choose it and then script will be execution when plot hide/show.

Python

Introduce originpro module. get/set between pandas DataFrame and Origin worksheet.

Introduce originpro module. Support passing data between pandas DataFrame and Origin worksheet.

Under menu Connectivity,add new menu Open Untitled.py, Open Default Python Functions, Open examples.py, Open, Python Packages. etc

OC supports calling Python functions. By default the py file should be placed in the same folder as the c/cpp or XF file, and the name of the py file has to be origin.py.
To change that, you need to

  1. to change working directory

JIRA

SUMMARY

Description

DETAILS

ORG-22062, ORG-21995, ORG-22031, ORG-22106, ORG-22107, ORG-22063, ORG-22556

We have introduced a new originpro package for easy access to Origin from Python. This package works on a higher level, providing easy access to workbooks, matrices and graphs with very little code. The package also provides higher level access to data frames and numpy arrays.

Several sample Origin projects have been added under \Samples\Python sub folder. These samples have Python code attached as .py files in the project.

Documentation including detailed reference for the orignipro package.

https://www.originlab.com/python/doc/originpro/annotated.html

Code Block
import pandas as pd
import originpro as op
wks=op.find_wsheet()
df = wks.to_df()

wks = op.new_wsheet( 'Test Category' )
wks.from_df( df )

ORG-20980

Update preshipped Python version

Upgrade preshipped Python to 3.8.3

upgrade Python to 3.8.3

ORG-21988, ORG-11812

menu access access to Python

  1. Under menu Connectivity add new menu Open Untitled.py, Open Default Python Functions, Open examples.py, Open, Python Packages.

  2. In Code Builder, add menu Python Packages under Tools.

  3. Start Debug button on toolbar (F5) to run Python file.

ORG-22488

Import Wizard with Python support

Support data file import with Python in Import Wizard. Import filter now support Python code

ORG-22203

Fitting functions using Python

Support using Python function as fitting function

Define fitting function using Python and fit in Origin

ORG-22024

Wrap text in Python Console

Support auto wrapping text in Python Console

Allow auto wrapping for dir command’s output in Python Console.

ORG-22046

Add new function for Python Object to call LabTalk with return value

Add new method GetNumProp, GetStrProp, SetNumProp, SetStrProp, DoMethod for Python Object to call LabTalk with return value

GetNumProp, GetStrProp, SetNumProp, SetStrProp, DoMethod are added for PyOrigin and OriginExt.

ORG-22075

Remove Python 2 from installation

Stop supporting Python 2.

Stop supporting Python 2.

ORG-21993

Support Python PIP command

Support installing Python packages with PIP command in LabTalk

All pip commands are supported in LabTalk now.

For example, you can use following command to install numpy package directly.

Code Block
pip install numpy;

ORG-22049

Install Packages from Python Packages menu

Support installing Packages from Python Packages menu

Add Python Packages tool to install/uninstall internal python packages.

In Code Builder, select Tools: Python Packages…

In main workspace, select Connectivity: Python Packages…

ORG-22070

OC to call Python functions

Support calling Python functions from Origin C code

Code Block
Python.OCWD$;//OC Working Directory

2. to change file name(independent of 1)

Code Block
Python.OCWF$;//OC Working Filename

ORG-21996

Labtalk LT to call python functions

Support calling Python functions from Labtalk script

LT supports calling Python functions. By default the py file should be placed in the User Files Folder with name labtalk.py. Call function with syntax

Code Block
aa = py.myfunc(x,y)

We can also specify the file name, for example, signal_utils.py, then we can call the function by

Code Block
aa = py.signal_utils.myfunc(x,y)

Also, you can change the default working directory and default file name by following command,

Code Block
Python.LTWD$;//LT Working Directory
Python.LTWF$;//LT Working Filename

To call Python function in the attached py file in the project, use the py.@ syntax.

Code Block
aa = py.@myfunc(x,y) //if there is a single attached py file
aa = py.@filename.myfunc(x,y) //if there are multiple attached py files, use filename

By default, when calling Python function in LabTalk and Column Formula, function argument is assumed to be list of float, and this can be controlled by system variable @PYFV (Default is 3).

Also, you can specify the argument and return type with function annotations.

Code Block
def f2(a:float, b=1)->float:
    return a+b

An alternative to specify argument and return type is to use docstring, which is more important when function is used in column formula.

Code Block
f = float
F = list of float
s = str
S = list of str
i = int

ORG-22239

Show Python print immediately

Python print() function now output result immediately when executed

Added a system variable @PYO to control if show Python print immediately for Embedded Python.

Code Block
@PYO=1(default):immediate output
@PYO=0:output at the end

For example:

Code Block
import PyOrigin as po
print('before')
po.LT_execute('typ hi')
print('after')

if @PYO=1, will output as

Code Block
before
hi
after

if @PYO=0, will output as

Code Block
hi
before
after

ORG-22158

Support running UTF-8 py file in Origin Python

Support running UTF-8 py file in Origin Python

LT run function allowANSI .py file, for example: run -pyf test.py
  • Python file created in Code Builder is set as UTF-8 by default.

  • ORG-22042

    Add some basic functions under MatricLayer class in OriginExt and PyOrigin

    Add some basic functions under MatricLayer class in OriginExt and PyOrigin: SetShape(), SetNumMats(), GetNumMats()

    Added three function in OriginExt and PyOrigin under MatricLayer class:

    SetShape(self, nRows, nCols, bKeepData=FALSE)

    SetNumMats(self, nMats)

    GetNumMats(self)

    ORG-22012

    Origin COM Improvements 2021

    Added following function in COM, OriginExt and PyOrigin: OPY_CLASS(Page)* , LoadPage(const string& strPathName, int options = CREATE_VISIBLE_SAME);

    Added following function in COM, OriginExt and PyOrigin.

    OPY_CLASS(Page)* LoadPage(const string& strPathName, int options = CREATE_VISIBLE_SAME);

    ORG-21990

    Improve Using Origin from Outside Python

    Added python package OrglabExt for COM calling

    Added python package OrglabExt for COM calling

    ORG-22282

    Prevent Script Window GUI for Python

    if use script window to run Python, it shows message box that recommend to use Python Console instead.

    Show message box that recommend to use Python Console instead.

    ORG-22300

    Set column value with Python code

    Added Python Function tab in Set Column Value dialog to define Python functions which can be called to set column values.

    Add Python Function tab in Set Column Value dialog

    Image Removed

    ORG-22525

    Python control of plot colormap and color list

    Added Python control of plot colormap, color list, symbol type and size.

    Control over plot colormap and color list.

    Code Block
    plot.colormap="candy.oth"
    plot.colormap="beach.pal"

    For example:

    Code Block
    import originpro as op
    
    wks = op.find_sheet()
    graph = op.new_graph(template='scatter')
    layer = graph[0]
    plot = layer.add_plot(wks, coly=1, colx=0)
    layer.rescale()
    plot.color = op.color_col(1,'n')
    plot.colormap="fire"

    Also, control the plot symbol type and size

    Code Block
    plot.symbol_kind
    plot.symbol_size

    ORG-22518

    Better handling of Date and Time columns

    Added methods to originpro WSheet class to set Date and Time format columns:

    Added methods to originpro WSheet class to set Date and Time format columns:

    Code Block
    wks.as_date(col=0, format='yyyy-mm-dd')
    wks.as_time(col=0, format='HH:mm:ss')

    Where format is Origin date time format specifiers.

    ORG-22049

    Python Packages tool

    Easy way to install Python Packages in Origin from Python Packages menu.

    Python Packages dialog to install, upgrade and uninstall packages.

    Menus to open the dialog:

    1. In Origin main window, choose Conectivity: Python Packages…

    2. In Code Builder, choose Tools: Python Packages…

    We recommend restart Origin after the installation.

    ORG-22430

    originpro package update-able independently

    originpro package can now be updated independent of origin releases using Python Packages Tool in Code Builder’s Tools menu.

    originpro package can now be updated independent of origin releases using Python Packages Tool

    ORG-22048

    Support Intellisense for Python

    Support Intellisense for Python coding in Code Builder.

    Implemented features:

    1. Auto complete when typing in editor, or when invoked via menu/hotkey. (Ctrl+L)

    2. Go to definition on symbol under cursor. (F11, or context menu)

    3. Find references on symbol under cursor. (Alt+Shift+F, or context menu)

    4. Docstrings shown as a popup window when hover on a symbol.

    5. Signature help window will be shown after typing '(' for function hint, prototype, parameters will be shown in this window

    6. Show symbols in current file (Alt+M, or main menu)

    New system variables:

    1. @CI: Enable/disable code intellisense

    2. @CIE: Show LSP error. e.g. when fails to find/run dependency

    3. @CIS: Enable intellisense for script window. default=off

    ORG-22193

    OriginExt support for originpro -- project level

    originpro module is available for external python to call Origin COM by OriginExt.

    Use originpro in external python to call Origin COM by OriginExt.

    ORG-22316

    Python Improvement in Workbook template

    1. Workbook template now detects if necessary Python packages are installed.

    2. Support running Python script saved in a text object in workbook.

    1. Added page property “page.tkey$“ for packages, for example, set page.tkey$ = "py:pandas";for a template, when open this template in Origin, will check if pandas python package is installed.

    2. Support running python code in a button. for example. then there are python in a button named test, just need to run “run -pyb test“.

    ORG-22471

    Add Python based templates in New Workbook dialog

    More Python based workbook templates are added. Hovering mouse over those templates tells if it’s Python sample

    Provide some new templates in New Workbook dialog to show how to use Python in Origin.ORG-22606

    LT Labtalk Accessing Cells from Another Book

    Improve LabTalk accessing cells notation from another book.

    • Support col(A) notation. E.g., =[book1]1!col(A)[1]

    • Book Name support resolving string varaible. E.g., Fill A1 cell with “Book1”, the cell formula =[A1$]1!A1 can refer to A1 cell in the 1st sheet of Book1

    • Support A0 notation. E.g., =[A1$]1!B0

    Origin C

    JIRA

    SUMMARY

    Description

    DETAILS

    ORG-21941

    Functions to download color palette from the internet

    Added OC functions to download color palette: int download_palette(LPCSTR lpcszURL, LPCSTR lpcszPALfilename)

    Added following OC functions to download color palette. If file name arg is NULL or empty then the downloaded palette is installed.

    int download_palette(LPCSTR lpcszURL, LPCSTR lpcszPALfilename)

    At this time it can convert the following:

    • Scribus (.xml) (XML)

    • Office Color Table (.soc) (XML)

    • CorelDraw and Corel PhotoPaint (.xml) (XML)

    • Adobe Color (.aco) (Binary)

    • Adobe Color Table (.act) (Binary)

    • Adobe Swatch Exchange (.ase) (binary)

    • JASC PaintShopPro (.pal) (Text)

    ORG-21693

    OC functions to get modifiers from graph

    Two OC functions to get modifiers are added.: DataPlot.GetModifiers & GroupPlot.GetModifiers

    Added two OC functions to get modifiers.

    Code Block
    int DataPlot.GetModifiers(vector<int>& vnDesigs, vector<string>& saNames);
    int GroupPlot.GetModifiers(vector<int>& vnDesigs, vector<string>& saNames, vector<int>& vnIndices);

    ORG-22289

    OC function to get logical coordinates from xyz

    Improve GraphLayer.WorldToView() and GraphLayer.ViewToWorld() to support 3D graph.

    Improve GraphLayer.WorldToView() and GraphLayer.ViewToWorld() to support 3D graph.

    ...

    JIRA

    SUMMARY

    Description

    DETAILS

    ORG-20942

    Main Menu Rework

    Social menu is added before Help menu, Help menu reorganization

    1. App Center menu is moved under Tools main menu.

    2. Training Videos, Graph Gallery and Open Folder: Sample Folder are added under Help main menu.

    3. Help: View Origin Info menu is removed.

    4. Social main menu is added:

    ORG-21600

    HTML Report Ease of Use

    Some menus added related to HTML report

    1. Added “Add HTML Report“ to worksheet tab context menu.

    2. Added a number of shortcut menu items under the HTML menu

    ORG-22434

    Copy Notes Window within or across sessions

    Copy Notes Window within or across sessions

    • Right click a Notes window title bar and choose Copy

    • Right click Notes window in Project Explorer and Copy.

    Then in another running instance of Origin, Ctrl+V to paste such Notes window in current folder.

    Labtalk command

    note.copy();// copy the active Note window to clipboard

    win -n notes __clip__ //create a new Note window from the content of the clipboard

    ORG-12329

    Set Project Protection in Save Project As dialog

    Protect Project… button in Save Project As dialog

    In the past, user had to use Tools: Protection: Protect Project… to set password.

    Then save project to

    In Origin 2021, user can set protection password from File: Save Project As… dialog.

    Image Added

    Apps

    JIRA

    SUMMARY

    Description

    DETAILS

    ORG-21851

    Let Customers to choose download new app xml

    Manually click Download now button to get new apps information

    In origin2020b, origin will download new app xml when open App center dialog if new app info comes. it is not friendly since it takes more or less 15s to finish downloading.

    In origin2021, origin provide a Download Now button in app center dialog when new app info comes, customer can choose download new app info manually as he want. therefore, user does not need waiting when open App Center dialog.

    once downloading is finished, new app info will be updated in App Center dialog instantly.

    ORG-22326

    App Bar order based on previously used or frequency

    In app Bar context menu: Sort Apps->Recently Used is added

    Option is now available to sort App icons in App Bar by usage. In app Bar context menu: Sort Apps->Recently Used..

    ...