第 3 章 宏
宏是您可以重复使用的会话记录。
在宏中使用命令行开关
使用命令行开关,您可以在启动程序时记录会话、加载和运行宏,或将宏记录到特定的文件和位置。
记录会话
您可以记录在 SailWind Logic 中的工作会话。
步骤
-
在开始菜单中,导航到 SailWind Logic 的快捷方式。
-
右键单击快捷方式,然后单击 属性 弹出。
-
单击 快捷方式 选项卡,然后单击 "目标" 框。
-
在现有快捷方式的末尾,输入📝以下内容:
"-log"
确保在 "powerlogic.exe" 和 "-log" 命令之间输入📝空格。
- 单击 确定。当您运行程序时,将创建一个日志。
将日志文件记录到特定文件和位置
您可以指定记录日志文件的文件名和位置。
步骤
-
在开始菜单中,导航到 SailWind Logic 的快捷方式。
-
右键单击快捷方式,然后单击 属性 弹出。
-
单击 快捷方式 选项卡,然后单击 "目标" 框。
-
在现有快捷方式的末尾,输入📝以下内容:
"-log:[路径和文件名]"
确保在 "powerlogic.exe" 和 "-log" 命令之间输入📝空格。
- 单击 确定。当您运行程序时,将在指定位置使用指定名称创建日志。
启动时运行宏
您可以在启动 SailWind Logic 时在启动时运行宏。
步骤
-
在开始菜单中,导航到 SailWind Logic 的快捷方式。
-
右键单击快捷方式,然后单击 属性 弹出。
-
单击 快捷方式 选项卡,然后单击 "目标" 框。
-
在现有快捷方式的末尾,输入📝以下内容:
"-run=[路径和文件名]"
例如:
-run=C:\SailWind Projects\Samples\mymacro.mcr
确保在 "powerlogic.exe" 和 "-run" 命令之间输入📝空格。或者,您可以使用 / 代替连字符(例如 /run=mymacro.mcr)。
- 单击 确定。当您运行程序时,指定的宏将在程序启动后立即运行。
宏语言介绍
本程序的宏语言类似于标准的 Visual Basic Script (VBScript) 语言。它支持大多数 VBScript 功能,包括以下内容:
变量
本程序的宏引擎支持变量,这些变量可以为 Null 或包含以下类型的值:
表 2. & 运算符参数
数值
数值表示浮点数。

注意:
逻辑
逻辑值可以是 True 或 False。
字符串
字符串值表示字符串。

注意:
数值和字符串值类型是可互换的;它们在赋值时自动相互转换。
有关更多信息,请参见 Str 函数。
双精度
表示数值。
双精度和字符串类型是可互换的;也就是说,它们在赋值时自动相互转换。
对象
对象表示通过由方法和属性组成的接口处理的复杂实体。对象不同于数值和字符串值类型。
对象可能有两种类型:
-
宏对象: 使用宏引擎词汇表处理的内部对象,可能具有也可能不具有自动化接口。
-
自动化对象: 使用自动化处理的内部或外部对象。
两种对象类型的语法相同:
var = Object.Method( arg1, ..., argn )
表达式
本程序的宏引擎使用以下任一表达式:
-
数值: 任何可以计算为数字的表达式。数值表达式的元素可以包括关键字、变量、常量和运算符的任意组合,这些组合会产生数字。
-
字符串: 任何计算相邻字符序列的表达式。字符串表达式的元素可以包括字符串、字符串文字或字符串变量。
运算符
本程序的宏引擎使用以下运算符:
& 运算符 \* 运算符 + 运算符 / 运算符 - 运算符 = 运算符 ^ 运算符 And 运算符 比较运算符 Mod 运算符 Not 运算符 Or 运算符 Xor 运算符
& 运算符
强制两个表达式进行字符串连接。
语法
result = expression1 & expression2
参数
& 运算符具有以下参数:
示例
S="abc" & "123"
* 运算符
将两个数字相乘。
语法
result = number1 * number2
参数
* 运算符具有以下参数:
示例
X = y * z
+ 运算符
将两个数字相加。
语法
result = expression1 + expression2
参数
- 运算符语法具有以下参数:

注意:
当您使用 + 运算符时,可能无法确定是进行加法还是字符串连接。要强制进行字符串连接,请改用 & 运算符。这将消除歧义并提供自文档化代码。
下表描述了 + 运算符对于三种类型组合的行为:
表 3. + 运算符行为
示例
X = y + z
/ 运算符
将一个数除以第二个数并返回浮点结果。
语法
result = number1 / number2
参数
/ 运算符具有以下参数:
示例
x = y/z
- 运算符
求两个数字之间的差或表示数值表达式的负值。
语法
result = number1 - number2
- 运算符是算术减法运算符,用于求两个数字之间的差。
-number
- 运算符是一元取反运算符,表示表达式的负值。
参数
- 运算符具有以下参数:
示例
x = y - z
和
-x
= 运算符
将值赋给变量或属性。
语法
variable = value
参数
= 运算符具有以下参数:
示例
a = 1
^ 运算符
将数字提升到指定指数的幂。
语法
result = number ^ exponent
参数
^ 运算符具有以下参数:
当在单个表达式中执行多个指数运算时,^ 运算符按照从左到右的顺序进行计算。
示例
x = y ^ z
And 运算符
对两个表达式执行逻辑与运算。
语法
result = expression1 And expression2
参数
And 运算符具有以下参数:
下表说明了如何确定结果:
示例
a = b And c
比较运算符
比较表达式。
语法
result = expression1 comparisonoperator expression2
参数
比较运算符具有以下参数:
下表列出了比较运算符以及确定结果为 True、False 或 Null 的条件:
表 5. 比较运算符和结果
示例
b = 1 > 2
Mod 运算符
将一个数除以第二个数并仅返回余数。模数(余数)运算符将浮点数舍入为整数。
语法
result = number1 Mod number2
参数
Mod 运算符具有以下参数:
示例
x = y Mod z
Not 运算符
对表达式执行逻辑非运算。
语法
result = Not expression
参数
Not 运算符具有以下参数:
下表说明了如何确定结果:
表 6. Not 运算符结果
示例
x = Not y
Or 运算符
对两个表达式执行逻辑或运算。
语法
result = expression1 Or expression2
参数
Or 运算符具有以下参数:
下表说明了如何确定结果:
表 7. Or 运算符结果
示例
x = y Or z
Xor 运算符
对两个表达式执行逻辑异或运算。
语法
[result =] expression1 Xor expression2
参数
Xor 运算符具有以下参数:
下表说明了如何确定结果:
示例
x = y Xor z
语句
本程序的宏引擎支持以下 VBScript 和其他语句:
Call Close Dim Do...Loop For-Next Function If...Then...Else 语句 Input # Modal Open Print # ReDim Set Sub While...Wend Width #
Call
将控制权转移到子过程或函数过程。
语法
[Call] name [argumentlist]
当您使用 Call 关键字调用需要参数的过程时,必须将 argumentlist 括在括号中。请参见下面的示例。
参数
Call 语句具有以下参数:
示例
Call MyProc(0)
相关主题
Close
结束使用 Open 语句打开的文件的输入📝/输出 (I/O)。当关闭为 Output 或 Append 打开的文件时,最终的输出缓冲区将写入该文件的操作系统缓冲区;释放与关闭文件关联的所有缓冲区空间;并且文件与其文件编号的关联结束。
语法
Close [filenumberlist]
参数
Close 语句具有以下参数:
如果省略 filenumberlist,则关闭由 Open 语句打开的所有活动文件。
示例
close #1
相关主题
Dim
声明变量并分配存储空间。
语法
参数
Dim 语句具有以下参数:
您也可以使用带有空括号的 Dim 语句来声明动态数组。声明动态数组后,使用 ReDim 语句定义数组中的维数和元素。
示例
Dim x(10), y(20)
相关主题
Do...Loop
当条件为 True 时重复语句块,或直到条件变为 True。
语法
和
参数
Do Loop 语句具有以下参数:
您可以在 Do…Loop 语句中的任何位置放置任意数量的 Exit Do 语句,作为退出 Do Loop 语句的替代方法。Exit Do 通常在某些条件评估后使用,在这种情况下,Exit Do 语句将控制权转移到紧接在 Loop 之后的语句。
在嵌套的 Do Loop 语句中使用时,Exit Do 将控制权转移到发生 Exit Do 的循环上一级的循环。
示例
相关主题
For-Next
将语句组重复指定次数。
语法
参数
For-Next 语句具有以下参数:
step 参数可以是正数或负数。step 的值确定循环处理,如下表所述:
表 9. For-Next 语句循环计数器
循环中的所有语句执行后,step 被添加到 counter。此时,要么再次执行循环中的语句(基于导致循环最初执行的相同测试),要么退出循环,并在 Next 语句之后的语句继续执行。
宏函数
您可以在循环中的任何位置放置任意数量的 Exit For 语句作为退出的替代方法。Exit For 通常在评估条件后使用,以将控制权转移到紧接在 Next 之后的语句。
您可以通过将一个 For-Next 语句放在另一个语句中来嵌套 For-Next 语句。为每个语句提供一个唯一的变量名作为其 counter。以下构造是正确的:
示例
相关主题
Function
声明构成函数过程主体的名称、参数和代码。
与子过程类似,函数过程是一个独立的过程,可以接受参数、执行一系列语句并更改其参数的值。但是,与子过程不同,当您想要使用函数返回的值时,函数过程可以像使用任何内置函数(如 Sqr、Cos 或 Chr)一样在表达式的右侧使用。
您可以在函数过程中使用两类变量:
-
在过程中显式声明的变量: 这些变量始终是过程的局部变量,并使用 Dim 语句或等效语句。函数中局部变量的值在过程调用之间不保留。
-
在过程中未显式声明的变量: 这些变量也是局部的,除非它们在过程外部的更高级别显式声明。
用法
[statements]
[name = expression]
[Exit Function] [statements]
[name = expression]
End Function
Exit Function 语句导致立即退出函数过程。程序执行继续执行调用函数过程的语句之后的语句。您可以在函数过程中添加任意数量的 Exit Function 语句。
Function 语句具有以下参数:
arglist 参数具有以下语法:
[ByVal | ByRef] varname[( )]
下表描述了 arglist 语法元素:
您不能在任何其他过程(如子过程或其他函数过程)内定义函数过程。
有关调用函数过程的具体信息,请参阅 Call 语句。
示例
以下示例显示如何为名为 Example 的函数分配返回值。在这种情况下,False 被分配给名称以指示未满足某个条件。
If...Then...Else 语句
根据表达式的值可能执行一组语句。
语法
If condition Then [statements] [Else [elsestatements]]
块语法:
参数
If...Then...Else 语句有以下参数:
对于简短简单的测试可以使用单行语法。为了更好的结构和灵活性,请使用块语法。块语法也更易于阅读、维护和调试。
使用单行语法时,可以执行多个语句作为 If...Then 判断的结果。所有语句必须在同一行并用冒号分隔,如下例:
If A > 10 Then A = A + 1 : B = B + A : C = C + B
块 If 语句必须是行中的第一个语句。Else、ElseIf 和 End If 部分前面只能有行号或行标签。块 If 语句必须以 End If 语句结束。
要确定语句是否是块 If 语句,请检查 Then 关键字后面的内容。如果在 Then 后面的同一行上出现除注释之外的任何内容,则该语句被视为单行 If 语句。
Else 和 ElseIf 子句都是可选的。在块 If 语句中可以有任意多个 ElseIf 子句,但不能出现在 Else 子句之后。块 If 语句可以嵌套。
在执行块 If 语句时,会测试 condition。当 condition 为 True 时,执行 Then 后面的语句。当 condition 为 False 时,依次评估任何 ElseIf condition。当找到 True 的 condition 时,立即执行关联的 Then 后面的语句。如果没有 ElseIf condition 为 True(或者没有 ElseIf 子句),则执行 Else 后面的语句。执行完 Then 或 Else 后面的语句后,继续执行 End If 后面的语句。
示例
If x < y then x = y
和
If x < y then x = y End if
相关主题
Input
从打开的文本文件中读取数据并将数据分配给变量。此语句仅用于以 Input 模式打开的文件。读取时,字符串或数字数据会原样分配给变量。
语法
参数
Input # 语句有以下参数:
相关主题
Modal
打开对变量的访问。当 SailWind 宏中打开模态对话框时,对打开对话框之外的所有变量的访问都会被阻止——只有打开对话框中的控件可访问。要使变量在任何打开的模态对话框上下文中可访问,请在宏文件开头将其声明为 "modal"。
语法
modal variablename
参数
modal 关键字有以下参数:
示例
modal docname
Open
启用对文件的输入📝和输出。在对文件执行任何 I/O 操作之前必须打开文件。Open 操作为文件分配 I/O 缓冲区并确定要使用的访问模式。如果文件已被另一个进程打开且不允许指定的访问类型,则 Open 操作失败并发生错误。
语法
参数
Open 语句有以下参数:
如果 pathname 指定的文件不存在,则在以 Append、Binary、Output 或 Random 访问模式打开文件时会创建该文件。
示例
Open "C:\data.txt" for read as #1
相关主题
宏 Print #
将格式化数据写入顺序文件。
语法
Print # filenumber, [outputlist]
参数
Print # 语句有以下参数:
如果省略 outputlist 并且仅在 filenumber 后包含列表分隔符,则会向文件打印一个空行。
可以用空格或分号分隔多个表达式。空格与分号效果相同。
示例
print #1, a, b, c
outputlist 有以下语法:
[{Spc(n) | Tab[(n)]}] [expression] [charpos]
使用 Print # 写入的数据通常使用 Input # 从文件中读取。
示例
Print #1, a, Spc(3), b
相关主题
ReDim
为动态数组变量重新分配存储空间。使用 ReDim 调整已使用带空括号(无维度下标)的 Dim 语句声明的动态数组的大小。可以重复使用 ReDim 来更改数组中的元素数量和维度。

注意:
如果重新声明在 Dim 语句中明确指定了大小的数组变量的维度,则会发生错误。
语法
参数
ReDim 语句有以下参数:

注意:
如果将数组缩小,则被删除元素中的任何数据都会丢失。
使用 Preserve 时,只能调整最后一个数组维度的大小,不能更改维度数量。例如,如果数组只有一个维度,则可以调整该维度的大小,因为它是最后一个也是唯一的维度。
但是,如果数组有两个或多个维度,则只能更改最后一个维度的大小,同时保留数组内容。以下示例展示了如何在不擦除数组中现有数据的情况下增加动态数组最后一个维度的大小:
使用 Preserve 时,只能通过更改上限来更改数组的大小。更改下限会导致错误。
示例
ReDim x(150)
相关主题
Set
将对象引用分配给变量或属性。
语法
Set objectvar = {objectexpression | Nothing}
参数
Set 语句有以下参数:
要有效,objectvar 必须与要分配给它的对象具有相同的对象类型。
Dim 和 ReDim 语句仅声明变量名称,该名称引用对象。除非 Set 语句分配了特定对象,否则不会引用实际对象。
当使用 Set 将对象引用分配给变量时,会创建对对象的引用 - 而不是对象的副本。多个对象变量可以引用同一个对象。因为这样的变量是对对象的引用而不是对象的副本,所以对象的任何更改都会反映在所有引用它的变量中。
示例
相关主题
子程序
声明构成子程序体的名称、参数和代码。
与函数过程类似,子程序是一个独立的可接收参数、执行一系列语句并改变其参数值的过程。但与返回值的函数过程不同,子程序不能用于表达式中。
子程序语句中可使用两类变量:
-
过程内显式声明的变量:这些变量始终是过程局部变量,使用 Dim 语句或等效语句声明。子程序中局部变量的值在过程调用之间不会保留。
-
过程内未显式声明的变量:这些变量也是局部的,除非在过程外部的更高层级显式声明。
用法
End Sub
Sub 语句包含以下参数:
示例
参数列表 参数具有以下语法:
[ByVal | ByRef] 变量名[( )]
表 12. 子程序语句参数列表语法

注意:
不能在函数或其他子程序等任何其他过程中定义子程序。
有关调用子程序的具体信息,请参阅 Call 语句。
相关主题
While...Wend
当给定条件为 True 时执行一系列语句。
语法
参数
While Wend 语句包含以下参数:
如果条件为 True,则执行所有语句直到遇到 Wend 语句。然后控制返回到 While 语句并再次检查条件。如果条件仍为 True,则重复该过程。如果条件不为 True,则继续执行 Wend 语句之后的语句。
可以嵌套任意层级的 While...Wend 语句。每个 Wend 与最近的 While 语句匹配。
示例
相关主题
宏 Width #
Width
为使用 Open 语句打开的文件分配输出行宽。
语法
Width #文件号, 宽度
参数
Width # 语句包含以下参数:
示例
Width #2, 100
相关主题
函数
本程序的宏引擎当前支持以下内置函数:
Asc Atn Chr Command Cos CreateObject CurDir Dir DoEvents Environ Eof Exp GetObject GetTmpFileName InStr InStrRev Left Len Mid MkDir MoveFile MsgBox Right Sin Spc Str Tab Val
Asc
此函数返回一个整数,表示字符串中第一个字母对应的字符代码。
语法
Asc(字符串)
参数
Atn 函数包含以下参数:
示例
Atn
此函数返回一个 Double,指定数字的反正切值。
更多信息请参阅 Double。
结果范围在 -π/2 到 π/2 弧度之间。要将度数转换为弧度,请将度数乘以 π/180。要将弧度转换为度数,请将弧度乘以 180/π。
Atn 函数取直角三角形两条边的比值并返回对应的弧度角。该比值是对边长度除以邻边长度。
Atn 是 Tan 的逆三角函数,Tan 以角度为参数并返回直角三角形两条边的比值。不要将 Atn 与余切混淆,余切是正切的倒数(1/正切)。
用法
Atn(数字)
Atn 函数包含以下参数:
示例
f = Atn(2)
Chr
此函数返回包含与指定字符代码关联的字符的字符串。
语法
Chr(字符代码)
参数
Chr 函数包含以下参数:
示例
c = chr(64)
Command
此函数返回用于启动程序的命令行,包括可执行文件的路径和任何后续参数。
语法
Command
当从命令行启动程序时,命令行对宏脚本可用。
参数
无
示例
假设程序通过以下命令启动:
Command 函数返回:
Cos
此函数返回一个 Double,指定角度的余弦值。
更多信息请参阅 Double。
Cos 函数取一个角度并返回邻边长度除以斜边长度的比值。结果范围在 -1 到 1 之间。要将度数转换为弧度,请将度数乘以 π/180。要将弧度转换为度数,请将弧度乘以 180/π。
用法
Cos(数字)
Cos 函数包含以下参数:
示例
x = Cos(1.57)
CreateObject
此函数创建并返回对 ActiveX 对象的引用。
语法
CreateObject(类,[服务器名])
参数
CreateObject 函数语法包含以下参数:
类 参数使用语法 应用程序名.对象类型 并包含以下元素:
要创建 ActiveX 对象,请将由 CreateObject 返回的对象分配给对象变量。
当对象没有当前实例时使用 CreateObject。如果对象实例已在运行,则启动新实例并创建指定类型的对象。要使用当前实例,或启动应用程序并使其加载文件,请使用 GetObject 函数。
如果对象已将自己注册为单实例对象,则无论执行多少次 CreateObject,都只会创建一个对象实例。
示例
set obj = CreateObject("PowerPCB.Application")
CurDir
此函数返回一个表示当前路径的变体字符串。
语法
CurDir [(drive)]
参数
CurDir 函数有以下参数:
示例
Dir
此函数返回与指定模式、文件属性或驱动器卷标匹配的文件或文件夹名称字符串。
语法
Dir(pathname)
参数
Dir 函数有以下参数:
Dir 支持使用多字符 (*) 和单字符 (?) 通配符来指定多个文件。
示例
获取 C 盘根目录下的第一个文件:
Dir("C:\.")
获取同一路径下的下一个文件:
Dir
在 C:\SailWind Projects\Samples 开始另一个搜索:
DoEvents
此函数将控制权传递给操作系统。操作系统在处理完其队列中的事件后返回控制权。
语法
DoEvents()
如果宏正在执行长时间计算,DoEvents 可能很有用。每隔一秒或更长时间插入 DoEvents 调用可以防止队列中未处理事件的累积。
参数
Environ
此函数返回与操作系统环境变量关联的字符串。
语法
参数
Environ 函数有以下参数:
如果在环境字符串表中找不到 envstring,则返回空字符串 ("")。
Environ 返回分配给指定 envstring 的文本;即在环境字符串表中该环境变量的等号 (=) 后面的文本。
示例
Eof
此函数返回一个整数,表示布尔值 True,当以随机或顺序输入📝方式打开的文件已到达结尾时。
使用 Eof 函数可避免在文件结尾后尝试获取输入📝时产生的错误。
表 13. Eof 函数返回值
用法
Eof [(filenumber)]
Eof 函数有以下参数:
示例
Exp
此函数返回一个 Double 值,指定 e(自然对数的底数)的幂。常数 e 约为 2.718282。
更多信息请参见 Double。

注意:
Exp 函数与 Log 函数互补,可称为反对数。
用法
Exp(number)
Exp 函数有以下参数:
示例
x = exp(y)
GetObject
此函数返回对 ActiveX 组件提供的对象的引用。
语法
GetObject([pathname] [, class])
参数
GetObject 函数有以下参数:
class 参数使用语法 appname.objecttype,包含以下元素:
使用 GetObject 函数从文件访问 ActiveX 对象并将该对象分配给对象变量。使用 Set 语句将 GetObject 函数返回的对象分配给对象变量。
示例
obj = GetObject(, "PowerPCB.Application")
GetTmpFileName
此函数返回一个字符串,指定一个保证在由字符串参数标识的文件夹中唯一的新文件名。
语法
GetTmpFileName(string)
参数
GetTmpFileName 函数有以下参数:
示例
s = GetTmpFileName("d:\tmp")
InStr
此函数返回一个字符串在另一个字符串中首次出现的位置。
语法
InStr([start, ]string1, string2)
参数
InStr 函数有以下参数:
返回值
表 14. InStr 函数返回值
示例
i = InStr(1,"cbc","c")
InStrRev
此函数返回一个字符串在另一个字符串中从末尾开始查找的匹配位置。
语法
InStrRev(string1, string2, [start])
参数
InStrRev 函数有以下参数:
返回值
表 15. InStrRev 函数返回值
示例
以下示例代码返回 "4"。
Left
此函数返回字符串左侧指定数量的字符。
语法
Left(string, length**)**
参数
Left 函数有以下参数:
示例
以下示例代码返回 "ab"。
Len
此函数返回字符串中的字符数(字符串长度)。
语法
Len(string)
参数
Len 函数有以下参数:
示例
以下示例代码返回 4。
Len("abcd")
Mid
此函数返回字符串中指定数量的字符。
语法
Mid (string, start, [length])
参数
Mid 函数有以下参数:
示例
以下示例代码返回 "cd"。
Mid("abcdbc", 3, 2)
MkDir
此函数创建新文件夹。
语法
MkDir (path)
参数
MkDir 函数有以下参数:
示例
MoveFile
此函数将 path1 参数指定的文件移动到 path2 指定的位置。
语法
MoveFile(path1, path2)
参数
MoveFile 函数有以下参数:
示例
MsgBox
此函数在对话框中显示消息,等待用户单击按钮,并返回一个整数指示用户单击了哪个按钮。
用法
MsgBox(prompt [, buttons] [, title])
MsgBox 函数有以下参数:
buttons 参数设置如下:
表 16. MsgBox 按钮设置
为 buttons 参数创建最终值时,每组只能使用一个数字。
-
第一组值 (0-5) 描述对话框中显示的按钮数量和类型
-
第二组值 (16, 32, 48, 64) 描述图标样式
-
第三组值 (0, 256, 512) 显示哪个按钮是默认的。
返回值
*如果对话框显示取消按钮,按 Esc 键与单击取消效果相同。
示例
MsgBox("Hello",mbOK, "This is a message box")
Right
此函数返回字符串右侧指定数量的字符。
语法
Right(string, length**)**
参数
Right 函数有以下参数:
示例
以下示例代码返回 "dbc"。
Sin
此函数返回一个 Double 值,指定角度的正弦值。
更多信息请参见 Double。
Sin 函数接受一个角度并返回直角三角形两条边的比值。该比值是对边长度除以斜边长度。
结果范围在 -1 到 1 之间。
要将度数转换为弧度,将度数乘以 pi/180。要将弧度转换为度数,将弧度乘以 180/pi。
用法
Sin(number)
Sin 函数有以下参数:
number 必需
宏 Spc
任何以弧度表示角度的表达式。如果表达式不是数值类型,则转换为数值类型。
示例
x = sin(y)
Spc
此函数与 Print # 语句或 Print 方法一起使用以定位输出。
更多信息,请参见 Print # 语句或 Print 方法。
用法
Spc 函数有以下参数:
如果 n 小于输出行宽度,下一个打印位置紧跟在打印的空格数之后。如果 n 大于输出行宽度,Spc 使用以下公式计算下一个打印位置:
例如,如果当前打印位置为 24,输出行宽度为 80,指定 Spc(90),则下一个打印将从位置 34 开始 (当前打印位置 + 90/80 的余数)。如果当前打印位置与输出行宽度之差小于 n (或 n Mod width),Spc 函数跳到下一行开头并生成等于 n - (width currentprintposition) 的空格。
示例
Spc(3)
Str
此函数返回数字的字符串表示形式。
语法
Str(number)
参数
Str 函数有以下参数:
当数字转换为字符串时,始终为 number 的符号保留一个前导空格。如果 number 为正数,返回的字符串包含一个前导空格,加号被隐含表示。
示例
x = Str(324)
Tab
此函数与 Print # 语句或 Print 方法一起使用来定位输出。
用法
Tab[(n)]
Tab 函数有以下参数:
如果省略 n,Tab 将插入点移动到下一个打印区域的开始处。这允许您在使用逗号作为小数分隔符时使用 Tab 代替逗号。
如果当前行上的当前打印位置大于 n,Tab 会跳到下一输出行的第 n 列。如果 n 小于 1,Tab 将打印位置移动到第 1 列。如果 n 大于输出行宽度,Tab 使用以下公式计算下一个打印位置:
例如,如果 width 为 80 且您指定 Tab(90),则下一个打印将从第 10 列开始(90/80 的余数)。如果 n 小于当前打印位置,打印将从计算出的打印位置在下一行开始。如果计算出的打印位置大于当前打印位置,打印将从同一行上计算出的打印位置开始。
输出行上最左侧的打印位置始终为 1。当您使用 b 语句打印到文件时,最右侧的打印位置是输出文件的当前宽度,您可以使用 Width # 语句设置。
示例
Tab(2)
Val
此函数返回字符串中包含的数字作为适当类型的数值。
语法
Val(string)
参数
Val 函数有以下参数:
Val 函数在遇到第一个无法识别为数字部分的字符时停止读取字符串。但是,该函数能识别进制前缀 &O(八进制)和 &H(十六进制)。空格、制表符和换行符将从参数中去除。Val 函数仅识别句点 (.) 作为有效的小数分隔符。
示例
i=Val("123")
自动化支持
程序中的宏引擎通过其自动化对象支持自动化。使用 CreateObject( ) 创建对象或使用 GetObject( ) 连接对象后,可以使用常规语法调用对象的方法。
相关主题
对话框控件
本程序的宏语言使用以下对话框控件:
CheckBox CheckListBox ComboBox EditBox GridControl ListBox PushButton RadioBox SliderControl SpinButton TabControl TreeItem TreeView
CheckBox
此控件表示对话框上的复选框。您可以使用对话框的 Control 方法引用特定复选框。CheckBox 对象使用 State 和 Property 方法。
State
此方法设置复选框的状态。
语法
checkbox.State(iState)
参数
State 有以下参数:
iState 可以有以下值之一:
表 18. CheckBox.State istate 值
表 18. CheckBox.State istate 值(续)
Value 属性
此方法返回或设置复选框控件的状态。
语法
参数
Value 属性有以下参数:
iState 可以有以下值之一:
表 19. CheckBox.Value istate 值
CheckListBox
此控件表示对话框上的复选列表框。
State
此方法设置复选列表框的选择👉状态。
语法
参数
State 方法有以下参数:
SetCheck for CheckListBox
此方法设置复选列表框的选中✅状态。
语法
CheckListBox.SetCheck(string)
参数
SetCheck 方法有以下参数:
ListCount Property for CheckListBox
此方法返回复选列表框中的项目数。
语法
CheckListBox.ListCount
SelCount Property for CheckListBox
此方法返回复选列表框中选中✅的项目数。
语法
CheckListBox.SelCount
Selected Property for CheckListBox
此方法返回或设置复选列表框中项目的选中✅状态。此属性是一个布尔值数组,其项目数与 List 属性相同。
语法
Check Property for CheckListBox
此方法返回或设置复选列表框中项目的选中✅状态。此属性是一个布尔值数组,其项目数与 list 属性相同。
语法
Text Property for CheckListBox
此方法返回复选列表框中当前选中✅项目的文本。
语法
CheckListBox.Text
ComboBox
此控件表示对话框上的组合框。
Select
此方法设置组合框的选择👉状态。
语法
ComboBox.Select(string)
参数
Select 方法有以下参数:
示例
ActiveLayer.Select("Top")
Edit for ComboBox
此方法设置组合框的编辑状态。
语法
ComboBox.Edit(string)
Edit 方法有以下参数:
Text Property for ComboBox
此方法返回或设置组合框文本。
语法
ComboBox.Text[=string]
参数
Text 方法有以下参数:
List Property for ComboBox
此方法返回或设置组合框列表中包含的项目。此列表是一个字符串数组,其中每个元素都是一个列表项。
语法
ComboBox.List(index)
SelStart Property for ComboBox
此方法返回或设置选定文本的起始点。如果未选择👉文本,此方法指示插入点的位置。
语法
ComboBox.SelStart[=index]
SelLength Property for ComboBox
此方法返回或设置选定的字符数。
语法
SelText Property for ComboBox
此方法返回或设置包含当前选定文本的字符串。如果未选择👉字符,此方法返回零长度字符串 ("")。
语法
ComboBox.SelText[=string]
参数
参数是一个字符串表达式,包含要设置到编辑框中的文本。
编辑框
该控件表示对话框上的编辑框。您可以使用对话框的 Control 方法引用特定编辑框。
状态
此方法设置编辑框的状态。
语法
EditBox.State(string)
参数
State 方法有以下参数:
编辑框的 Text 属性
此方法返回或设置编辑框文本。
语法
string 参数是一个字符串表达式,包含要设置到编辑框中的文本。
编辑框的 SelStart 属性
此方法返回或设置选定文本的起始点。如果未选择👉文本,则指示插入点位置。
语法
EditBox.SelStart[=index]
编辑框的 SelLength 属性
此方法返回或设置选定字符的数量。
语法
EditBox.SelLength[=number]
编辑框的 SelText 属性
此方法返回或设置包含当前选定文本的字符串。如果未选择👉字符,则返回空字符串("")。
语法
EditBox.SelText[=string]
参数
SelText 方法有以下参数:
string 一个字符串表达式,包含要设置到编辑框中的文本
网格控件
该控件表示对话框上的网格控件。您可以使用 control 方法引用特定网格控件。
列表框
该控件表示对话框上的列表框。
状态
此方法设置列表框的选择👉状态。
语法
ListBox.State(string)
参数
State 方法有以下参数:
List 属性
此方法返回对话框列表部分包含的项目。该列表是一个字符串数组,其中每个元素都是一个列表项。
语法
ListCount 属性
此方法返回列表框中项目的数量。
语法
SelCount 属性
此方法返回列表框中选定项目的数量。
语法
ListBox.SelCount
Selected 属性
此方法返回或设置列表框中项目的选择👉状态。此属性是一个布尔值数组,其项目数量与 list 属性相同。
语法
ListBox.Selected(index) [=boolean]
Text 属性
此方法返回列表框中当前选定(聚焦)项目的文本。
语法
ListBox.Text
按钮
该控件表示对话框上的按钮(也称为命令按钮)。
Click
此方法模拟按下按钮。
语法
button.Click()
示例
单选按钮
该控件表示对话框上的选项按钮。
状态
此方法检查选项按钮的状态。
语法
RadioBox.State(iState)
参数
State 方法有以下参数:
单选按钮的 Value 属性
此方法返回或检查选项按钮的状态。
语法
RadioBox.Value[=iState]
参数
Value 属性有以下参数:
滑块控件
该控件表示对话框上的滑块控件。
状态
此方法设置滑块的状态。
语法
参数
State 有以下参数:

滑块控件的 Value 属性
此方法返回或设置当前滑块位置。
语法
参数
Value 属性有以下参数:

微调按钮
该控件表示对话框上的微调按钮。
状态
此方法设置微调按钮的状态。
语法
SpinButton.State(iState)
参数
State 有以下参数:
标签控件
该控件表示对话框上的标签。
状态
此方法设置标签的选择👉状态。
语法
TabControl.State(iState)
参数
State 有以下参数:
示例
Value 属性
此方法返回或设置当前标签位置。
语法
TabControl.Value[=tab]
参数
SailWind Logic 命令参考 395
Value 属性有以下参数:
树项
该控件表示对话框上的一个树项。
Select 方法(树项)
此方法设置树项的选中✅状态。
语法
参数
Select 方法有以下参数:
flag 可取值如下:
表 20. TreeItem.Select flag 取值
示例
Expand 方法(树项)
此方法设置树项的展开状态。
语法
TreeItem.Expand(flag)
参数
Expand 方法有以下参数:
flag 必选
数值表达式
flag 可取值如下:
表 21. TreeItem.Expand flag 取值
示例
item.Expand(true)
Focus 方法(树项)
此方法将树项焦点设置到该项。
语法
TreeItem.Focus()
示例
item.Focus(1)
树视图
该控件表示对话框上的树视图。
Item 方法
此方法返回一个 TreeItem 对象。
语法
参数
Item 方法有以下参数:
示例
item = tree.Item("Net Objects\Nets\end")
BeginDrag 方法
宏树视图
此方法模拟将选中✅项拖出树的操作。
语法
TreeView.BeginDrag(itemname)
参数
BeginDrag 方法有以下参数:
Copy 方法
此方法将选中✅项复制到剪贴板。
语法
TreeView.Copy(itemname)
参数
Copy 方法有以下参数:
Drop 方法
此方法模拟将拖动的项放到目标项上。
语法
TreeView.Drop(itemname)
参数
Drop 方法有以下参数:
示例
tree.Drop("Net Objects\Net classes")
Paste 方法
此方法将剪贴板内容粘贴到选中✅分支。
语法
TreeView.Paste(itemname)
参数
Paste 方法有以下参数:
CreateNewItem 方法
此方法在选中✅分支创建新项。此方法返回一个对应于所创建项的 TreeItem 对象。
语法
TreeView.CreateNewItem(itemname)
参数
CreateNewItem 方法有以下参数:
内部宏对象
本程序的内部宏对象包括以下内容:
Application 对象 Dialog 对象 Document 对象 HelpContents 对象 HelpContentsItem 对象 HelpPane 对象 主视图 对象
Application 对象
该对象表示程序的应用程序。该对象有以下方法:
CreateNewDocument ExecuteCommand Help HelpContents HelpPane OpenCustomizeDialog OpenDocument OpenOptionsDialog OpenPropertiesDialog Quit RunMacro
CreateNewDocument 方法
此方法创建一个空文档。
语法
Application.CreateNewDocument
参数
ExecuteCommand 方法
此方法执行程序的一个命令。
语法
Application.ExecuteCommand(command, [arg1,...])
参数
ExecuteCommand 方法有以下参数:
示例
Application.ExecuteCommand("ID_VIEW_BOARD")
和
Application.ExecuteCommand("Open", "C:\SailWind Projects\preview.pcb")
宏帮助
Help 方法
此方法调用帮助系统。
语法
Application.Help()
参数
HelpContents 方法
此方法在帮助内容窗口中返回帮助内容。
语法
Application.HelpContents
参数
无
示例
Set var = Application.HelpContents
宏 HelpPane
HelpPane
此方法返回帮助窗口。
语法
Application.HelpPane
参数
无
示例
Set var = Application.HelpPane
OpenCustomizeDialog
此方法打开自定义模态对话框。
语法
Application.OpenCustomizeDialog()
参数
OpenDocument
此方法打开由路径参数指定的现有文档。
语法
Application.OpenDocument(path)
参数
OpenDocument 方法有以下参数:

示例
Application.OpenDocument("C:\SailWind Projects\preview.pcb") \
OpenOptionsDialog
此方法打开选项无模对话框。
语法
Application.OpenOptionsDialog()
参数
OpenPropertiesDialog
此方法打开属性无模对话框。
语法
Application.OpenPropertiesDialog()
参数
Quit
此方法退出应用程序。
语法
Application.Quit()
参数
RunMacro
此方法执行程序命令之一。
语法
参数
RunMacro 方法有以下参数:
示例
Dialog Objects
对话框对象表示一个对话框。该对象有以下方法:
宏控制
Control
此方法返回对话框控件。
语法
Dialog.Control(controlname)
参数
Control 方法有以下参数:
示例
此示例返回 OK 按钮。
set obj = dlg.Control("OK")
相关主题
Focus
此方法将焦点设置到对话框控件。
语法
Dialog.Focus(controlname)
参数
Focus 方法有以下参数:
相关主题
CloseHelpPane
此方法关闭对话框中的帮助窗格。
语法
Dialog.CloseHelpPane
参数
无
示例
Dialog.CloseHelpPane
OpenHelpPane
此方法显示对话框的帮助窗格。
语法
Dialog.OpenHelpPane
参数
无
示例
Dialog.OpenHelpPane
ShowHelpFor
此方法显示指定控件的帮助信息。
语法
Dialog.ShowHelpFor(controlname)
参数
ShowHelpFor 方法有以下参数:
示例
此示例显示 Apply 按钮的帮助信息。
Document Object
Document 对象表示任何当前加载的设计。
该对象有以下方法:
Print PrintSetup RepeatLastAction Save SaveAs
宏打印
此方法打印文档。
语法
Document.Print()
参数
PrintSetup
此方法打开打印设置对话框。
语法
Document.PrintSetup()
参数
RepeatLastAction
此方法重复当前会话中执行的最后一个操作。
语法
Document.RepeatLastAction()
参数
Save
此方法保存文档(如果已修改)。
语法
Document.Save()
参数
无
SaveAs
此方法将文档保存为用户定义的名称或路径位置。
用法
Document.SaveAs(path)
SaveAs 方法有以下参数:
path 必需 表示文档保存路径的字符串表达式
参数
HelpContents 对象
HelpContents 对象表示帮助内容窗口。Item 属性用于在内容树中查找帮助内容项的位置。
语法
Application.HelpContents.Item (path)
参数
无
示例
HelpContentsItem 对象
该对象用于查找帮助内容项的名称。
HelpContentsItem 对象具有以下属性和一个方法 (Select):
Location Name Select SubItem SubItemCount Macros Location
Location
该属性返回项的位置。
语法
Item.Location
参数
无
示例
在此示例中,item_loc 变量被赋值为 "its:C:<install_folder><version> \Documentation\Router\BlazeRouter.chm::/fileops/To_Restore_Files.htm"。
item_loc = item.Location
Name
该属性返回项的名称。
语法
Item.Name
参数
无
示例
在此示例中,item_name 变量被赋值为 "To Restore Files"。
item_name = item.Name
Macros Select
Select
该方法用于选择👉项。
语法
Item.Select
参数
无
示例
item.Select
SubItem
该属性通过位置返回项的子项。必需的整数 pos 参数是该项表示的树分支中子项的从零开始的序列号。
语法
Item.SubItem(pos)
参数
无
示例
在此示例中,item_name 变量被赋值为 "To Restore Files"。
item_name = item.Name
SubItemCount
该属性返回项中子项的数量。
语法
Item.SubItemCount
参数
无
示例
在此示例中,count 变量被赋值为 10。
HelpPane 对象
该对象表示帮助窗口。
Document
Document 属性在帮助窗口中显示 HTML 文档。此属性使用文档对象模型 (DOM)。有关 HTMLDocument 接口的完整描述,请参阅 Microsoft 软件开发人员网络 (MSDN) 文档。
以下是宏引擎使用的最有用属性:
相关主题
MainView 对象
MainView 对象表示程序的主视图。
该对象使用以下方法:
ActiveLayer ToggleFullScreen MouseDown MouseEndDrag MouseMove MouseStartDrag MouseUp Print PrintPreview
Macros ActiveLayer
ActiveLayer
该方法显示活动层组合框。
语法
MainView.ActiveLayer
参数
无
示例
set layerCombo = MainView.ActiveLayer
ToggleFullScreen
该方法开启全屏模式。
语法
MainView.ToggleFullScreen()
参数
MouseDown
该方法模拟按下鼠标按钮。
语法
MainView.MouseDown(x, y, button)
参数
MouseDown 方法有以下参数:
button 参数可以包含以下一个或多个值和修饰符:
表 22. MainView.MouseDown button 值
MouseEndDrag
该方法模拟结束鼠标拖动操作。
语法
MainView.MouseEndDrag(x, y, button)
参数
Mouse End Drag 方法有以下参数:
button 参数可以包含以下一个或多个值和修饰符:
表 23. MainView.MouseEndDrag button 值
MouseMove
该方法模拟移动鼠标。
语法
MainView.MouseMove(x, y, button)
参数
Mouse Move 方法有以下参数:
button 参数可以包含以下一个或多个值和修饰符:
表 24. MainView.MouseMove button 值
示例
MainView.MouseMove(300,350,"+L")
MouseStartDrag
此方法模拟开始鼠标拖拽操作。
语法
MainView.MouseStartDrag(x, y, button)
参数
MouseStartDrag 方法包含以下参数:
button 参数可包含以下一个或多个值和修饰符:
表 25. MainView.MouseStartDrag button 取值
MouseUp
此方法模拟释放鼠标按钮。
用法
MainView.MouseUp(x, y, button)
MouseUp 方法包含以下参数:
button 参数可包含以下一个或多个值和修饰符:
A 按下 Alt 键(修饰符)
参数
此方法打印当前视图。
语法
MainView.Print()
参数
PrintPreview
此方法开启打印预览模式。
语法
MainView.PrintPreview()
参数
