Lines: Difference between revisions

From Microstation VBA Wiki
Jump to navigation Jump to search
Ted (talk | contribs)
No edit summary
Ted (talk | contribs)
No edit summary
Line 2: Line 2:


<PRE>
<PRE>
Dim oMyLine As Element
Dim oLine As Element
</PRE>
</PRE>


Then you use a very long command to make a line (see below for more info):
Then you use a very long command to make a line (see below for more info):
<PRE>
Set oLine = CreateLineElement2(Nothing, ptStart, ptEnd)
</PRE>


Then you write the line to the DGN file:
Then you write the line to the DGN file:
<PRE>
ActiveModelReference.AddElement MyLine
</PRE>


But to create the line you need a start and end point. So you have to set up variables that can hold those points. A point consists of three pieces of data for the X, Y, and Z coordinates. So once the point is set up, you have to store X and Y values in there and set Z to 0 (I'm always doing 2D, but it seems to work better with 3D points):
But to create the line you need a start and end point. So you have to set up variables that can hold those points. A point consists of three pieces of data for the X, Y, and Z coordinates. So once the point is set up, you have to store X and Y values in there and set Z to 0 (I'm always doing 2D, but it seems to work better with 3D points):
Line 24: Line 32:
==Line Characteristics==
==Line Characteristics==


Some settings are pretty easy, able to be set by changing active settings.
Some settings are pretty easy, able to be set by changing values of properties in ActiveSettings (color numbers are part of Microstation; 0 is white; 1 is blue; 3 is red). When you create a line, all of the ActiveSettings will be used, so to get what you want (instead of whatever the current ActiveSetting is) you need to set all of characteristics you want:
 
<PRE>
ActiveSettings.Color = 0
ActiveSettings.LineWeight = 3
</PRE>
 
But since there are an infinite number of levels and they are named, you can't change levels quite that easily. First you have to set up a Level variable, then you can assign a level to it by looking for the name of the level (by default, levels are named "Level 1," "Level 2," etc.)
 
<PRE>
Dim oLevel as Level
Set oLevel = ActiveDesignFile.Levels.Find("Level 2")
Set ActiveSettings.Level = oLevel
</PRE>

Revision as of 08:59, 5 August 2010

You can't just draw a line. Instead you have to create a line in memory and then write it to the DGN file. So in a subroutine, first you set up a variable that will hold an element.

Dim oLine As Element

Then you use a very long command to make a line (see below for more info):

Set oLine = CreateLineElement2(Nothing, ptStart, ptEnd)

Then you write the line to the DGN file:

ActiveModelReference.AddElement MyLine

But to create the line you need a start and end point. So you have to set up variables that can hold those points. A point consists of three pieces of data for the X, Y, and Z coordinates. So once the point is set up, you have to store X and Y values in there and set Z to 0 (I'm always doing 2D, but it seems to work better with 3D points):

Dim ptStart, ptEnd as point3d

ptStart.X = 10
ptStart.Y = 10
ptStart.Z = 0
ptEnd.X = 10
ptEnd.Y = 20
ptEnd.Z = 0

Line Characteristics

Some settings are pretty easy, able to be set by changing values of properties in ActiveSettings (color numbers are part of Microstation; 0 is white; 1 is blue; 3 is red). When you create a line, all of the ActiveSettings will be used, so to get what you want (instead of whatever the current ActiveSetting is) you need to set all of characteristics you want:

ActiveSettings.Color = 0 
ActiveSettings.LineWeight = 3

But since there are an infinite number of levels and they are named, you can't change levels quite that easily. First you have to set up a Level variable, then you can assign a level to it by looking for the name of the level (by default, levels are named "Level 1," "Level 2," etc.)

Dim oLevel as Level
Set oLevel = ActiveDesignFile.Levels.Find("Level 2")
Set ActiveSettings.Level = oLevel