HPGL基本指令手册
以下是HPGL文档的翻译:
使用HPGL作为绘图交换媒介
(不要这么做!遗憾的是,许多DOS/Windows系统仍然坚持这样做)
作者:Paul Bourke
1992年9月
此文档的俄文版由Sergey Paramonov提供。(您需要俄文字体集!)
介绍
HPGL是为HP系列绘图仪设计的HP图形语言,用于指定二维图形信息。HPGL最初并不是作为一种数据交换格式而设计的,但一些软件供应商却将其用作这种用途。尽管如此,它确实高效且易于书写和阅读。本文简要描述了HPGL用于描述几何图形的那些部分。HPGL语言本身包含大量指令,其中大多数指令与绘图仪设备直接相关。关于该语言的完整描述,通常与兼容HPGL的绘图仪一起提供。
基础
HPGL命令基本上由两个大写字母组成的指令、后随的任何参数以及最后的分隔符字符组成,默认情况下是分号。参数通常用逗号分隔。字符串参数通常以回车符结束。
在接下来的内容中,将列出所有标准的HPGL命令,那些可能对数据交换有用的命令将在本文档的末尾讨论。任何命令的可选参数都用括号表示。
命令
| 指令 | 描述 | 参数 |
|---|---|---|
| AA | 绝对弧 | x,y,角度(,公差) |
| AF | 换页 | 无参数 |
| AH | 换页 | 无参数 |
| AP | 自动笔操作 | n |
| AR | 相对弧 | x,y,角度(,公差) |
| AS | 加速度选择 | 加速度(,笔号) |
| BF | 缓冲绘图 | 无参数 |
| BL | 缓冲标签 | 字符串 |
| CA | 选择替代字符集 | 设置 |
| CC | 字符弦角度 | 角度 |
| CI | 圆 | 半径(,公差) |
| CM | 字符选择模式 | 切换模式(,回退模式) |
| CP | 字符绘制 | 空格,行数 |
| CS | 选择标准字符集 | 设置 |
| CT | 弦公差 | n |
| CV | 曲线生成器 | n(,输入延迟) |
| CD | 数字化清除 | 无参数 |
| DF | 默认 | 无参数 |
| DI | 绝对方向 | 运行,上升 |
| DL | 定义下载字符 | 字符号(,笔控制),x,y(…) |
| DP | 数字化点 | 无参数 |
| DR | 相对方向 | 运行.上升 |
| DS | 指定字符集 | 插槽,设置 |
| DT | 定义标签终止符 | 终止符 |
| EA | 绝对矩形边缘 | x,y |
| EP | 多边形边缘 | 无参数 |
| ER | 相对矩形边缘 | x,y |
| ES | 额外空间 | 空格(,行数) |
| EW | 边缘楔形 | 半径,起始角,扫描角(,公差) |
| FP | 填充多边形 | 无参数 |
| FS | 强制选择 | 强制(.笔号) |
| FT | 填充类型 | 类型(,间距(,角度)) |
| GC | 组计数 | 计数号 |
| GM | 图形内存 | (多边形缓冲)(,下载缓冲)(,重绘缓冲)(,矢量缓冲) |
| GP | 组笔 | (组号(,笔号(,笔数,(长度)))) |
| IM | 输入掩码 | 掩码值(,掩码值(,掩码值)) |
| IN | 初始化 | 无参数 |
| IP | 输入p1和p2 | x,y(,x,y) |
| IV | 调用字符插槽 | 插槽,(左) |
| IW | 输入窗口 | x,y,x,y |
| KY | 定义键 | 键(,功能) |
| LB | 标签 | 字符串 |
| LO | 标签原点 | 位置号 |
| LT | 线型 | 图案号(,图案长度) |
| NR | 未就绪 | 无参数 |
| PA | 绝对绘图 | x,y(,…) |
| PB | 打印缓冲标签 | 无参数 |
| PD | 下笔 | x,y(,…) |
| PG | 页进给 | n |
| PM | 多边形模式 | n |
| PR | 相对绘图 | x,y(,…) |
| PT | 笔厚度 | 厚度 |
| PU | 抬笔 | x,y(,…) |
| RA | 绝对矩形填充 | x,y |
| RO | 旋转坐标系 | n |
| RP | 重绘 | n |
| RR | 相对矩形填充 | x,y |
| SA | 选择替代字符集 | 无参数 |
| SC | 缩放 | x,y,x,y(,类型(,左,下)) |
| SG | 选择笔组 | 组号 |
| SI | 绝对字符大小 | 宽度,高度 |
| SL | 字符倾斜 | 倾斜角度 |
| SM | 符号模式 | 字符 |
| SP | 选择笔 | 笔号 |
| SR | 相对字符大小 | 宽度,高度 |
| SS | 选择标准字符集 | 无参数 |
| TL | 刻度长度 | tp(,tn) |
| UC | 用户定义字符 | (笔控制,)x,y |
| UF | 用户定义填充 | 间隙1(,间隙2,…间隙20) |
| VS | 速度选择 | 速度(,笔号) |
| WD | 写入显示 | 字符串 |
| WG | 楔形填充 | 半径,起始角,扫描角(,公差) |
| XT | X刻度 | 无参数 |
| YT | Y刻度 | 无参数 |
输出指令
以下指令没有任何参数,而是从绘图设备生成输出。它们对几何数据交换没有用,因此不讨论其输出形式。请参阅HPGL参考书。
| 指令 | 描述 |
|---|---|
| OA | 输出实际位置 |
| OC | 输出位置 |
| OD | 输出数字化点 |
| OE | 输出错误 |
| OF | 输出因素 |
| OG | 输出组计数 |
| OH | 输出硬剪切限制 |
| OI | 输出标识 |
| OK | 输出键 |
| OL | 输出标签长度 |
| OO | 输出选项 |
| OP | 输出p1和p2 |
| OS | 输出状态 |
| OT | 输出旋转盘类型 |
| OW | 输出窗口 |
转义序列
以下转义序列通常仅在通过串行接口连接到物理绘图仪时适用,它们与数据交换无关,因此不会列出其参数,也不会列出大多数序列生成的输出形式。
| 转义序列 | 描述 |
|---|---|
| esc@ | 设置绘图仪配置 |
| escA | 输出标识 |
| escB | 输出缓冲区空间 |
| escE | 输出扩展错误 |
| escH | 设置握手模式1 |
| escI | 设置握手模式2 |
| escJ | 中止设备控制 |
| escK | 中止图形 |
| escL | 缓冲区为空时输出缓冲区大小 |
| escM | 设置输出模式 |
| escN | 设置扩展输出和握手模式 |
| escO | 输出扩展状态 |
| escP | 设置握手模式 |
| escQ | 设置监视模式 |
| escR | 重置 |
| escS | 输出可配置内存 |
| escT | 分配可配置内存 |
| escU | 结束刷新模式 |
| escY | 绘图仪开 |
| esc( | 绘图仪开 |
| escZ | 绘图仪关 |
| esc) | 绘图仪关 |
有用的命令和示例
由于绘图仪是非常基本的线条绘制硬件设备,所以最常用的命令自然是那些用于从一个点绘制到另一个点的命令。
这个操作由四个命令控制:
- PA - 绝对绘图
- PR - 相对绘图
- PU - 抬笔
- PD - 下笔
抬笔和下笔决定了何时实际创建一条线,绘图命令负责点之间的移动。

可以为线条分配两个基本属性,它们实际上应用于绘图设备的笔上。它们是:
- SP - 笔号
- PT - 笔厚度
笔号通常作为索引颜色系统,最常见的是只有8支笔(颜色)。
可以指定的其他几何图形包括:
- AR - 相对弧
- CI - 圆
- EA - 绝对矩形边缘
- ER - 相对矩形边缘
- EP - 多边形边缘
- EW - 边缘楔形
- LB - 标签
有许多设置用于控制文本,这些指令和上述指令的进一步详细信息将留给读者自行实验或阅读完整的HPGL手册。
HPGL
- PA - Plot Absolute
绝对绘图指令,指定绘图仪的笔移动到指定的绝对坐标位置。例如,PA 100,100;将笔移动到(100, 100)的坐标。 - PR - Plot Relative
相对绘图指令,指定绘图仪的笔相对于当前的位置移动。例如,PR 50,50;会将笔从当前的位置移动50单位(x方向)和50单位(y方向)。 - PU - Pen Up
抬笔指令,命令绘图仪的笔在移动到新位置时抬起(不画线)。例如,PU;会抬起笔以便移动到下一个绘图位置。 - PD - Pen Down
下笔指令,命令绘图仪的笔在移动时放下(开始画线)。例如,PD;会放下笔并开始绘制。 - SP - Select Pen
选择笔指令,指定使用哪一支笔进行绘图。笔号一般用整数表示。例如,SP 1;表示选择笔1。 - PT - Pen Thickness
笔厚度指令,设置绘图仪笔的厚度。例如,PT 0.5;会将笔的厚度设置为0.5个单位。 - AR - Arc Relative
相对弧线指令,用于绘制相对于当前笔位置的圆弧。参数通常包括终点坐标和角度。例如,AR 100,100,90;会以当前点为起点画一个90度的弧线。 - CI - Circle
圆形指令,用于绘制一个以当前笔位置为中心的圆。参数通常是圆的半径。例如,CI 50;会绘制一个半径为50单位的圆。 - EA - Edge Rectangle Absolute
绝对矩形边缘指令,绘制一个指定坐标的矩形。指定两个对角点的绝对坐标来定义矩形。例如,EA 100,100,200,200;会绘制一个从(100, 100)到(200, 200)的矩形。 - ER - Edge Rectangle Relative
相对矩形边缘指令,绘制一个相对于当前笔位置的矩形。指定两个对角点的相对坐标来定义矩形。例如,ER 100,100;会从当前点绘制一个宽和高为100单位的矩形。 - EP - Edge Polygon
多边形边缘指令,用于定义一个多边形。通过连续给出顶点的坐标来指定多边形。该指令用于定义绘制边框的多边形。 - EW - Edge Wedge
楔形指令,用于绘制一个以当前笔位置为中心的圆形楔子。参数通常是半径、起始角和扫过的角度。例如,EW 50,0,90;会从当前位置开始绘制一个半径为50的90度的圆弧。 - LB - Label
标签指令,用于在指定的位置放置文本。标签文本跟随在指令后面并以回车符终止。例如,LB Hello, World!会在当前位置放置“Hello, World!”的文本。 - LT - Line Type
线型指令,用于设置绘制线条的样式,如实线、虚线或点线。参数通常是线型模式编号和模式长度。例如,LT 2,5;会设置线型为模式2,长度为5个单位。
这些HPGL指令被广泛用于控制绘图仪的绘图操作,指定绘图的形状、路径和样式。