MicroStation VBA 可视化界面
第十章 可视界面
Private Sub UserForm_Initialize() Dim ViewCen As Point3d Dim MyView As View For Each MyView In ActiveDesignFile.Views cmbViews.AddItem MyView.Index Next cmbViews.ListIndex = ViewCen = ActiveDesignFile.Views().Center ScrX.Value = ViewCen.X scrY.Value = ViewCen.Y End Sub Sub SetZoom(ZoomValue As Long, OldZoomValue As Long) ActiveDesignFile.Views(cmbViews.Text).Zoom + (ZoomValue - OldZoomValue) / ActiveDesignFile.Views(cmbViews.Text).Redraw End Sub Sub SetPan(XPan As Long, YPan As Long) Dim ViewOrigin As Point3d ViewOrigin.X = XPan ViewOrigin.Y = YPan ViewOrigin.Z = ActiveDesignFile.Views(cmbViews.Text).Center = ViewOrigin ActiveDesignFile.Views(cmbViews.Text).Redraw End Sub Private Sub scrZoom_Change() SetZoom ScrZoom.Value, ScrZoom.Tag ScrZoom.Tag = ScrZoom.Value End Sub Private Sub scrZoom_Scroll() SetZoom ScrZoom.Value, ScrZoom.Tag ScrZoom.Tag = ScrZoom.Value End Sub Private Sub scrX_Change() SetPan ScrX.Value, scrY.Value End Sub Private Sub scrX_Scroll() SetPan ScrX.Value, scrY.Value End Sub Private Sub scrY_Change() SetPan ScrX.Value, scrY.Value End Sub Private Sub scrY_Scroll() SetPan ScrX.Value, scrY.Value End Sub
本章回顾:
1.所有空间都有属性、方法和事件
2.访问空间的属性和方法的格式是:空间名,一个点号,属性和方法,需要时提供参数
3.程序运行时,用户与界面间的交互触发事件
4.用Show方法显示用户窗体
5.在窗口显示前,用Initialize事件设置值和增加控件
第十一章 MicroStation对象模型——对象
提供了库的对象模型,VBA中的对象浏览器最有帮助,VBA还包括其他有助于开发的工具,例如添加监视和自动列表功能
第十二章 MicroStation对象模型——枚举 Enumeration
枚举的优点:在分析代码时能更容易地看到所需参数的结果。
枚举成员名称经常以枚举名称或枚举名称的缩略版本开头。例如msdDesignFileFormatDWG 就是枚举名称“MsdDesignFileFormat”开头的。
MicroStation中所有的枚举都是以指定的三个字符“Msd”开头,所有的成员都以“msd”开头
第十四章 MicroStation对象模型——事件
对象具有方法、属性和事件。
P259
P155
第十五章 向文档中添加内容
使用冒号(:)把两行代码放到一行。将同一顶点的赋值放在一行上也增加了代码的易读性
Sub CreateLines() Dim LinePoints1( To ) As Point3d Dim LinePoints2( To ) As Point3d Dim myLine1 As LineElement Dim myLine2 As LineElement Dim I As Long For I = To Step LinePoints1(I).X = I ^ - I ^ : LinePoints1(I).Y = I + I ^ LinePoints2(I).X = I ^ - I ^ : LinePoints2(I).Y = -(I + I ^ ) Next I Set myLine1 = CreateLineElement1(Nothing, LinePoints1) Set myLine2 = CreateLineElement1(Nothing, LinePoints2) ActiveModelReference.AddElement myLine1 ActiveModelReference.AddElement myLine2 End Sub

Sub CLines(ParamArray PointElems() As Variant) If (UBound(PointElems) + ) Mod <> Then MsgBox "Invaid number of point elements", vbCritical Exit Sub End If If (UBound(PointElems) + ) < Then MsgBox "A minimum of 2 X,Y,Z points must be provided.", vbCritical Exit Sub End If Dim LinePoints() As Point3d ReDim LinePoints( To (UBound(PointElems) + ) \ ) As Point3d Dim I As Long Dim PointCounter As Long Dim MyLine As LineElement For I = LBound(PointElems) To UBound(PointElems) Step LinePoints(PointCounter).X = PointElems(I) LinePoints(PointCounter).Y = PointElems(I + ) LinePoints(PointCounter).Z = PointElems(I + ) PointCounter = PointCounter + Next I Set MyLine = CreateLineElement1(Nothing, LinePoints) ActiveModelReference.AddElement MyLine End Sub Sub TestCLines() CLines , , , , , , , , , , , , , , CLines , , , , , CLines , , , , , CLines , , , , CLines , , End Sub

建立形
Function CreatePolygon(CenterPoint As Point3d, NumOfSides As Long, Radius As Double) As ShapeElement Dim myShape As ShapeElement Dim ShapePoints() As Point3d ReDim ShapePoints( To NumOfSides - ) As Point3d Dim PointIndex As Long Dim IncAngle As Double IncAngle = / NumOfSides For PointIndex = LBound(ShapePoints) To UBound(ShapePoints) ShapePoints(PointIndex) = Point3dAddAngleDistance(CenterPoint, Radians(IncAngle * PointIndex), Radius, ) Next Set CreatePolygon = CreateShapeElement1(Nothing, ShapePoints) End Function Sub TestCreatePolygon() Dim CPoint As Point3d Dim myShape As ShapeElement Dim I As Long Dim Length As Double Length = For I = To Step Set myShape = CreatePolygon(CPoint, I, Length) Length = Length + ActiveModelReference.AddElement myShape Next I End Sub

Dim CPoint As Point3d Dim myEllipse As EllipseElement Dim rotMatrix As Matrix3d Dim inputQueue As CadInputQueue Dim intputMessage As CadInputMessage Set inputQueue = CadInputQueue Set inputMessage = inputQueue.GetInput(msdCadInputTypeDataPoint, msdCadInputTypeAny) Do Select Case inputMessage.InputTyoe Case msdCadInputTypeDatePoint CPoint = inputMessage.Point Set myEllipse = CreateEllipseElement2(Nothing, CPoint, 0.5, 0.5, rotMatrix) ActiveModelReference.AddElement myEllipse Exit Do Case msdCadInputTypeReset Exit Do End Select Loop
MicroStation VBA 可视化界面的更多相关文章
- MicroStation VBA 操作提示
Sub TestShowCommand() ShowCommand "画条线" ShowPrompt "选择第一个点" ShowStatus "选择第 ...
- MicroStation VBA基础
实习笔记1 2016年8月1日 14:12 Option Explicit 缺省情况下,如果使用一个没有声明的变量,它将继承“Variant”类型.在模块.窗体和类的通用声明区使用“OptionExp ...
- awt可视化界面上传数据到mysql,jsp通过jdbc方式查询数据库,并将结果打印在网页上
今天尝试写一个小demo实现下之前看过的代码,目的了解不同文件的数据访问,掌握如何获取前台数据,如何将数据库的数据在前端页面展示. awt可视化界面可已实现提交数据到数据库,也可查询数据在控制台打印. ...
- GDB-Dashboard-GDB可视化界面
项目地址 https://github.com/cyrus-and/gdb-dashboard 项目介绍 gdb-dashboard是一个gdb的可视化界面,可以通过web或者终端来现实可视化信息,支 ...
- Ubuntu mysql安装,还有可视化界面
安装mysql sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install lib ...
- Solr学习笔记---部署Solr到Tomcat上,可视化界面的介绍和使用,Solr的基本内容介绍,SolrJ的使用
学习Solr前需要有Lucene的基础 Lucene的一些简单用法:https://www.cnblogs.com/dddyyy/p/9842760.html 1.部署Solr到Tomcat(Wind ...
- docker swarm 集群及可视化界面的安装及配置
docker swarm 集群及可视化界面的安装及配置 2016-12-14 16:08:46 标签:swarm consul registrator 原创作品,允许转载,转载时请务必以超链接形式标明 ...
- 可视化界面:ElasticSearch Head,最方便的是直接下载谷歌浏览器扩展程序
可视化界面:ElasticSearch Head,最方便的是直接下载谷歌浏览器扩展程序
- 关于Eclipse上使用可视化设计界面(Java EE 使用可视化界面设计)
Eclipse下可视化界面实现——WindowBulider安装 第一步: WindowBuilder官方下载安装说明地址:http://www.eclipse.org/windowbuilder/d ...
随机推荐
- 类UNIX操作系统概念
摘要:对unix os上的一些基本概念做一个统一的梳理,以下内容转自互联网和相关书籍 一 进程组.会话.控制终端 进程组---------------------------------------- ...
- 基于吉日嘎底层架构的Web端权限管理操作演示-菜单模块管理
按照顺序,这一篇介绍菜单模块管理,主要演示如下操作: 新增.修改.锁定.解锁.删除.撤销删除 排序 角色成员管理 用户成员管理 导出菜单模块数据 也许你会问,你在这自吹自擂,你这个BS的权限管理有啥缺 ...
- 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别
相信对于很多刚接触打包程序的同志来说,关于x86,x64,Any CPU这三个项目平台,以及解决方案配置Debug和Release有什么区别?这个问题一定有许多的困惑,甚至不乏一些已经工作了很久的老程 ...
- 在spring中使用webservice(Restful风格)
我们一般都会用webservice来做远程调用,大概有两种方式,其中一种方式rest风格的简单明了. 记录下来作为笔记: 开发服务端: 具体的语法就不讲什么了,这个网上太多了,而且只要看一下代码基本上 ...
- 2016 年青岛网络赛---Family View(AC自动机)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5880 Problem Description Steam is a digital distribut ...
- Java面试总结系列之Collections.sort()
面试中被问到,集合类中的排序方法是怎么实现的?没有回答上来,故而总结如下:你知道么? 前提:在eclipse中对于自己的代码可以通过按住Ctrl的同时单击名称跳入相应源码中.但eclipse默认没有添 ...
- [moka同学笔记]MySql语句整理
更改单个表中的字段属性 content 以前为text类型的,现在改为longtext ALTER TABLE `notice` CHANGE `content` `content` LONGTEXT ...
- jQuery Mobile页面返回无需重新get
最近公司的web app项目,使得我有幸一直接触和学习jQuery Mobile.这确实是一个很不错的移动开发库,有助于擅长web开发的工程师,快速入门并构建自己的移动应用.但是在前两天,我碰到了一个 ...
- php 相关模块备忘
在安装php的时候,不管是编译安装: ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- 手机网游开发指南 - 需要多NB的技术
Agent`K 似乎在三天打鱼N天晒网.只能呵呵了,懒散的家伙. 移动互联网越来越火,其中的网络游戏更是火,熊熊大火. 作为攻城师的你,作为小投资者的你,作为满脑子创意想要实现的你,肯定在四处打听:手 ...