已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章电气CAD中高级绘图及图形与数据库的链接 6 1高级语言绘图基础6 1 1绘图功能的实现方案1 利用高级语言的绘图语句实现 如BASIC语言 point x y 或pset x y 色号 preset x y 色号 色号缺损时为前景色 line x1 y1 x2 y2 色号circle x y Rcircle x y R 色号 1 2draw 串表达式 2 利用高级语言程序实现交互绘图 举QBASIC键盘绘图为例 在QBASIC环境下运行此段程序 可实现键盘屏幕作图功能 3 参数绘图 6 1 2高级语言绘图程序的组成绘图一般由三大部分组成 图库形成模块 图形编辑模块 输出模块 1 图库是绘图的基础 没有图库 每次绘图都要重新编程从一点一线画起 用户难以接受 电气图是一种规划图 多为二维平面图 可以标准化作图 任何复杂的电气结线图都是由有限个设备或元件的图形符号连接组成 为提高绘图速度 方便使用 将设备或元件图预先画好存于库中 供需要时调用 1 子图库形成 2 子图调用 3 子图编辑2 图形编辑模块 2 修改已有图形 绘图环境下 可从已有图形中调出旧图进行改画 3 图形变换 缩放 平移及旋转变换等3 图形输出 6 1 3高级语言绘图程序结构框图高级语言绘图程序结构框图如图6 1 图6 1高级语言绘图程序结构框图 6 2VB高级绘图技术6 2 1概述1 绘图环境特点1 在窗体和图片框上绘图 2 实质是VISUALBASICwindows绘图 图形方法适用于窗体 图片框和打印机 3 图形编程不依赖于硬件4 绘图区大小 可以随绘图区变化其大小 2 常用术语及绘图基础知识1 载体和对象窗体 图片框 图像控件是处理图形的对象 窗体是图片框和图像等控件的载体 屏幕是窗体的载体 图片框也是其他控件的容器 2 绘图区及其大小绘图区指对象上可供用户使用的区域 绘图区的大小可通过鼠标拖放 通过属性设置或在程序中给属性赋值进行控制 3 VB6 0界面 窗体窗体位于屏幕的中央 是进行交互的窗口 工具条位于菜单条下方 以图标方式提供常用的工具 工具箱位于屏幕左侧 提供开发应用程序的VisualBasic6 0标准控件 根据需要可以将定制控件加入工具箱 如ActiveX控制 属性窗口显示对象的各个属性并可进行属性值设定 工程窗口显示当前工程的文件结构 布局窗口显示屏幕布局 6 2 2坐标设置及度量单位为描述窗体在屏幕上或控件对象 例如图片框 在窗体上的位置 VisualBasci6 0设置对象的坐标系 坐标系可分为屏幕坐标系 窗体坐标系和窗体内控件坐标系 1 屏幕坐标系显示器屏幕大小是不能改变的 在标准设置下 屏幕坐标系的度量单位用twip表示 屏幕坐标系的原点 0 0 在屏幕的左上角 X Y轴坐标值分别向右 向下增加 如图6 2 a 所示 a 屏幕坐标系 b 尺寸显示其大小为 Screen width 9600 twip 屏幕宽Screen hieght 7200 twip 屏幕高 2 窗体坐标系窗体坐标系的原点在窗体工作区的左上角 在Standard窗口指示图片框左上角在窗体坐标系的坐标值 0 0 和图片框的大小 2352 1932 坐标的单位由ScaleMode属性设置 设置方式为 对象名 ScaleMode 属性值 ScaleMode的属性值有8种选择 如表6 1所示 表6 1ScaleMode的属性值 3 用户自定义坐标系在缺省设置下 VB绘图对象的坐标以twip为单位 VB中用户自定义坐标系的方法有两个 一是用Scale方法 即通过自定义左上角和右下角坐标来设置坐标系统 一般先选定Scalemode 0 再设定Scalemode 3 如 Scalemode 0Scalemode 3Scale 0 0 640 480 则定绘图区为640 480 单位为像素 左上角为坐标原点 y轴向下为正方向 若将原点设在绘图区中央 向上为y正方向 向右为x正方向 则用 Scale 320 240 320 240 二是通过对Scaleleft Scaletop直接赋值定义坐标系 如 Scalewidth 640 定义对象绘图区宽为640Scalewidth 480 定义对象绘图区高为480Object Scaleleft 320Object Scaletop 240则定义对象的左上角坐标是 320 240 ScaleX方法和ScaleY方法可以把X坐标或Y坐标的值从一个坐标系统换算到另一个坐标系统 其语法如下 object ScaleX width fromscale toscale object ScaleY height fromscale toscale width和height分别是需进行转换的坐标值 ScaleX方法和ScalseY方法把所给的坐标值从fromscale所指定的坐标系统转换到toscale所指定的坐标系统 6 2 3绘图属性属性可在对象属性窗口内设定 也可编代码在执行时设定 代码设定格式为 对象名 属性 设定值1 ScaleMode属性设定坐标单位 例如 Picturel ScalMode 3 设定picturel的坐标单位为像素 2 Forecolor属性指定对象上画直线 矩形和显示文字的颜色 格式为 对象名 Forecolor 值有四种设置方法 有四种设置方法 1 RGB函数格式 RGB red green blue red 红色 取值范围为0 255green 绿色 取值范围为0 255blue 蓝色 取值范围为0 255 例如 白RGB 255 255 255 红RGB 255 0 0 黄RGB 255 255 0 绿RGB 0 255 0 浅青RGB 0 255 255 蓝RGB 0 0 255 紫RGB 255 0 255 黑RGB 0 0 0 示例 在窗体 100 100 处画 红点Form1 Forecolor RGB 255 0 0 Form1 pset 100 100 2 QBcolor函数格式 QBcolor A 参数A取值范围为0 15的整数 可设定16种颜色 示例 在图片框上 120 100 处画一红点picturel Forecolor QBcolor 4 picturel Pset 120 100 3 使用16进制数格式 H00BBGGRR 意义 00总为零BB蓝 00 FF GG绿 00 FF RR红 00 FF 例如 H00ffooff 为桃红色 4 使用系统颜色常数8种颜色的代码如下 白vbWhite红vbRed黄vbyellow绿vbgreen浅青vbcyan蓝vbBlue紫vbMagenta黑vbBlack示例 在对象上画一兰色矩形object line 10 10 500 500 vbBlue B 3 Drawstyle属性功能 指定画线的格式格式 对象名Drawstyle 值参数 参数值及意义为 示例 Form Drawstyle 3 画单点划线 4 Drawwidth属性功能 drawwidth属性用于设定直线或矩形边框线的粗细 格式 对象名Drawwidth A参数 A为整数 单位为象素 取值范围为0 32767示例 Darwwidth 4 设定线宽为4 5 Fillcolor属性功能 Fillcolor属性用指定填充颜色填充矩形或圆格式 对象名Fillcolor 值例 Form Fillcolor vbRed 将窗体所画矩形或圆涂成红色6 Fillstyle属性功能 Fillstyle属性用于设定填充图案 格式 对象名Fillstyle 值参数值及意义为 示例 Form1 Fillstyle 2Circle 600 800 400 Qbcolor 12 用水平线填充园 6 2 4图形方法1 图形方法及使用格式Pset画点Line画直线Circle画圆Print文字Cls清除图形或文字图形方法的使用格式为 Object 图形方法名参数1 参数2 例如 在窗体中画直线时 可写为 From1 Line参数1 参数2 在图片框中画直线时 可写为 Picturel Line参数1 参数2 对象名缺省而仅写方法名时 则表示在具有当前焦点的对象内画图 2 常用图形方法 1 Pset方法Pset方法的功能是在指定的位置画一个指定颜色的点 格式如下 Object PsetStep x y ColorObject对象名Pset方法名例如 单击当前窗体 在窗体的 500 500 处画一个红色点的过程如下 PrivateSubForm Click Form Pset 500 500 QBcolor 12 EndSub 2 Line方法Line方法在指定的位置画一个指定颜色的直线或长方形 格式如下 Object LineStep x1 y1 Step x2 y2 Color B BF 例如 在窗体的 500 500 1000 1000 画一条红色线时语句为 Form1 Line 500 500 1000 1000 QBColor 12 在窗体的 500 500 1000 1000 画一个红色矩形时语句为 Form1 Line 500 500 1000 1000 QBColor 12 B在窗体的 500 500 1000 1000 画一个填色矩形时语句为 Form1 Line 500 500 1000 1000 QBColor 12 BF 3 Circle方法Circle方法在指定的位置画一个指定颜色的圆 椭圆或圆弧 格式如下 Object CircleStep x y radius color start end aspect x y 圆心坐标位置例如 以窗体的 1000 1000 为圆心 半径为500画一个红色圆时语句为 Form1 Circle 1000 1000 500 QBColor 12 以窗体的 1000 1000 为圆心 半径为500画1 2的红椭圆时语句为 Form1 Circle 1000 1000 500 QBColor 12 0 5 例6 1 画填充圆如图6 4所示 程序代码设计如下 PrivateSubCommandl Click Picturel ClsPricturel FillColor RGB 0 255 0 设置填充色Picturel FillStyle 7 设置填充模式Picturel Circle 1200 1000 800 RGB 255 0 0 EndSub图6 4图形填充PrivateSubCommand2 Click EndEndSub 本例程序使用FillStyle属性画填充圆 4 Print方法Print方法在指定的位置显示字符串 格式如下 Object PrintOutputtext例如 在窗体输出 湖南大学电气与信息学院 字符串时语句为 Forml Print 湖南大学电气与信息学院 5 Cls方法Cls方法用于清除窗体或图形框中所画图形 使用格式为 Object Cls例如清除窗体中所画图形时可写为 Form1 Cls3 使用鼠标绘简单图形 1 在鼠标单击位置画点以MouseDown事件检取的坐标值作为Pset方法的参数 可在鼠标单击位置画点 例如 PrivateSubForm MouseDown ButtonAsInteger ShiftAsInteger xAsSingle yAsSingle Forml Pset x y EndSub 2 在鼠标单击位置画记号Forml Line x 50 y 50 x 55 y 55 QBColor 12 Forml Line x 50 y 50 x 55 y 55 QBColor 12 取代前列中Forml Pset x y 则可在鼠标单击位置画x记号 用语句 Forml Circle x y 50 QBColor 12 取代前例中Forml Pset x y 则可在鼠标单击位置画o记号 3 两点间画直线程序设计时注意两点 一是将第一次鼠标单击位置和第一次鼠标单击位置的坐标分别赋给起始和终止变量 二是须设置监视鼠标单击的标志 即设置区分是第一次鼠标单击位置还是第二次鼠标单击的标志变量 4 画折线画折线应注意的是须将第一次画线的结束位置作为第二次画线的起始位置 按鼠标右键时结束画折线 5 在指定的位置画任意大小的圆在程序设计时应注意两点 一是将第一次鼠标单击的坐标值作为圆心 二是用第二次鼠标单击位置的坐标值和第一次鼠标单击位置的坐标值计算半径 计算公式如下 6 画任意画线 7 在指定位置输出文字在窗体或图片框的指定位置输出文字须使用CurrentX和CurrentY属性表示的当前位置 PrivateSubforml MouseDown ButtonAsInteger ShiftAsInteger xAsSing YAsSingle CurrentX xCurrentY yForml Print 字符串 EndSub 8 应用程序例 图形编辑器这是一个利用鼠标在图片框上绘线图的图形编辑器例子 窗体设计如图6 5所示 程序代码设计如下 Dimcx cyAsInteger 当前单击位置的 x y 坐标Dimold x old yAsInteger 前次单击位置的 x y 坐标DimtoolAsInteger 绘图工具Dimdraw fAsInteger 图6 5图形编辑器窗体 按左按钮Dimdown fAsInteger 按下左按钮拖动PrivateSubCmdCls Click Pictuel ClsEndSub PrivateSubCmdEnd Click EndEndSubPrivateSubFcolor 1 Click Picturel ForeColor QBColor 0 黑色EndSubPrivateSubFcolor 2 Click Picturel ForeColor QBColor 12 浅红EndSubPrivateSubFcolor 3 Click Picturel ForeColor QBColor 10 浅绿EndSubPrivateSubFcolor 4 Click Picturel ForeColor QBColor 14 黄EndSubPrivateSubFcolor 5 Click Picturel ForeColor QBColor 9 浅蓝EndSubPrivateSubFcolor 6 Click Picturel ForeColor QBColor 13 浅紫EndSubPrivateSubFcolor 7 Click Picturel ForeColor QBColor 11 浅青EndSub 6 3开放式子图库技术6 3 1开放式子图库将规则且使用频率较高的图形作为子图 子图是整图的组成元件 而线 圆 弧 矩形则是组成子图的元件 也是最简单的子图 6 3 2子图库结构子图库分两类 文字图库与图形库 文字图库是指图面上外文 数字与汉字等的集合 图形库又分为符号图库及块图库 符号图库是电气图中经常出现的电气设备图形符号的集合 如开关 变压器 电动机等 块图库则是由多个图符或文字组成的块图的集合 如高压开关柜 出线回路 间隔 附注说明等 1 文字图库本文文字图库可取用AutoCAD中的标准英文库TXT SHX 希腊文Greeks SHX及汉字HZTXT SHX库修改而成 2 2 图形库图形库分为元件图库及块图库两部分 元件图库的基本图元由12个数据描述 即一个特征代码与11个参数 元件图库实质是一系列图形符号数据的集合 以上图形符号和基本图元都称子图 设图库中有N个子图 则N组数据在库中按序相连 如第i个子图含有Pi个基本图元 其数据共有12 Pi个 12 Pi 1个数据 则其后为第i 1个子图的全图所含数据的个数Kt为子图在库中按大类存放 电气图形符号是子图库的主要组成部分 用基本图元直线 折线 虚线 点划线 园 矩形 椭圆 弧 扇形等可实现拖动画图 3 子图库结构子图库结构如图6 6所示 库首为索引数据 每个子图的索引数据占4字节 前2字节为该子图在库中起始位置 后2字节表示该子图含有的基本图元个数 图6 6子图库结构 子图库中每一个记录包含12个数据 顺序如下 0图元代码1X12Y13X4Y5弧终止角6 101 5位置施转90o的值11颜色码 坐标 直线首端坐标或圆心坐标 坐标 直线末端坐标或圆半径 弧起始角 6 3 3建库写检索各基本图元主要描述数据如下 点 代码 坐标x y 直线 起点坐标x1 y1 终点坐标x2 y2 圆 圆心坐标x y 半径R 弧 弧心坐标x y 半径R 起始角 终止角 矩形 左上角坐标x1 y1 右下角坐标x2 y2 6 3 4子图库操作建库状态下系统提供4种库操作功能 1 添加2 删除3 插入4 修改 图6 7图库中子图页面 6 4绘图及图形编辑6 4 1VB拖动绘图技术 图6 8VB拖动绘图示例 1 拖动画任意直线原理 当点击左边工具菜单中画线按钮后 移鼠标到绘图区 按左键定直线首端点 再拖动鼠标即在首端点与鼠标位置画一条直线 直线随鼠标移动而移动 再按左键一次即画定此直线 要点 画线过程中 不断检测鼠标位置 当新位置与原位置发生变动时 触发画线程序段 擦除原线 在新位置重新画线 如此反复擦除 反复重画 就形成了拖动画线 2 拖动画任意折线原理 前述的画直线程序只能画一段直线 若要再画则要重新点击左键定起点再拖动画线 为画出折线 可对前面程序上作少量修改 点击第一点时定折线起点 拖动画线再点击时 在该点与起点固定一条直线 拖动鼠标可继续画线 直到击右键时结束画线动作 恢复初态 要点 首次点击左健时定起点 第二次点击左键时折线转折点 并设定此点为新线段的起点 如此往复即画出折线 点击右键时 结束画折线动作 3 拖动画任意园原理 点击选中工具栏菜单中画圆功能后 移鼠标至绘图区 在要画圆的位置击左键 即确定圆心坐标 在绘图区拖动鼠标移动 即在鼠标新移位置画一个以圆心至鼠标新位置为半径的圆 要点 鼠标拖动过程中 当验测到鼠标位置移动时 即在新位置画圆 同时擦除原位置的圆 这样反复擦除重画 即实现了动态拖动画圆功能 4 拖动画任意矩形原理 点击工具栏菜单中画矩形功能后 移鼠标到绘图区 左键点击确定矩形左上角位置 再移鼠标时 即在已定点与鼠标光标位置之间画矩形 不断移动不断重画 再按左键时固定矩形 要点 第一点定矩形一角如左上角位置 第二点确定对角如右下角位置 在鼠标移动过程中在新位置与第一点间画矩形的同时 擦除原位置矩形 画面上只见到一个矩形并在随鼠标光标移动 5 拖动画椭圆原理及要点同画圆部分6 拖动画任意弧原理 点击工具栏菜单中画弧功能后 移鼠标到绘图区 点击左键确定弧心位置 再移鼠标至另一位置点击左键时 即确定了弧的起始角度 再移动鼠标时 即以弧心到鼠标光标新位置为终止角拖动画弧 鼠标位置变动 终止角及弧半径同时变动 要点 在弧心与起始角位置确定后 鼠标位置确定了弧终点的位置 在反复重画新弧 擦除旧弧的过程中实现了拖动功能 6 4 2子图调用 绘图1 菜单取图2 图形存储 6 4 3图形编辑1 图形平移1 子图平移2 整图平移3 局部图块平移2 图形缩放1 子图缩放2 整图缩放3 图形旋转 6 5图面标注6 5 1矢量字符标注功能的实现1 矢量字库的文件结构矢量字库文件是一种二进制数据文件 由三部分组成 文件头信息 索引信息和字形数据 1 文件头信息 西文库的文件头信息 汉字库的文件头信息 2 索引信息 西文库的索引信息共4n个字节 n为字形总数 即每个字符占4个字节 前两个字节为字符的ASCII码 后两个字节为字形所占的字节数 如大写字符 M 其索引为4D001200 4DH为它的ASCII码 其字形占12H个字节 常用的功能编码是 00字形结束 01落笔 02抬笔08画向量 其后紧接着一对x和y的增量 09画向量 其后紧接着一对x和y的增量 由00结束 如字符 M 的字形数据为 00020E08FEFA01644D436C02200E08FCFD00 共12H个字节 依此数据画出 M 字符如图6 10 图6 9移动方向编码图6 10矢量字符M 2 矢量字符及汉字的读取 显示 1 西文的读取 显示 打开库文件 在索引信息部分读入各字符的ASCII码放入二维组Lixw i 0 里 读入各字符的字节数放入Lixw i 1 里 输入要写的西文字符 英文字母和键盘上字符一一对应 希腊字母和键盘上字符的对应关系如表6 2 表6 2希腊字母和键盘字符对应表 用下列语句找出要写字符的地址放入ad变量里 并确定字符所占字节数 Ad 430 Ch getch For I 1 I 64H I lixw i o ch Ad ad Lixw i 1 Else I 依字符的地址及其所占字节数画出字符 2 汉字的读取 显示 打开汉字库文件 输入汉字区位码 依汉字字形数据的起始地址及其所占字节数画汉字 3 程序流程图及清单 程序流图如图6 11 限于篇幅 程序清单略 图6 11矢量字符及汉字的读取显示流程图 6 5 2标准文字标注功能的实现1 原理说明图片框是工程图形的主要载体 在图片框上标注的文本用字符表示 由print功能显示 文本的显示风格 即字体 字号 特征都由图片框的相应属性设置 例如执行程序段picturel Font Size 8picturel Font Nome 宋体 picturel Font Bold Turepicturel Font Italic falsepicturel Currentx 500picturel currenty 500picturel print 湖南大学电气与信息学院 将在图片框坐标为 500 500 位置起显示宋体 4号黑体文字 湖南大学电气与信息学院 2 标注文本的存储和修改在图片框的TexTheight 和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 依存句法分析中的深度学习技术-深度研究
- 2025至2031年中国雷蒙磨机磨辊行业投资前景及策略咨询研究报告
- 城市环境规划与治理-深度研究
- 2025至2030年中国键条式气压卷轴数据监测研究报告
- 2025年中国鱼盘成形机市场调查研究报告
- 2025年中国立口爽脂质体喷剂市场调查研究报告
- 2025年中国灯具零配件市场调查研究报告
- 2025年中国枫木拼接地板市场调查研究报告
- 2025年中国会议电话市场调查研究报告
- 二零二五年度土地入股合作城市综合体开发协议
- 《健康体检知识》课件
- 2023年护理人员分层培训、考核计划表
- 生产计划主管述职报告
- GB/T 44769-2024能源互联网数据平台技术规范
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解)
- 【经典文献】《矛盾论》全文
- 部编版语文五年级下册 第一单元 专项训练课外阅读(含答案)
- 2024年宁夏回族自治区中考英语试题含解析
- 客人在酒店受伤免责承诺书范本
- 练字本方格模板
- 《老山界》第1第2课时示范公开课教学PPT课件【统编人教版七年级语文下册】
评论
0/150
提交评论