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 = 0

ViewCen = ActiveDesignFile.Views(1).Center

ScrX.Value = ViewCen.X

scrY.Value = ViewCen.Y

End Sub

Sub SetZoom(ZoomValue As Long, OldZoomValue As Long)

ActiveDesignFile.Views(cmbViews.Text).Zoom 1 + (ZoomValue - OldZoomValue) / 100

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 = 0

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(0 To 3) As Point3d

Dim LinePoints2(0 To 3) As Point3d

Dim myLine1 As LineElement

Dim myLine2 As LineElement

Dim I As Long

For I = 0 To 3 Step 1

LinePoints1(I).X = I ^ 3 - I ^ 2: LinePoints1(I).Y = I + I ^ 2

LinePoints2(I).X = I ^ 3 - I ^ 2: LinePoints2(I).Y = -(I + I ^ 2)

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) + 1) Mod 3 <> 0 Then

MsgBox "Invaid number of point elements", vbCritical

Exit Sub

End If

If (UBound(PointElems) + 1) < 5 Then

MsgBox "A minimum of 2 X,Y,Z points must be provided.", vbCritical

Exit Sub

End If

Dim LinePoints() As Point3d

ReDim LinePoints(0 To (UBound(PointElems) + 1) \ 3) As Point3d

Dim I As Long

Dim PointCounter As Long

Dim MyLine As LineElement

For I = LBound(PointElems) To UBound(PointElems) Step 3

LinePoints(PointCounter).X = PointElems(I)

LinePoints(PointCounter).Y = PointElems(I + 1)

LinePoints(PointCounter).Z = PointElems(I + 2)

PointCounter = PointCounter + 1

Next I

Set MyLine = CreateLineElement1(Nothing, LinePoints)

ActiveModelReference.AddElement MyLine

End Sub

Sub TestCLines()

CLines 0, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0

CLines 0, 0, 0, 4, 4, 0

CLines 0, 4, 0, 4, 0, 0

CLines 0, 4, 0, 4, 0

CLines 0, 4, 0

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(0 To NumOfSides - 1) As Point3d

Dim PointIndex As Long

Dim IncAngle As Double

IncAngle = 360 / NumOfSides

For PointIndex = LBound(ShapePoints) To UBound(ShapePoints)

ShapePoints(PointIndex) = Point3dAddAngleDistance(CenterPoint, Radians(IncAngle * PointIndex), Radius, 0)

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 = 1

For I = 3 To 80 Step 1

Set myShape = CreatePolygon(CPoint, I, Length)

Length = Length + 1

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
时间: 2024-08-29 13:49:24

MicroStation VBA 可视化界面的相关文章

GDB-Dashboard-GDB可视化界面

项目地址 https://github.com/cyrus-and/gdb-dashboard 项目介绍 gdb-dashboard是一个gdb的可视化界面,可以通过web或者终端来现实可视化信息,支持自定义配置的仪表盘来显示程序执行期间相关的信息.它的主要目标是降低GDB使用难度,可以通过界面来进行控制,而不是GDB命令的数量. 安装方法 需要GDB>=7.7 wget -P ~ git.io/.gdbinit mv ~/.gdbinit ~/.gdb-dashboard source ~/.

Stroyboard(可视化界面)与纯代码

Stroyboard是苹果在 iOS 5 中引入的新技术,让纯代码变成了一个可视化的界面,让nib.xib有一种更加直观的展现,几十行甚至几百行的代码搞定的一个控件,现在只要动动手指就能完成一个控件了,初学者学到的绝大部分都是教你怎么使用StoryBoard的而不是怎么用纯代码,但是我自己更加喜欢纯代码,总觉得自己敲出来的代码更加能信任,修改起来也会更加简单. 一开始我以为纯代码跟可视化界面其实是一样的,看个人喜好选择用什么方法,后来查了资料发现,如果是一个大的项目,用可视化界面,那么团队就不能

Ubuntu mysql安装,还有可视化界面

安装mysql sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev 安装mysql的可视化界面(mysql workbench) sudo apt-get install mysql-workbench

awt可视化界面上传数据到mysql,jsp通过jdbc方式查询数据库,并将结果打印在网页上

今天尝试写一个小demo实现下之前看过的代码,目的了解不同文件的数据访问,掌握如何获取前台数据,如何将数据库的数据在前端页面展示. awt可视化界面可已实现提交数据到数据库,也可查询数据在控制台打印. web工程:主要是web前台输入并提交数据,然后在另一页面展示数据库内容 源码:http://download.csdn.net/detail/xiejun1026/8038489

Docker可视化界面(Consul+Shipyard+Swarm+Service Discover)部署记录

前面一篇说到了Docker管理工具-Swarm部署记录,基于这个环境,下面记录下Docker可视化界面部署过程: 1)下载相关惊喜 manager-node节点(182.48.115.237) [[email protected] ~]# docker pull progrium/consul [[email protected] ~]# docker pull rethinkdb [[email protected] ~]# docker pull shipyard/shipyard [[em

bigdata_zookeeper 可视化界面zkui

安装zkui zookeeper节点的可视化界面有很多种,我使用的是zkui,比较直观,而且可以导入文件,他的Git地址:                     https://github.com/DeemOpen/zkui. 使用 1. 从github上可以下载下来,maven clean install成jar,运行zkui-2.0-SNAPSHOT.jar 或者直接在编译器中运行main函数,启动jetty插件. 2.配置文件config.cfg  zookeeper相关配置如下 [h

dui框架开发系列:基于控件组合或继承实现 可视化界面编辑工具 的优劣

大家好,我要介绍的所有知识点都是WINCE/windows触摸屏DUI开源框架constvar(点击下载代码)开发过程中遇到的比较有讨论价值的问题. 本文要讨论的是可视化界面编辑工具与控件实现方式的一些关系. 可视化界面编辑工具是DIRECTUI界面框架不可少的工具,它应当是整个框架的比较重要的一部分.VS中的可视化开发工具很强大,比如用MFC拖出来的界面,接近所见即所得,而且消息事件方法属性的增删改查都很便利,接口也很统一,可以说已经做得非常好了.说实话,平常如果做工具软件对界面没要求的那种,

总结使人进步,可视化界面GUI应用开发总结:Android、iOS、Web、Swing、Windows开发等

可视化界面的软件,是21世纪最主流的应用类型了,黑屏控制台的不适合普通用户. 2004年左右的时候,作为普通网民,接触的自然是可视化,准确是Windows那一套. 那个时候,Microsoft Windows 98,红警,QQ是3个印象深刻的软件. 大学之后,入了行,先后学习了Windows程序设计(C语言API开发).MFC.Java Swing,Html Web,Android和iOS. 总的来说,现在Html web和Java Swing要熟悉一些,Android和iOS的界面在深入学习中

升级 android sdk后 可视化界面的显示问题

本来高高兴兴的 升级sdk  到了5.0  结果一打开 eclipse 就发现 可视化界面加载不了. 查了半天 ,有些说是  把 sdk目录下面的 temp 文件夹删除.有些说是升级一下  jdk 的版本,  现在jdk 是 1.6 结果把 jdk 换成了1.7   果真好了呢 !  T T