class
IImplementationObjectProviderExtension.
IImplementationObjectProviderExtension
Bases: object
Class provides access to the interface and implementation text of a POU. This extension is written for texting purposes. Only ST is supported.
implementation_language
Retrieves the identifier Guid of the implementation language used for this POU. The identifiers correspond to the identifiers provided by global instance 'ImplementationLanguages'.
This example shows how to find out what implementation languate is used.
# Script shows how to get and analyze the network list of a POU and remove some of the containing items.
# We enable the new python 3 print syntax
from __future__ import print_function
myPou = ...
if (myPou.implementation_language == ImplementationLanguages.st):
print("The POU is implemented in Structured Text")
Guid?
get_implementation_text
Retrieves the implementation text.
Returns a string of the implementation text.
string
This example shows how to get the implementation text of a POU.
if not projects.primary:
system.ui.error('No primary project set')
p = projects.primary
pou = p.find('SR_Main', True)[0]
code = pou.get_implementation_text()
print(code)
get_interface_text
Retrieves the interface text.
Returns the interface text.
string
This example shows how to get the text of the POU declaration part.
if not projects.primary:
system.ui.error('No primary project set')
p = projects.primary
pou = p.find('SR_Main', True)[0]
decl = pou.get_interface_text()
print(decl)
set_implementation_text
implementationText
Sets the implementation text of the pou.
implementationText (string) -- The new implementation text, that is to be set.
This example shows how to set the text of the POU implementation part and the declaration part.
decl = "PROGRAM SR_Main\n" + \
"VAR\n" + \
" iTest: INT;\n" + \
"END_VAR";
code = "iTest := iTest +1;"
if not projects.primary:
system.ui.error('No primary project set')
p = projects.primary
pou = p.find('SR_Main', True)[0]
pou.set_interface_text(decl)
pou.set_implementation_text(code)
set_interface_text
interfaceText
Sets the interface text of the pou.
interfaceText (string) -- The new interface text, that is to be set.
This example shows how to set the text of the POU implementation part and the declaration part.
decl = "PROGRAM SR_Main\n" + \
"VAR\n" + \
" iTest: INT;\n" + \
"END_VAR";
code = "iTest := iTest +1;"
if not projects.primary:
system.ui.error('No primary project set')
p = projects.primary
pou = p.find('SR_Main', True)[0]
pou.set_interface_text(decl)
pou.set_implementation_text(code)
has_nwl_implementation
Retrieves a value indicating whether this IScriptObject has a nwl implementation part.
get_networks
Retrieves a list of the networks inside a POU.
This example shows how to get and analyze the networks of a POU and remove some of the contained items.
# Script shows how to get and analyze the network list of a POU and remove some of the containing items.
# We enable the new python 3 print syntax
from __future__ import print_function
# Define the printing function
def print_networks():
# Prints all networks
for network in pou.get_networks():
print(
"id: %3d, network_number: %2d, title: %-10s, comment: %-20s, label: %-20s, out_commented: %-5s, network_item_count: %2d" %
(network.id, network.network_number, network.title, network.comment, network.label, network.out_commented, network.network_item_count)
)
if not projects.primary:
system.ui.error('No primary project set')
proj = projects.primary
# Get main POU
pou = proj.find("SR_Main", True)[0]
# Get first network and print out comment
first_network = pou.get_network(1)
print("First network's comment: %s" % first_network.comment)
# Print out all networks
print("Before action:")
print_networks()
# Remove all out commented networks
for network in pou.get_networks():
if network.out_commented: pou.remove_network(network.network_number)
print("After action:")
print_networks()
Returns a list of the IScriptNetwork s.
get_network
network_number
Retrieves a network inside a POU specified by its network number.
network_number (int) -- The network number.
This example shows how to get and analyze the networks of a POU and remove some of the contained items.
# Script shows how to get and analyze the network list of a POU and remove some of the containing items.
# We enable the new python 3 print syntax
from __future__ import print_function
# Define the printing function
def print_networks():
# Prints all networks
for network in pou.get_networks():
print(
"id: %3d, network_number: %2d, title: %-10s, comment: %-20s, label: %-20s, out_commented: %-5s, network_item_count: %2d" %
(network.id, network.network_number, network.title, network.comment, network.label, network.out_commented, network.network_item_count)
)
if not projects.primary:
system.ui.error('No primary project set')
proj = projects.primary
# Get main POU
pou = proj.find("SR_Main", True)[0]
# Get first network and print out comment
first_network = pou.get_network(1)
print("First network's comment: %s" % first_network.comment)
# Print out all networks
print("Before action:")
print_networks()
# Remove all out commented networks
for network in pou.get_networks():
if network.out_commented: pou.remove_network(network.network_number)
print("After action:")
print_networks()
Returns the specified IScriptNetwork .
remove_network
network_number
Removes a network inside a POU specified by its network number.
network_number (int) -- The network number.
This example shows how to get and analyze the networks of a POU and remove some of the contained items.
# Script shows how to get and analyze the network list of a POU and remove some of the containing items.
# We enable the new python 3 print syntax
from __future__ import print_function
# Define the printing function
def print_networks():
# Prints all networks
for network in pou.get_networks():
print(
"id: %3d, network_number: %2d, title: %-10s, comment: %-20s, label: %-20s, out_commented: %-5s, network_item_count: %2d" %
(network.id, network.network_number, network.title, network.comment, network.label, network.out_commented, network.network_item_count)
)
if not projects.primary:
system.ui.error('No primary project set')
proj = projects.primary
# Get main POU
pou = proj.find("SR_Main", True)[0]
# Get first network and print out comment
first_network = pou.get_network(1)
print("First network's comment: %s" % first_network.comment)
# Print out all networks
print("Before action:")
print_networks()
# Remove all out commented networks
for network in pou.get_networks():
if network.out_commented: pou.remove_network(network.network_number)
print("After action:")
print_networks()