Manual SURPAC
Setembro de 2005
Índice
1
Manual SURPAC
1 SCL 2
1 SCL
1.1 SCL – Visão Geral
A SURPAC Command Language (SCL) substitui a antiga Macro Language
que era incluída nos produtos da SURPAC Software International
previamente na versão 4.0.
The following links will be useful in learning and using TCL and the
SCL extensions to TCL:
1. TCL Syntax
2. A tutorial on TCL & SCL
3. SCL extensions to TCL
4. Conversion guide from Macros to SCL
5. Frequently Asked Questions about SCL
6. Complete TCL reference manual
O que é TCL?
TCL é referente à Tool Command Language. Referência
http://www.scriptics.com site central para maiores informações.
2
Manual SURPAC
O que é TK?
Tk é um Toolkit (kit de ferramentas) TCL que fornece uma interface
com o X Windows e interfaces toolkit Microsoft Windows (dependendo da
plataforma naturalmente). Referência http://www.scriptics.com para maiores
informações.
3
Manual SURPAC
Macro
SCL/TCL Equivalente Detalhes de implementação Exemplos
Característica
_MACRO_STATUS Retorno de valores de Todo comando de extensão SCL if {[SclRangeExpand range
comandos SCL retorna um valor para indicar o status "1,10,1"] == $SCL_OK} {
de conclusão do comando. O status puts "Range expanded
de conclusão pode ser atribuído a OK"
qualquer variável usando o comando } else {
set. puts "Range expansion
failed range =
$SCL_UNDEFINED_HANDLE"
Alguns valores especiais são }
definidos pela SCL por unset range
conveniência dos autores dos
scripts SCL.
SCL_OK
O comando foi completado
com sucesso.
SCL_ERROR
O comando foi concluído com
algum tipo de erro
condicional.
SCL_UNDEFINED_HANDLE
O comando retorna o
parâmetro a uma variável-
objeto que é passada por
referência. Por alguma razão
o comando falhou. Quando
isto ocorre, a variável que se
esperava receber o
parâmetro do objeto será
atribuído o valor de
$SCL_UNDEFINED_HANDL
E desta forma um teste
apropriado pode ser realizado
se necessário.
4
Manual SURPAC
5
Manual SURPAC
6
Manual SURPAC
7
Manual SURPAC
8
Manual SURPAC
set y [expr $y + 2]
}
TCL permite o retorno de valores set a 1
por alguns ou todos os argumentos set b 2
a um procedimento. Isto é set status [externproc a
conseguido usando o comando b]
upvar. puts "a is now $a, b is
now $b"
a is now 2, b is now 3
Procedure Example
proc sum_proc {a b} {
return [expr $a + $b]
}
proc magnitude {num} {
if {$num > 0} {
return $num
}
set num [expr $num *
(-1)]
return $num
}
set num1 12
set num2 14
set sum [sum_proc $num1
$num2]
puts "The sum is $sum"
puts "The magnitude of 3
is [magnitude 3]"
puts "The magnitude of -2
is [magnitude -2]"
Output:
The sum is 26
The magnitude of 3 is 3
The magnitude of -2 is 2
@pause SclPause período Comando de extensão. SclPause 5
9
Manual SURPAC
10
Manual SURPAC
$guido_object
SclGetGuidoValue
substituídos por um aagrpamento "location" location
de commandos para crier e $guido_object
executar objetos Guido através de SclGetGuidoValue "id" id
SCL. $guido_object
SclGetGuidoValue
"breaklines" breaklines
}
# Clean up - this
destroys the Guido object
unset guido_object
}
GuidoForm inputs {
-default_buttons
-label "User Interface
Example"
-layout BoxLayout
Y_AXIS
-tip "Help that is
displayed with the
pointer over the form"
GuidoPanel panel1 {
-border etched true
-label "User inputs"
-layout
CentreLineLayout
GuidoFileBrowserField
location {
-display_length 26
-file_mask *.dtm
-link id
-label Location
-max_length 252
-tip "select the
file to be processed"
}
GuidoField id {
-display_length 16
-format real_8
-label "ID number"
-max_length 16
}
GuidoCheckBox
breaklines {
-default true
-font_style bold
-label "Breaklines
"
-selected_value Y
11
Manual SURPAC
-unselected_value N
-tip "Tick the
checkbox to use
breaklines"
}
}
}
12
Manual SURPAC
}
# destroy the range
object by unsetting the
handle variable
unset handle
}
@goto N/A Não há equivalente em TCL.
@label
Práticas de Programação estruturada
while, for, if, switch, etc, são
necessárias para lidar com
execuções condicionais do código
para scripts TCL/SCL.
13
Manual SURPAC
@(0), @(1), etc. Automatically created argv O argumento posicional passado por
variable. referência da velha macro é ainda 1.3.1.2 Passing arguments
suportado na TCL/SCL mesmo que o form MACRO
argumento seja de certa forma PLAYBACK example
diferente. The script sample below exists in
the file a.tcl. It invokes the script
Quando usada a função MACRO b.tcl and passes the 10 optional
parameters to b.tcl through the
PLAYBACK para chamar um automatically created argv
script TCL com máximo 10 variable.
argumentos opcionais passados
por referência para o script TCL
para ser executado. Isto é feito
criando uma variável TCL do tipo set status [ SclFunction
lista argv que contém uma entrada "MACRO PLAYBACK" {
frm00197={
para cada valor que é inserido nos {
campos do formulário da função
MACRO PLAYBACK. continue_on_error="N"
slow_motion="N"
macro_name="b.tcl"
arg1="This input
came via arg1"
1.3.1.1 Procedimentos com arg2="This input
tamanho de variáveis came via arg2"
do tipo lista arg3="This input
came via arg3"
arg4="This input
Se necessário o tamanho da variável came via arg4"
de argumento tipo lista pode ser arg5="This input
suportado fazendo o último came via arg5"
parâmetro formal num procedimento arg6="This input
de argumento do tipo lista args. came via arg6"
arg7="This input
Isto resulta numa variável came via arg7"
chamada args estando disponível arg8="This input
came via arg8"
para o procedimento. Esta variável arg9="This input
contém uma list de valores do came via arg9"
argumento opcional e os valores arg10="This input
deste argumentos podem ser came via arg10"
obtidos através do uso das funções }
}
de processamento de lista da TCL. }]
Llength para pegar o número de The script sample below exists in the
argumentos de uma lista file b.tcl. It shows how the optional
Lindex para pegar um item da lista arguments are passed to the argv list
foreach para interagir com cada variable and how each value can be
obtained.
elemento da lista
for {set i 0} {$i <
[llength $argv]} {incr i}
14
Manual SURPAC
{
puts "argument
$i=[lindex $argv $i]"
}
{
puts "x = $x, y = $y, z
uma posição (location) na = $z"
viewport 2D ou 3D. } else {
puts "Status = $status"
The digitise event may be }
generated in any 2D or 3D
graphics window. The digitise
request may be cancelled by
pressing the Escape key. If no 2D
or 3D graphics windows presently
exist then the only valid action is
to cancel the digitise request by
pressing Escape.
16
Manual SURPAC
18
Manual SURPAC
Y and Z.
File_access file exists Inbuilt Tcl command set status [file exists filename]
19
Manual SURPAC
expr SclExpr "arithmetic expression" Extension command & inbuilt SclExpr "1 + 2"
command. SclExpr "cosd(90)"
20