Author |
Topic |
|
pavi-chem
United Kingdom
26 Posts |
Posted - 06/14/2023 : 12:10:39 PM
|
OriginPro 2022b (64-bit) SR1 9.9.5.171 (Academic) Copyright © 1991-2022 OriginLab Corporation
Hi Origin team,
I am trying to add a text note with the information of the input prompts in the python script to keep track of the data files used but I am getting error as op.new_doc() doesn't exist, could anyone help with that?
origin_project = op.new_doc() note_window = origin_project.add_note_window()
# Add notes with the file information note_window.add_text("Graph 1 Information:") note_window.add_text(f"Graph 1 Template: {os.path.basename(template_file_path_1)}") note_window.add_text(f"Graph 1 Template Path: {template_file_path_1}")
Thanks a bunch! Pavi. |
|
minimax
351 Posts |
Posted - 06/15/2023 : 06:28:17 AM
|
Hi pavi-chem,
Currently there is no python interfaces on note window.
We will try to improve it.
We added it to our record database: ORG-27294. |
|
|
pavi-chem
United Kingdom
26 Posts |
Posted - 06/15/2023 : 5:03:59 PM
|
Hi,
thanks for the quick response. For now I am saving it as a separate text file. Looking forward for the update :)
Thanks a bunch! Pavi. |
|
|
minimax
351 Posts |
Posted - 06/26/2023 : 01:58:49 AM
|
Hi pavi-chem,
We have just released a new version of originpro, v1.1.7
https://pypi.org/project/originpro/1.1.7/
You can upgrade it on Connectivity menu - Python Packages.
Following is a sample script on notes window.
import originpro as op
import os
template_file_path_1=op.path('e')+'line.otpu'
nt1=op.new_notes()
nt1.append("Graph 1 Information:")
nt1.append(f"Template: {os.path.basename(template_file_path_1)}")
nt1.append(f"Template Path: {os.path.dirname(template_file_path_1)}")
More methods/properties can be seen on https://my.originlab.com/forum/topic.asp?TOPIC_ID=47987 |
|
|
pavi-chem
United Kingdom
26 Posts |
Posted - 06/26/2023 : 07:14:50 AM
|
That was fast! thank you for updating here. My code will be even more better with this :) |
|
|
pavi-chem
United Kingdom
26 Posts |
Posted - 07/11/2023 : 08:08:13 AM
|
Hi,
I finally got to add the note information but I am keep getting an error "An error occurred: 'int' object is not callable"
I ma unsure where this is from and the code was running perfectly before I added the note part. could you help me sort it out please?
import originpro as op import tkinter as tk from tkinter import filedialog import sys import os
def origin_shutdown_exception_hook(exctype, value, traceback): """Ensures Origin gets shut down if an uncaught exception""" op.exit() sys.__excepthook__(exctype, value, traceback)
sys.excepthook = origin_shutdown_exception_hook
# Only run if external Python if op.oext: op.set_show(True)
try: # Prompt user to select an Origin template file for graph 1 root = tk.Tk() root.withdraw() template_file_path_1 = filedialog.askopenfilename(title="Select Origin Template File for Graph 1", filetypes=[("Origin Template Files", "*.otpu")])
# Prompt user to select a CSV file for the selected template csv_file_path = filedialog.askopenfilename(title=f"Select CSV File for {os.path.basename(template_file_path_1)}", filetypes=[("CSV Files", "*.csv")])
# Load the CSV file into Origin worksheet wks = op.new_sheet() wks.from_file(csv_file_path, False)
# Create a new graph using the selected template for graph 1 gr1 = op.new_graph(template=template_file_path_1) gr1[0].add_plot(wks, 1, 0) gr1[0].rescale()
# Prompt user to select an Origin template file for graph 2 template_file_path_2 = filedialog.askopenfilename(title="Select Origin Template File for Graph 2", filetypes=[("Origin Template Files", "*.otpu")])
# Prompt user to select an XLSX file for the second graph xlsx_file_path = filedialog.askopenfilename(title=f"Select XLSX File for {os.path.basename(template_file_path_2)}", filetypes=[("XLSX Files", "*.xlsx")])
# Load the XLSX file into a new worksheet wks2 = op.new_sheet() wks2.from_file(xlsx_file_path, False)
# Create a graph page with the user-selected template for graph 2 gr2 = op.new_graph(template=template_file_path_2) gl2 = gr2[0]
# Prompt user for the range of columns to plot for graph 2 column_range = input("Enter the range of columns (e.g., 1-12) for graph 2: ") start_col, end_col = map(int, column_range.split("-")) y_columns = list(range(start_col, end_col + 1))
for col in y_columns: plot = gl2.add_plot(wks2, col, 0)
# Group and Rescale the graph gl2.group() gl2.rescale()
# Prompt user to select an Origin template file for graph 3 template_file_path_3 = filedialog.askopenfilename(title="Select Origin Template File for Graph 3", filetypes=[("Origin Template Files", "*.otpu")])
# Prompt user to select an XLSX file for graph 3 xlsx_file_path = filedialog.askopenfilename(title=f"Select XLSX File for {os.path.basename(template_file_path_3)}", filetypes=[("XLSX Files", "*.xlsx")])
# Load the XLSX file into a new worksheet wks3 = op.new_sheet() wks3.from_file(xlsx_file_path, False)
# Create a graph page with the user-selected template for graph 3 gr3 = op.new_graph(template=template_file_path_3) gl3 = gr3[0]
# Prompt user for the range of columns to plot for graph 3 column_range = input("Enter the range of columns (e.g., 1-12) for graph 3: ") start_col, end_col = map(int, column_range.split("-")) y_columns = list(range(start_col, end_col + 1))
for col in y_columns: plot = gl3.add_plot(wks3, col, 0)
# Group and Rescale the graph gl3.group() gl3.rescale()
# Tile all windows op.lt_exec('win-s T')
# Prompt user for the output Origin file name output_file_path = filedialog.asksaveasfilename(title="Save Output Origin File", filetypes=[("Origin Project Files", "*.opju")])
# Save the project to the specified output file path using both op.oext and op.save if op.oext: output_file_path = os.path.abspath(output_file_path) op.save(output_file_path)
# Creating a notes window nt = op.new_notes()
# Appending input information to the notes nt.append("Input Information:") nt.append(f"Graph 1 Template: {os.path.basename(template_file_path_1)}") nt.append(f"Graph 1 CSV File: {os.path.basename(csv_file_path)}") nt.append(f"Graph 2 Template: {os.path.basename(template_file_path_2)}") nt.append(f"Graph 2 XLSX File: {os.path.basename(xlsx_file_path)}") nt.append(f"Graph 3 Template: {os.path.basename(template_file_path_3)}") nt.append(f"Graph 3 XLSX File: {os.path.basename(xlsx_file_path)}")
# Appending output file information to the notes nt.append("\nOutput Information:") nt.append(f"Output File: {os.path.basename(output_file_path)}")
# Displaying the note nt.view()
except Exception as e: print(f"An error occurred: {str(e)}") op.exit()
Thanks a bunch! Pavi. |
|
|
minimax
351 Posts |
Posted - 07/12/2023 : 05:13:46 AM
|
Hi pavi-chem,
Firstly, this forum website supports code syntax display.
On editing you can click the "#" icon to add the code block notation.
And then you can paste the py scripts inside it, which can retain the indentation etc. for easier reading.
On the other hand, would you mind to paste the full error message log? like it should tell which line the error appears? |
|
|
pavi-chem
United Kingdom
26 Posts |
Posted - 07/12/2023 : 05:35:03 AM
|
Dear Minimax,
thanks for the response.
Sorry new to the forum and don't know how to use it properly. I added the program and screenshot of the error message in this g-drive: https://drive.google.com/drive/folders/1iTsgu27A215BDKowbooem94HnQgGe1pY?usp=sharing
import originpro as op
import tkinter as tk
from tkinter import filedialog
import sys
import os
def origin_shutdown_exception_hook(exctype, value, traceback):
"""Ensures Origin gets shut down if an uncaught exception"""
op.exit()
sys.__excepthook__(exctype, value, traceback)
sys.excepthook = origin_shutdown_exception_hook
# Only run if external Python
if op.oext:
op.set_show(True)
try:
# Prompt user to select an Origin template file for graph 1
root = tk.Tk()
root.withdraw()
template_file_path_1 = filedialog.askopenfilename(title="Select Origin Template File for Graph 1",
filetypes=[("Origin Template Files", "*.otpu")])
# Prompt user to select a CSV file for the selected template
csv_file_path = filedialog.askopenfilename(title=f"Select CSV File for {os.path.basename(template_file_path_1)}",
filetypes=[("CSV Files", "*.csv")])
# Load the CSV file into Origin worksheet
wks = op.new_sheet()
wks.from_file(csv_file_path, False)
# Create a new graph using the selected template for graph 1
gr1 = op.new_graph(template=template_file_path_1)
gr1[0].add_plot(wks, 1, 0)
gr1[0].rescale()
# Prompt user to select an Origin template file for graph 2
template_file_path_2 = filedialog.askopenfilename(title="Select Origin Template File for Graph 2",
filetypes=[("Origin Template Files", "*.otpu")])
# Prompt user to select an XLSX file for the second graph
xlsx_file_path = filedialog.askopenfilename(title=f"Select XLSX File for {os.path.basename(template_file_path_2)}",
filetypes=[("XLSX Files", "*.xlsx")])
# Load the XLSX file into a new worksheet
wks2 = op.new_sheet()
wks2.from_file(xlsx_file_path, False)
# Create a graph page with the user-selected template for graph 2
gr2 = op.new_graph(template=template_file_path_2)
gl2 = gr2[0]
# Prompt user for the range of columns to plot for graph 2
column_range = input("Enter the range of columns (e.g., 1-12) for graph 2: ")
start_col, end_col = map(int, column_range.split("-"))
y_columns = list(range(start_col, end_col + 1))
for col in y_columns:
plot = gl2.add_plot(wks2, col, 0)
# Group and Rescale the graph
gl2.group()
gl2.rescale()
# Prompt user to select an Origin template file for graph 3
template_file_path_3 = filedialog.askopenfilename(title="Select Origin Template File for Graph 3",
filetypes=[("Origin Template Files", "*.otpu")])
# Prompt user to select an XLSX file for graph 3
xlsx_file_path = filedialog.askopenfilename(title=f"Select XLSX File for {os.path.basename(template_file_path_3)}",
filetypes=[("XLSX Files", "*.xlsx")])
# Load the XLSX file into a new worksheet
wks3 = op.new_sheet()
wks3.from_file(xlsx_file_path, False)
# Create a graph page with the user-selected template for graph 3
gr3 = op.new_graph(template=template_file_path_3)
gl3 = gr3[0]
# Prompt user for the range of columns to plot for graph 3
column_range = input("Enter the range of columns (e.g., 1-12) for graph 3: ")
start_col, end_col = map(int, column_range.split("-"))
y_columns = list(range(start_col, end_col + 1))
for col in y_columns:
plot = gl3.add_plot(wks3, col, 0)
# Group and Rescale the graph
gl3.group()
gl3.rescale()
# Tile all windows
op.lt_exec('win-s T')
# Prompt user for the output Origin file name
output_file_path = filedialog.asksaveasfilename(title="Save Output Origin File",
filetypes=[("Origin Project Files", "*.opju")])
# Save the project to the specified output file path using both op.oext and op.save
if op.oext:
output_file_path = os.path.abspath(output_file_path)
op.save(output_file_path)
# Creating a notes window
nt = op.new_notes()
# Appending input information to the notes
nt.append("Input Information:")
nt.append(f"Graph 1 Template: {os.path.basename(template_file_path_1)}")
nt.append(f"Graph 1 CSV File: {os.path.basename(csv_file_path)}")
nt.append(f"Graph 2 Template: {os.path.basename(template_file_path_2)}")
nt.append(f"Graph 2 XLSX File: {os.path.basename(xlsx_file_path)}")
nt.append(f"Graph 3 Template: {os.path.basename(template_file_path_3)}")
nt.append(f"Graph 3 XLSX File: {os.path.basename(xlsx_file_path)}")
# Appending output file information to the notes
nt.append("\nOutput Information:")
nt.append(f"Output File: {os.path.basename(output_file_path)}")
# Displaying the note
nt.view()
except Exception as e:
print(f"An error occurred: {str(e)}")
op.exit()
Error window shows only this: C:\Users\r01pg22\PycharmProjects\origin-template-1\venv\Scripts\python.exe C:/Users/r01pg22/AppData/Local/JetBrains/Toolbox/apps/PyCharm-C/ch-0/231.9011.38/plugins/python-ce/helpers/pydev/pydevd.py --multiprocess --qt-support=auto --client 127.0.0.1 --port 56752 --file C:\Users\r01pg22\AppData\Roaming\JetBrains\PyCharmCE2023.1\scratches\testg2.py Connected to pydev debugger (build 231.9011.38) Enter the range of columns (e.g., 1-12) for graph 2: 1-13 Enter the range of columns (e.g., 1-12) for graph 3: 1-13 An error occurred: 'int' object is not callable D_Lib: debug printing for files [.*] and level [100] is turned on D_Lib: debug printing for files [.*] and level [200] is turned on D_Lib: debug printing for files [.*] and level [300] is turned on
Process finished with exit code 0
Thanks a bunch! Pavi. |
|
|
minimax
351 Posts |
Posted - 07/12/2023 : 9:46:38 PM
|
Hi,
The problem is on line
nt.view()
view is a property, not method.
So you need to call it as
nt.view=1 |
|
|
pavi-chem
United Kingdom
26 Posts |
Posted - 07/13/2023 : 07:21:14 AM
|
Thank you, it worked :) |
|
|
|
Topic |
|
|
|