Your comments

Solved in the meantime: First of all I realized that the issue is actually connected to WPF and not the HelixToolkit, sorry for that. Then I used the inherited members from the base class ModelVisual3D (e.g. myAxisInstance.Children.Add). My initial class to represent an axis now looks as follows:


using System.Windows;
using System.Windows.Media.Media3D;
using PropertyTools.DataAnnotations;
using BrowsableAttribute = System.ComponentModel.BrowsableAttribute;
using HelixToolkit.Wpf;
namespace Vizualizer_WPF
{
    class MachineAxis3D: ModelVisual3D
    {
        public static DependencyProperty RotationAngleProperty = DependencyPropertyEx.Register<double, machineaxis3d="">("RotationAngle", 0, (s, e) => s.AppearanceChanged());
        public static readonly DependencyProperty PrincipalDirectionProperty = DependencyPropertyEx.Register<vector3d, machineaxis3d="">("PrincipalDirection", new Vector3D(1, 0, 0), (s, e) => s.AppearanceChanged());
        public MachineAxis3D()
        {
        }
        [Category("AxisProperties")]
        [Slidable(0, 360)]
        [Browsable(true)]
        public double RotationAngle
        {
            get
            {
                return (double)this.GetValue(RotationAngleProperty);
            }
            set
            {
                this.SetValue(RotationAngleProperty, value);
            }
        }
        public Vector3D PrincipalDirection
        {
            get
            {
                return (Vector3D)this.GetValue(PrincipalDirectionProperty);
            }
            set
            {
                this.SetValue(PrincipalDirectionProperty, value);
            }
        }
        // handles the rotation of the axis
        private void AppearanceChanged()
        {
            var tg = new Transform3DGroup();
            tg.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(PrincipalDirection, RotationAngle)));
            Transform = tg;
        }
    }
}