public CyPhy.KinematicJoint CyphyJoint; // The original joint public KinematicJoint(CyPhy.KinematicJoint kJoint) { CyphyJoint = kJoint; JointType = GetJointType(kJoint); Name = kJoint.Name; CyPhyID = kJoint.ID; // TODO: Error handling - many things can go wrong here if (kJoint is CyPhy.HasKinematicRotationalLimit) { foreach (var limit in (kJoint as CyPhy.HasKinematicRotationalLimit).SrcConnections.KinematicRotationalLimitCollection) { if (limit.Attributes.LimitType == CyPhyClasses.KinematicRotationalLimit.AttributesClass.LimitType_enum.Default) { RotationLimitDefault = Double.Parse(limit.SrcEnds.Parameter.Attributes.Value); } else if (limit.Attributes.LimitType == CyPhyClasses.KinematicRotationalLimit.AttributesClass.LimitType_enum.Max) { RotationLimitMax = Double.Parse(limit.SrcEnds.Parameter.Attributes.Value); } else if (limit.Attributes.LimitType == CyPhyClasses.KinematicRotationalLimit.AttributesClass.LimitType_enum.Min) { RotationLimitMin = Double.Parse(limit.SrcEnds.Parameter.Attributes.Value); } } } if (kJoint is CyPhy.HasKinematicTranslationalLimit) { foreach (var limit in (kJoint as CyPhy.HasKinematicTranslationalLimit).DstConnections.KinematicTranslationallLimitCollection) { if (limit.Attributes.LimitType == CyPhyClasses.KinematicTranslationallLimit.AttributesClass.LimitType_enum.Default) { TranslationLimitDefault = Double.Parse(limit.DstEnds.Parameter.Attributes.Value); } else if (limit.Attributes.LimitType == CyPhyClasses.KinematicTranslationallLimit.AttributesClass.LimitType_enum.Max) { TranslationLimitMax = Double.Parse(limit.DstEnds.Parameter.Attributes.Value); } else if (limit.Attributes.LimitType == CyPhyClasses.KinematicTranslationallLimit.AttributesClass.LimitType_enum.Min) { TranslationLimitMin = Double.Parse(limit.DstEnds.Parameter.Attributes.Value); } } } if (!String.IsNullOrEmpty(kJoint.Attributes.GeometricMarker)) { Marker = new GeometryMarkerRep(kJoint.Attributes.GeometricMarker); if (kJoint.ParentContainer.ParentContainer.Kind == "Component") { Marker.ComponentID = CyPhyClasses.Component.Cast(kJoint.ParentContainer.ParentContainer.Impl).Attributes.InstanceGUID; } } }