Macro File Commands

The macro file for block projections is created through the Create Macro option (under Benching and Batters). The format of the file name is <name>.proj.

The file contains operational and instructional commands. Operational commands perform an operation on a block, while instructional commands control how the projection is to be performed.

The operational commands that can be generated through the Create Macro option are:

BERM

COPY

PROJECT

REGISTER

UPDATE_BLOCK

The instructional commands that can be generated through the Create Macro option are:

CONDITION_LINE

CONNECT_CORNER

LIMIT

RESERVE_BLOCK

RESTORE_BLOCK

SAVE_WTAGS

SET_BLOCK

STRAIGHT_FACE

UNSET_BLOCK

INITIAL

Other commands that may be used, but are not automatically generated, can be added through the Edit Macro option. The Edit Macro option can also be used to add qualifiers to the commands.

Note:   I nstructional commands should be issued BEFORE any operational commands. Commands and qualifiers are not case sensitive, that is, you can use uppercase, lowercase or a combination.

An overview of the available commands and qualifiers is given on the next pages followed by some notes on horizontal projections.

Instructional Commands
Operational Commands
Notes - Horizontal Projections

Instructional Command Description
CONDITION_LINE

This performs the same function as the Condition string option under Open Cut Design. The option can be used to insert extra points in a line, to filter out points too close together, and to remove points that form small angles. It is especially useful to rectify errors that may occur with the berming commands (see Operational Commands). The CONDITION_LINE command has the following qualifiers:

/DIST_MIN=n.n
This defines the minimum distance between points.

/DIST_MAX=n.n
This defines the maximum distance between points.

/ANGLE_MIN=n.n
This defines the minimum angle between adjacent line segments.

/ANGLE_MAX=n.n
This defines the maximum angle between adjacent line segments.

CONNECT_CORNER This specifies that lines be drawn connecting the corners of the blocks. This is only effective if STRAIGHT_FACE has been specified. The lines that are created are only for appearance sake for aiding the viewing of a projected block. They have no effect on subsequent volumes calculations. The lines are created as objects in the same layer as the block, and have a common feature name, which means they can be deleted by the feature category in Object Edit/Delete.
LIMIT

Specifies the topography surface. It has the following qualifiers:

/SURFACE = 'aaa'
Name of the topography surface to be used.

/STOP_AT_LIMIT
Set this to halt the macro if all the points on the object are on the limiting surface.

PRESERVE_BLOCK Stores the current block coordinates for later restoration (see RESTORE_BLOCK). It to perform a complex set of projections and store the result for later use in the macro. Unlike SET_BLOCK, PRESERVE_BLOCK allows a physical projection location to be saved.
RESTORE_BLOCK Replaces the coordinates of the current block with those set by the previous PRESERVE_BLOCK. This then becomes the current block. It does not alter the name of the current block.
SAVE_WTAGS

Replaces the default W-tag values with those that reflect the macro command that is about to be processed.

For example: If an object is to be bermed next, then it will set each segment of the object that is about to be bermed with the berm distance as defined for that part of the object in the macro.

Note This is an optional command. Using this command can slow down a large run.

SET_BLOCKS

This to position a block via a set of operational commands. Once this command is issued any operational commands will not create new objects, but will move the current object.

In general the projection sequence is either from the lowest surface upwards or from the top surface downwards, and the original 2D block is referenced to the lowest or highest surface respectively. However it may be required that the 2D block is referenced to another surface. By using SET_BLOCKS, a series of operational commands can be given to move the block to the upper or lower surface, then once the block is in position an UNSET_BLOCKS command is given so that the following operational commands will project the block.

STRAIGHT_FACE This specifies that the projection be done such that the face for each block remains straight in plan. This has the effect that the specified batter for the face may vary along the length of the face.

If this command is not given, the projection assumes that the batters will remain constant along the block face, which means that the projected face line may possibly be not a straight line, depending on the geological structure.

UNSET_BLOCKS This turns off the set blocks so that any following operational commands will continue to create new objects.
INITIAL This set the starting block number. If not set, the first block will be used. The INITIAL command has the following qualifier:

/BLOCK_NUM=nn

Operational Command

Description

BERM

Takes the current block and berms all the points on it horizontally, subject to qualifiers specified below overriding this. The qualifiers are:

/SURFACE = 'aaa'
Specifies the surface along which to berm. See REGISTER to determine what type of surface will be used.

/HORIZONTAL
Specifies that the berm will be done horizontally for those points which are not on the surface to which the string was previously projected. If this qualifier is not present, and the /ALONG qualifier is neither specified, all points on the string will be bermed horizontally.

/ALONG
Berm along the specified surface. It will berm outwards by the berm distance and register the result to the surface. Thus the berms widths always refer to plan distances, not along surface distance.

/UP
Projection going upwards, so the berming will be going outwards, after taking block direction into account. This is the default.

/DOWN
Projection going downwards, so the berming will be done inwards, after taking the block direction into account.

/WIDTH = n.nnn,
/WIDTH = (nn.nnn,nn.nnn,...)
Specify a berming width for the block as a whole, or for individual faces. If only one berm is specified, then that berm is applied to every face wall on the block, taking the block direction into account. Side walls and end walls will have zero batter (to match the vertical projection), unless otherwise specified. Negative berms can be specified to override the block direction.

If a list of berms is specified, then each width is associated with the corresponding wall in the /WALL qualifier.

/WALL
See PROJECTION.

/COLOUR
Sets the colour for the named surface.

/DEFAULT
Uses the default berm width set on the string.

COPY

This copies the current string in the macro sequence. This is useful when your original block is already registered to a surface instead of the typically designed 2D blocks. Copying the original string allows that string to be included in the set of projected strings.

Registering the original string may slightly change the string, so the Copy command provides a better way to include the original string. The Copy command has the following qualifiers:

/SURFACE='aaa'
This puts the text string onto the copied string, so that the string can be used in reserve calculations. It does not change the shape of the string.

/CREST
This forces the copied string to be a crest line, otherwise it is a toe.

/COLOUR
This changes the colour of the copied strings for both auto and manual projection.

PROJECT

This takes the current block and projects it. It has the following qualifiers:

/LEVEL = nn.nnn
Project to the specified level.

/SURFACE = 'aaaa'
Project the named surface, or limit to the named surface. If used in conjunction with /LEVEL or /RELATIVE, the projection will be limited by the surface. See REGISTER command, on what type of surfaces will be used.

/RELATIVE = nn.nnn
Project the block by the specified distance. This can either be positive or negative.

/UP
Project the block upwards. This is done by default, and will assure the projection goes upwards, assuming the surfaces are created properly, from the lowest seam. Also if this is specified it has the effect of checking the block to the surface.

/DOWN

Project the block downwards. This is necessary if projecting down through surfaces, from the upper surface to the lowest. This is not necessary, if only using levels or relative distances. /FORCE (see below) should also be used to ensure that the wall angles are taken into account while projecting when using the /DOWN command.

/HORIZONTAL
This can be used to project a string horizontally. In effect this is either a horizontal register, when projecting to a surface, or a horizontal translate when projecting relative distance. The direction of the projection is perpendicular to the face walls of the original string. The qualifier can be used when projecting benches through steeply dipping strata. It should be used carefully as it will not operate for all types of surfaces. See also the Project/Horizontal notes at the end of this appendix.

/BATTER = nn.nnn
/BATTER=(nn.nnn,nn.nnn,...)
This specifies the batter angle for the block, or for the individual faces of the block. If only one value is specified, then that batter will be applied to every face wall on the block, taking the preset block direction into account. Side walls and end walls will projected vertically unless otherwise specified. Negative batters can be specified to change the preset directions.

Batter angles are in degrees from the horizontal, hence a vertical batter is 90 degrees.

If a list of batters angles is specified then each angle is associated with the corresponding wall in the

/WALL qualifier.
/WALL = ('aaa','aaa',...)
This is a list of walls or face type on a block corresponding to the list of batters specified by /BATTER. This qualifier is only used if the /BATTER qualifier has a list of batters, and it must contain the same number of items in its list. Valid wall types are:

FACE

Matches to all face walls
FACEC

Matches to current, or leading face
FACEN

Matches to next, or trailing face
SIDE

Matches to all side walls
SIDEL

Matches to left side wall
SIDER

Matches to right side wall
END

Matches to all end walls
ENDL

Matches to left end wall
ENDR

Matches to right end wall
SPEC1

A special wall type, number 1
SPEC2

A special wall type, number 2

/COLOUR
Sets the colour for the named surfaces.

/FORCE
Only used when /DOWN or /UP are used. It changes the meaning of these qualifiers to force a projection to go down or up. Some classes of projection can cause upwards movement even when nominally projecting down due to other criteria. /FORCE will present movement in the opposite direction.

/INTERP
This interpolates the projected string on the surface (used for BERM/HORIZONTAL - see below).

/OFFSET
Allows you to specify a standoff (positive or negative) from a surface. For example, project to coal seam A and go another 5 metres or pull back 5 metres.

REGISTER

This registers a block to a surface. This normally the first operational command issued. For example if we are projecting upwards then we would register our original 2D mine block to the lowest seam. If we are projecting downwards, we register to the highest seam, usually the natural surface. The register command makes a new block (object) rather than registering the original mine block itself (compare with Object Edit/Register option).This has the following qualifiers:

/SURFACE = 'aaa'
Name of the surface to register to. The registering will assume a triangulation surface if not specified. If a grid is required if must be specifically stated (For example,. ABCH.SRG ). By specifying for example, ABCH.SR, the registering will look for ABCH.SRT first and then search for ABCH.SRG, if the triangulation is not found.

/INTERPOLATE

extra points along the block face so that it follows the surface more closely. Otherwise only the corner points are registered.

/COLOUR

Sets the colour for the above surface.

UPDATE_BLOCK

Similar to RESTORE_BLOCK with the addition that the name of the block is changed to the current macro level. Note that all blocks are named according to the current macro level.

Notes - Horizontal Projections

The following are notes to assist in projecting horizontally through steeply dipping structures.

In a simple case of one seam, we can use the following commands in the macro projection file:

PROJECT/HORIZONTAL/SURFACE='A.SFG'/INTERPOLATE
PROJECT/HORIZONTAL/SURFACE='A.SRG'
PROJECT/HORIZONTAL/level=-50
PROJECT/SURFACE='TOP.TPG'/BATTER=(35.0, 90.0, 90.0)/WALL = ('FACE','SIDE','END')COLOUR=5 

In section this will look like this:

Diagram 1 - Section Showing Projection

From the original block which is placed to the right, below the seam, the projection is done to the floor of the seam, and interpolated along the seam. In effect this is the same as a normal registration, except it is done horizontally instead of vertically. On the first projection, we normally interpolate extra points onto the grid. It then does a registration to the roof of the seam without interpolation.

For illustration, we then do a 50m relative projection from the roof. This gives us a working surface between the highwall and the coal. The projection to the topography is then done as normal. Diagram 2 shows the sequence of the projection.

Diagram 2 - Direction of Projection

The direction at which the projection is done depends on the orientation of the face walls on the original blocks. See Diagram 3.

Diagram 3 - Incorrect and Correct Method of Laying Out Blocks

From this it is important that when laying out the blocks, that they all are in a straight line. If they are following the seam, then the projections will overlap and the volumes will be incorrect.

The original block design itself is important. In the normal projections, the blocks can be at any elevation. With the horizontal projection, the blocks must be designed at the level on which you want the bench. See Diagram 4.

Diagram 4 - Original Block in Plan and 3D

Thus the two face walls of the block lie on two different elevations. This is currently a very manual step.

Also, the horizontal projection works only in a limited number of cases in terms of structure of the seams. For faulted or basin structures the method may fail. This is true even if the structure is masked out, as the projection in all cases ignore the masks on grids. Diagram 5 gives examples of structures in section where the projection will fail.

Diagram 5 - Examples of Projection Failures