Your comments

To perform a measurement between two points you first have to get the position of those points and obtain the module of vector going from one to another. To get the position of a point at your mouse, you can use FindHIts method in Viewport3DHelper:

private Point3D p1 {get; set;}

private Point3D p2 {get; set;}

private void Helix_MouseUp_Measure(object sender, MouseButtonEventArgs e)


Point p = e.GetPosition(Helix);

var hits = Viewport3DHelper.FindHits(Helix.Viewport, p);

if (hits.Any())


p1 = hits[0].Position;

//Store first point and repeat



For the lines on top of the mesh you can indeed use LinesVisual3D as you have said. I'm not familiar with STL file format and I'm not aware of methods and helpers in Helix for that. For a general case you want to populate Points property of LinesVisual3D with pairs of points that represents each edge of your mesh.

Good luck!

No plans so far in releasing the source code since it is not as clean as I would like it to be. In addition, FEX is a separate application which uses Helix Toolkit and the capabilities of the latter are much wider. All visual features included in FEX are in someway already in Helix. The 'looks' are custom made using the bricks and tools provided by Helix.

Said this, if you are interested in a particular feature or behavior just post it here and I'll do my best to help you in order to achieve it in your application.


Hello Rob,
You can find the download link and some features & tutorials on the main page (

At this moment FEX is fully capable of reading all Nastran Input Files (.dat, .bdf) and I am planning to expand it to Abaqus (.inp). It is pretty easy to read a .stl file as Helix is capable of reading it by default. Are you trying to compare geometry with your model? Or your mesh is directly in .stl format? As far as I know stl can store only triangular elements.

I would love to talk about this with you. As this issue is not directly related to Helix Toolkit I think it's best that we continue by PM.

By default EnableCurrentPosition is set to false so that calculation is skipped.
If it is enabled, then CurrentPosition (Point3D) property can be used in order to know the 3D point that is under the mouse.
What are you trying to do?

I think you can simulate the desired behavior by allowing only HelixViewPort3D capture mouse events and then trigering manually events in the Overlay.
Thanks for the answer Isdas,

I haven't tested the SharpDX version in depth and its capabilities. I think the main problem of the standard edition of Helix Toolkit (at least for me) is that it renders extremely slow large number of ScreenSpaceVisual (i.e LinesVisual3D). I was amazed how fast SharpDX handled that.

I may missed it, but as far as I know there is not BackMaterial in SharpDX, and I can't afford changing my application in so many places, duplicating the geometry, inverting the normals, just for the correct visualization. If a BackMaterial is not set, the model seems transparent. I don't know if there is a special reason behind this, but for me, that would be one of the key points.

Other key functionality, for me, would be the ability of project from/to 2D/3D and being able to handle the standard mouse events (there is an example of this, so I assume it's already implemented).

Again, thank you very much.
I'm considering the same, so any information or advice would be really appreciated.
I'm very interested in this too.