mXrap Version 6.0.0 - Release notes and Changelogs
Highlights
We're pleased to announce the release of mXrap version 6, bringing with it a range of enhancements to elevate your mXrap experience. This major update includes improvements to the user interface, as well as enhancements to speed when loading the root folder and applications. Additionally, we've upgraded the 3D rendering and navigation capabilities in the 3D views.
New: Tilt View and automatic grid
However, it's important to note that older root folders may not function properly in version 6 due to incompatibilities. Therefore, it's crucial that all root folders and apps are upgraded and checked to ensure they work correctly before transitioning. If you haven't received communication about this upgrade yet, expect an email in the coming weeks with instructions on how to complete the process.
Please be aware that mXrap version 5 is scheduled to cease functioning in May 2024. Your cooperation during this transition period is greatly appreciated and will help facilitate a smooth migration to the new version.
The notable changes that would effect development includes the change in scope for Table Calcs and data structure changes (octal literals, null locations, etc.). These changes mean that some Table Calcs or Row Calcs may break. Please read the change logs on how to address this.
- Users
- Developers
- Migration Guide
What's new for Users - mXrap 6.0.0
Last update: 14 November 2023
Introduction
Short story: Ask the mXrap team to upgrade your root folder, and then you can install and use Version 6. Be sure to check any site-specific Apps that you have in your root.
Version 6 is intended to be backwards and forward compatible with Version 5.
This means you can switch between Version 6.0 and Version 5 without compatibility issues.
Version 6.1 will bring changes that are incompatible with Version 5, so please help us upgrade you to Version 6.0 soon so we can ensure any problems are fixed before we move onwards into the future.
Contact support if you require a root folder, or help upgrading your own Apps.
Operating System Support
Full support for Windows Server 2022+ and Windows 10+
We are unable to fully support old operating systems such as Windows Server 19, Windows Server 16 and Windows 7.
Many IT departments will be running Windows Server 16 on their Virtual Machines, so this could be an issue at some sites.
The simplest way to check if your computers are supported, is to run mXrap v6 and try it out. If mXrap detects problems, it will tell you.
- Windows 7 and Windows Server 16 can work with plain filenames (no accented characters, etc) and a workaround installed in C:\Windows\System32.
- Windows Server 19 can work with plain filenames (no accented characters, etc).
Codemeter Update - 7.60d
WIBU recently announced a software update to address a CVE security issue (Common Vulnerability and Exposure) that relates to an exploit available from the SOCKS5 proxy. You may not have such a proxy configured, but in theory, Malware could use this issue as part of a combined attack.
https://cdn.wibu.com/fileadmin/wibu_downloads/security_advisories/AdvisoryWIBU-231017-01.pdf
The solution is to upgrade the CodeMeter Runtime to the latest version.
A link to the latest version of the CodeMeter Runtime can be found here:
https://downloads.mxrap.com/Dongles/CodeMeterRuntime.exe
or here: https://www.wibu.com/support/user/user-software.html
mXrap Optimisations
We've made many improvements to the way we load the Root folder and files from disk.
Our developers have been using Version 6 Beta for months, and the speed difference alone is such that we don't like switching back to Version 5. We hope you will also find Version 6 faster in your environment.
Improved Display
mXrap now works properly on higher resolution monitors. Version 5 relied on automatic scaling, so it could appear fuzzy and out of focus. Version 6 is now crisp and sharp.
We have also changed the GUI styling of mXrap (eg. the buttons and spacing look different). We aren't happy with the current state and hope to make some more changes in this area.
Note that the fixed-width font (used for numbers) has changed to the newest Microsoft font: "Cascadia Mono".
As a result, the width of columns and text might be different to before, and column widths may need to be adjusted.
Depending on your operating system, you may have been using Courier New or (more likely) Consolas in the past.
mXrap Tips
We have now added some helpful tips in mXrap. Try clicking the ? buttons to view the tips.
3D Tips | ![]() |
---|---|
Chart Tips | ![]() |
Tableview Tips | ![]() |
3D Navigation
Version 5's 3D view could be confusing when looking at a plan view of your mine. Dragging the left mouse button up and down would rotate the view in such a way that your mine would end up sideways.
Starting from Version 6, dragging the view up and down will always rotate the mine vertically between a plan view and a section view.
Dragging the mouse side to side will always rotate the mine around the vertical axis.
To make navigation easier, you can:
- Force a horizontal rotation by holding the Shift key while dragging the mouse side to side.
- Force a vertical rotation by holding the Shift and Alt key while dragging the mouse up and down.
Rotate the View Mouse side-to-side Force Rotation: Shift + Drag | ![]() |
---|---|
Tilt the View Mouse up-and-down Force Tilt: Shift + Alt + Drag | ![]() |
Gridlines rotate with the View | ![]() |
Improved 3D View
We've made an update to mXrap that improves several aspects regarding its display. A short list of the changes can be seen below.
-
3D point attenuation improved when perspective is off
-
Improved rendering quality and speed
-
Clipping updates are applied much faster
-
Point selection highlights are updated faster
-
Anti-aliasing option added for points
-
Better fly-to-point performance
-
Able to cancel fly-to-point animations half-way
-
Ability to pick vertices from surface or line series (using F2 picking)
-
Ability to select vertices in a surface or line series using a selection box
-
Ability to highlight selected vertices in a surface or line series
Select and Highlight Vertices in a Surface or Line Series in 3D |
---|
-
Depth Peeling improved
-
Depth Peeling automatically updates the 3d view when changed
-
Depth Peeling can now be enabled or disabled for specific 3d views within “Drawing Options”
-
Depth Peeling can still be accessed in “Cog”>“Advanced Settings”
Depth Peeling Controls in the 3D Panel | ![]() |
---|---|
Global controls that affect all 3D views | ![]() |
Depth Peeling Off | ![]() |
Depth Peeling On | ![]() |
Improved Marker Symbol Dialog Box
While choosing a Marker Style symbol, you can preview all symbols in a chosen colour.
Choose a Symbol | ![]() |
---|---|
Preview in different colours | ![]() |
Local Cache Changes
mXrap keeps a copy of a lot of data in your "User Profile" folders on the C: system disk. This can be problematic if your C: is running low on disk space.
You have always been able to choose another location to store this cache (eg on a larger data disk), however, Version 5 still stored quite a lot of stuff on the C:
Version 6 will now store all of its Cache where you choose, and, it will also detect and clean up unused cache files left behind in your User Profile.
Access the Settings | ![]() |
---|---|
Change the Location of the Cache You will need to choose your root folder again | ![]() |
Old cache auto-detected | ![]() |
Clearing old Cache files | ![]() |
File Path Update
mXrap now supports more special characters, white spaces in file paths and deeper folder paths. Stricter file naming is also enforced.
If you have any issues regarding any special characters, please try to use plain ascii instead and let us know via support.
Credentials Pop-Up
mXrap may read files from network drives, such as seismic event files. The username/password credentials for these network shares are sometimes forgotten by Windows, and mXrap Version 5 would fail to access the file and not tell you that there was a problem.
As of Version 6, mXrap will ask the user for the username and password if the Network share needs the credentials.
App Translations
We've implemented a language translation system for translating Apps into different languages.
You can choose the language mXrap uses via the About dialog.
Click "About mXrap" | ![]() |
---|---|
Choose a Language | ![]() |
The current languages available for mXrap include English, Spanish, French, Portuguese and Swedish.
We have only just started translating some Apps. If you are interested in contributing to the translations, please let us know.
Example: English General Analysis | ![]() |
---|---|
Exemple: Français Analyse Générale | ![]() |
mXrap - What's new for Developers - mXrap 6.0.0
Last update: 14 November 2023
Introduction
We are pleased to announce the first release of version 6 of mXrap!
Version 6 is intended to be backwards and forwards compatible with Version 5.
This means you can switch between Version 6 and Version 5 without compatibility issues.
You can develop Apps in Version 6, and deploy to a Version 5 site, and everything will work.
...
Almost.
...
You do need to upgrade the root before using Version 6 (see the "Migration Guide" for more information),
and, you need to avoid some new features while it can be used with Version 5.
The mXrap team's standard code in your root folders has been upgraded, so ensure we have upgraded your root folder BEFORE you start using Version 6.
Contact support if you require a root upgrade, or help upgrading your own Apps.
Hotkey to Save
You can now save tools with Ctrl + S.
Tab Icons
You can now add icons to tool tabs.
Inline CSS for Panels, Headers and Footers, ...
You can now use inline CSS to style your text as HTML using CSS selectors.
You can use this technique in places such as:
-
Headers and footers in Charts, 3D Views and Table Views
-
HTML Views
-
Panels
-
Text Element (type the HTML into the entry box)
-
Value Display (link the HTML text in from a Calculation)
Note for Panel Views: Some CSS techniques cannot be done via the "Stylesheet (CSS)" tab, and must be done using inline-CSS.
Example: HTML + Inline-CSS |
---|
![]() |
Example: HTML + Inline-CSS in a Header/Footer |
![]() |
Example: HTML + Inline-CSS in a Panel |
![]() |
Example HTML with Inline CSS
<html>
<style>
.title {
font-weight: bold;
text-decoration: underline;
font-size: 20px;
}
.sub.title {
font-size: 14px;
}
#keynote {
color: #006400;
font-style: italic;
}
.keyWord {
font-weight: bold;
text-decoration: underline;
font-size: 13px;
}
</style>
<div class="title">Example Title</div>
<div class="sub title">Example Sub Title</div>
<div id="keynote">This is just an <span class="keyWord">example</span>!</div>
<div>
This is an <span class="keyWord">example</span> on how you can use
<span class="keyWord">inline CSS</span> to style
<span class="keyWord">HTML items</span> using
<span class="keyWord">CSS selectors</span>.
<div id="keynote">
Note: This is <span class="keyWord">not</span> the full extent of its
capabilities.
</div>
</div>
</html>
Table Calc and Row Calc Update
Table and Row Calcs have been treated to a very large upgrade.
New Javascript Language Support
New Engine: We've upgraded our Javascript engine to support the latest version of (JS 2021/2022), allowing for further flexibility in table calcs and row calcs. Please note that these new features will not be compatible with mXrap v5, so only use them once the users of your apps have been upgraded to v6.
mXrap supported ECMAScript 5. Version 6 brings support for the following language changes:
- ECMAScript 6 2015: https://www.w3schools.com/js/js_es6.asp
- ECMAScript 6 2016: https://www.w3schools.com/js/js_2016.asp
- ECMAScript 6 2017: https://www.w3schools.com/js/js_2017.asp
- ECMAScript 6 2018: https://www.w3schools.com/js/js_2018.asp
- ECMAScript 6 2019: https://www.w3schools.com/js/js_2019.asp
- ECMAScript 6 2020: https://www.w3schools.com/js/js_2020.asp
- ECMAScript 6 2021/2022: https://www.w3schools.com/js/js_2021.asp
Access more RAM in your Calculations
mXrap is now able to support bigger memory allocations. You create a shortcut to the mxrap.exe and add these to the command line parameters.
-
For per buffer allocation
-
--js_max_per_buffer_gb=N
-
For total buffer allocation
-
--js_max_all_buffers_gb=N
-
For native object/array allocation
-
--js_max_native_gb=N
-
Where N is the size you want to specify for memory allocation, in Gigabytes.
-
Example:
-
Add the following to the back of a shortcut in the target section:
-
--js_max_all_buffers_gb=8 --js_max_per_buffer_gb=4 --js_max_native_gb=4
-
Storing Data files and CSVs in Bundles
The "Bundle" feature allows developers to put their Apps in a protected and controlled package that is ideal for deployment.
One problem in the past was distributing and reading fixed data files - e.g. tables of mathematical constants for computation.
The solution was to store the CSV files outside the bundle, but that was annoying to deploy.
Version 6 adds the ability to store CSVs inside bundles like any other tool. You can import that CSV with an ImportCSV tool from within the same bundle, or, mark that file for "Export" to read that file from outside the bundle.
Please note, you will need to manually set the Input File path to the CSV, as the "Browse" button does not list files within Bundles.
mXrap Developer Migration Guide: Version 5 to 6.0.0
Last update: 13 November 2023
Returning Points in a Row Calculation
Checking Null Points in a Row Calculation
Introduction
Short story: Ask the mXrap team to upgrade the root folder, and check your own Apps for the problems described below.
Version 6 is intended to be backwards and forward compatible with Version 5.
This means you can switch between Version 6 and Version 5 without compatibility issues.
You can develop Apps in Version 6, and deploy to a Version 5 site, and everything will work.
...
We almost achieved that goal.
...
The new Javascript engine in Version 6 delivers "ECMAScript 6" support, which brings changes to the way the JS language works.
Your Javascript code MAY require changes to work in Version 6.
The mXrap team's standard code in your root folders has been upgraded, so ensure we have upgraded your root folder BEFORE you start using Version 6.
Contact support if you require a root upgrade, or help upgrading your own Apps.
| Returning Points in a Row Calculation |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Screenshot | |
| Code | return [1,2,3]; |
| Warning Message | WARNING: use the provided 'result' variable to return array results for efficiency. |
| Solution | A "result" variable is automatically provided.
Fill it with the results and return it, like so:
result[0] = 1;
result[1] = 2;
result[2] = 3;
return result; |
| Reason | return [1,2,3]; creates an unnecessary Array - this is slower and consumes more memory.
We want to encourage good consistent coding practices and use the same code pattern everywhere. |
| Before | |
| After |
|
| Returning Null Points |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Screenshot | |
| Code | return [null,null,null]; |
| Warning Message | WARNING: do not return [null,null,null], instead return null |
| Solution | use instead: return null; |
| Reason | Null coordinates are now specified as null instead of [null,null,null]. This is more efficient and simpler to code, as there is no Array involved. |
| Before |
|
| After |
|
| Checking Null Points in a Row Calculation |
| --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | ------------------- | --- | -------------------- | --- | ---------------------------------------------------------------------------------------------------- |
| Screenshot | |
| Code | if(override[0] == null | | override[1] == null | | override[2] == null) |
| Warning Message | TypeError: Cannot read properties of null (reading ‘0') |
| Solution for Version 6 only
This is the future: use this if you don't need to support users on Version 5 | use instead:
if(override === null)
Note the use of 3 = signs, not 2.
=== compares both type and value: you want this!
== will do conversions and may not do what you expect. |
| Backwards Compatible Solution for both
Version 5 and 6 | use instead:
if(override === null | | override[0] == null | | override[1] == null | | override[2] == null)
Tip: add override === null to the front of the if statement. |
| Reason | Null coordinates are now specified as null instead of [null,null,null]. Thus the check should be much simpler, as there is no Array involved anymore. |
| Before | |
| After |
|
| Octal Literals |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Screenshot | |
| Code | new Date(2023,10,01); |
| Warning Message | WARNING: Program failed to compile
SyntaxError: Octal literals are not allowed in strict mode. |
| Solution | use instead: new Date(2023,10,1); |
| Reason | The new Javascript does not accept numbers written with a leading zero, eg 01 or 02.
These are known as Octals, and were a common source of confusion.
ie 08 and 09 are invalid, and 010 translates to 8 in decimal.
This was a source of bugs, so Octals are disallowed as a blanket policy. |
| Before | |
| After |
|
| Problems with Omori Library
similar errors are seen as: ReferenceError: something is not defined |
| ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Screenshot | |
| Error Message | ReferenceError: results_best is not defined |
| Solution | This requires a root upgrade for a newer version of this library.
Contact support to arrange a full root upgrade. |
| Reason | We have tightened up "global scoping" rules for better coding practices.
In Version 5, scripts imported via require.mx() could access global variables defined in the main calculation code.
This is bad practice and is no longer allowed. |
Table Column Widths
Note that the fixed-width font (used for numbers) has changed to the newest Microsoft font: "Cascadia Mono".
As a result, the width of columns and text might be different to before, and column widths may need to be adjusted.
Depending on your operating system, you may have been using Courier New or (more likely) Consolas in the past.