Difference between revisions of "Lines"

From Microstation VBA Wiki
Jump to: navigation, search
Line 50: Line 50:
 
</PRE>
 
</PRE>
  
I set all of this up by making up a subroutine called LineSet, where I could enter a string representing the type of line I wanted and the subroutine would take care of all of the settings. If I want a line that represents a dimension line I put this in my code:
+
I set all of this up by making up a subroutine called [[SetLine]], where I could enter a string representing the type of line I wanted and the subroutine would take care of all of the settings. If I want a line that represents a dimension line I put this in my code:
  
 
<PRE>
 
<PRE>
LineSet("Dimension")
+
SetLine("Dimension")
 
</PRE>
 
</PRE>
  
 
And the level, line weight, line style, and color are all changed by the subroutine.
 
And the level, line weight, line style, and color are all changed by the subroutine.

Revision as of 17:37, 16 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 LineElement

You also must define two Points and set the values in the X,Y, and Z directions:

Dim ptStart As Point3d
Dim ptEnd As Point3
ptStart.X = 10
ptStart.Y = 10
ptStart.Z = 0
ptEnd.X = ptStart.X
ptStart.Y = 20
ptEnd.Z = ptStart.Z

Then you create a line element and add it to the design file:

Set oLine = CreateLineElement2(Nothing, ptStart, ptEnd)
ActiveModelReference.AddElement MyLine

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 the 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

The Line Style (solid, dashed, centerline, etc.) is the same way as Levels. You have to set up a variable of the LineStyle type, then store the settings in it using Find and then set the ActiveSettings by using your variable. To set the active LineStyle to 2 you must do the following:

Dim oLineStyle As LineStyle
Set oLineStyle = ActiveDesignFile.LineStyles.Find("2")
Set ActiveSettings.LineStyle = oLineStyle

I set all of this up by making up a subroutine called SetLine, where I could enter a string representing the type of line I wanted and the subroutine would take care of all of the settings. If I want a line that represents a dimension line I put this in my code:

SetLine("Dimension")

And the level, line weight, line style, and color are all changed by the subroutine.