Issue: HBore Barcodes Do Not Match Part Picture

Issue: HBore Barcodes Do Not Match Part Picture

As of build 15.6.2211, you now may use the simplified procedure found in the Microvellum Help Center article  Processing Station Associates for Reports (Overview)  to resolve this issue in addition to the procedure found in this article.


Reports display horizontal boring barcodes that are inconsistent or incorrect when compared to the part picture.


Build 15.6 contains an expanded ability to process with multiple processing stations. One of the reasons for this is that a User may want to direct the parts to one of several CNC machines to equalize the workload of those machines. Alternatively, while printing labels for their nesting CNC, they want to produce edgeboring G-Code on a dedicated HBORE machine and need to display barcodes for the files from that processing station.

While support for that ability continues, we have added a new area of code in the program that supports an improved level of accuracy between the edgeboring barcodes and the part picture produced. We call them edge transformation report functions.

These functions are supported in Microvellum change applies to build 15.6.2211, but if you don't use True Shape Nesting and it is necessary to use an earlier build of 15.6, you may use build 15.6.1414 - 15.6.2211.

Without getting into a lengthy explanation for the reasons these transformations are necessary, if they are not used, the horizontal boring data may be inaccurate for certain part rotation angles produced when optimizing. The symptom will be a discrepancy between the HBORE barcodes and the edges displaying the edgebore machining on the part picture.


  1. Update to a version of Microvellum that contains support for the edge transformation code.
  2. Update your reports to utilize that program code. This involves two general steps.
    1. Create four functions in the Code tab of the report, all similar to each other except the name. They should be named “MVHBoreLeftRotated()," “MVHBoreRightRotated(),” “MVHBoreBottomRotated(),” and "MVHBoreTopRotated().’
    2. Correctly reference the appropriate function in each report component where it is necessary to display horizontal boring data accurately. For example, if you need to display the edgeboring barcode in a barcode report component that should be displayed for the left edge of the part, you would use the function “MVHBoreLeftRotated()." If you need to display a barcode for the bottom edge, you will use the function “MVHBoreBottomRotated().” Use the function whose name contains the name of the part side needed.          

Additional Details

Each time you call the function in the report, you must supply it with four (4) arguments. In the order you must enter them, they are as follows:

  1. Work Order LinkID
  2. Batch LinkID
  3. OptimizationResults Parent Part LinkID
  4. OptimizationResults Child Part LinkID

Here is a typical report component call to this function. (Keep in mind that the actual <tablename.fieldname> you will use will depend on what you are trying to accomplish with the report or label.)

MVHBoreLeftRotated(OptimizationResults.LinkIDWorkOrder, OptimizationResults.LinkIDWorkOrderBatch, OptimizationResults.LinkID, OptimizationResults.OptResStation2.LinkID)

It is acceptable to call the same function multiple times within a single report component. For example, you may be building a custom barcode string based on whether one of the part edges contains horizontal boring or not. You might call it once to determine if the field contains data, and then again, to build a string based on the data found there.


Before performing the procedure below, you must successfully create and then decide which secondary machining dataset relationship to use. Click  here  for more information about why that needs to be done and how to do it.
  1. I have attached a text file containing the function code that you will need to copy to the Code tab of your report. If the Code tab is not displayed, right-click in the white area immediately to the right of Page 1 and Preview tabs. Click the Code menu items to that it displays a checkmark next to it.

  2. Fig. 1 - Right-click and select Code to activate the code tab

    Fig. 2 - Insert function code in the area between End Sub, and #Region (indicated by dotted arrow)

  3. Import the attached test report in a build between 15.6.1414 & 15.6.2211 and look at expressions behind the horizontal barcode components for examples of how to modify your report components.

  4. Fig. 3 - Report Designer showing barcodes to use as examples in modifying your expressions

    Fig. 4 - Sample barcode expression calling the function MHHBoreTopRotated

I have attached a test report you may use as a sample to help you understand the concepts found in this article.

Function Code Snippet

You may copy and paste the code below into the Code tab of your reports, as explained in this article.


Private Function MVHBoreLeftRotated(LinkIDWO As String, LinkIDBatch As String, LinkIDParent As String, LinkIDChild As String) As String
 Microvellum.Production.Optimization.clsOptimizationResultTransformation.Init(LinkIDWO, LinkIDBatch)
 Return Microvellum.Production.Optimization.clsOptimizationResultTransformation.BarcodeLeft(LinkIDParent, LinkIDChild)
End Function

Private Function MVHBoreRightRotated(LinkIDWO As String, LinkIDBatch As String, LinkIDParent As String, LinkIDChild As String) As String
 Microvellum.Production.Optimization.clsOptimizationResultTransformation.Init(LinkIDWO, LinkIDBatch)
 Return Microvellum.Production.Optimization.clsOptimizationResultTransformation.BarcodeRight(LinkIDParent, LinkIDChild)
End Function

Private Function MVHBoreBottomRotated(LinkIDWO As String, LinkIDBatch As String, LinkIDParent As String, LinkIDChild As String) As String
 Microvellum.Production.Optimization.clsOptimizationResultTransformation.Init(LinkIDWO, LinkIDBatch)
 Return Microvellum.Production.Optimization.clsOptimizationResultTransformation.BarcodeBottom(LinkIDParent, LinkIDChild)
End Function

Private Function MVHBoreTopRotated(LinkIDWO As String, LinkIDBatch As String, LinkIDParent As String, LinkIDChild As String) As String
 Microvellum.Production.Optimization.clsOptimizationResultTransformation.Init(LinkIDWO, LinkIDBatch)
 Return Microvellum.Production.Optimization.clsOptimizationResultTransformation.BarcodeTop(LinkIDParent, LinkIDChild)
End Function

    • Recent Articles

    • Asking to Re-Activate Software on Start Up

      If your license is current, but you keep getting the Activate Software window when starting up Toolbox, this is the fix. Instead of entering your serial number and password every time, go to your MV Toolbox icon on your desktop and Right-click then ...
    • Toolbox Release Notes | Build 22.1.0620.641

      The following Release Notes apply to Toolbox Build 22.1.0620.641 Reports & Labels Resolutions: Resolved an issue with the auto-label rotation when you create new g-code from a batch drawing. Resolved an issue with certain saws that prevented the ...
    • Toolbox Release Notes | Build 22.1.0607.641

      The following Release Notes apply to Toolbox Build 22.1.0607.641 Report Groups Resolutions: Removed and extra "BMP" choice for the HTML format.   Resolved an issue that prevented changing the scaling in HTML output. Resolved an issue that caused ...
    • Toolbox Release Notes | Build 22.1.0525.641

      The following Release Notes apply to Toolbox Build 22.1.0525.641 Database Management Resolutions: Resolved an issue that caused products and subassemblies to need to be imported twice in order to see them in Toolbox.  Resolved an issue with ...
    • Microvellum Foundation Library Release Notes | Build 22.0520

      The following release notes apply to Microvellum Foundation Library, Build 22.0520 Please make sure you are selecting the correct specification group when drawing products. There may be specification groups for both metric and imperial. Additions: ...