public byte[] readJoints() { try { List <byte> jointBytes = new List <byte>(); NameValueMap nameMap = currentApplication.TransientObjects.CreateNameValueMap(); nameMap.Add("DoubleBearing", false); RigidBodyResults jointsContainer = currentDocument.ComponentDefinition.RigidBodyAnalysis(nameMap); RigidBodyJoints jointList = jointsContainer.RigidBodyJoints; JointData jointDataObject = null; foreach (RigidBodyJoint joint in jointList) { foreach (AssemblyJoint assemblyJoint in joint.Joints) { foreach (byte byteID in BitConverter.GetBytes(0003)) { jointBytes.Add(byteID); } foreach (JointData jointData in jointDataList) { if (jointData.jointOfType.OccurrenceOne.Name.Equals(assemblyJoint.OccurrenceOne.Name) && jointData.jointOfType.OccurrenceTwo.Name.Equals(assemblyJoint.OccurrenceTwo.Name)) { jointDataObject = jointData; } } if (joint.JointType.Equals("kSlideJointType")) { foreach (byte byteJID in BitConverter.GetBytes((ushort)0000)) { jointBytes.Add(byteJID); } foreach (byte jointSection in ProcessLinearJoint(joint, jointDataObject)) { jointBytes.Add(jointSection); } } if (joint.JointType.Equals("kRotationalJointType")) { foreach (byte byteJID in BitConverter.GetBytes((ushort)0001)) { jointBytes.Add(byteJID); } foreach (byte jointSection in ProcessRotationalJoint(joint, jointDataObject)) { jointBytes.Add(jointSection); } } } } return(jointBytes.ToArray()); } catch (Exception e) { //catches problems MessageBox.Show(e.Message + "\n\n\n" + e.StackTrace); return(null); } }
public byte[] ReadJoints() { try { List <byte> jointBytes = new List <byte>(); NameValueMap nameMap = currentApplication.TransientObjects.CreateNameValueMap(); nameMap.Add("DoubleBearing", false); RigidBodyResults jointsContainer = currentDocument.ComponentDefinition.RigidBodyAnalysis(nameMap); RigidBodyJoints jointList = jointsContainer.RigidBodyJoints; foreach (RigidBodyJoint rigidJoint in jointList) { foreach (AssemblyJoint assemblyJoint in rigidJoint.Joints) { if (assemblyJoint.Definition.JointType.ToString().Equals("kSlideJoint")) { jointBytes.AddRange(ProcessLinearJoint(rigidJoint)); } if (assemblyJoint.Definition.JointType.ToString().Equals("kRotationalJointType")) { jointBytes.AddRange(ProcessRotationalJoint(rigidJoint)); } if (assemblyJoint.Definition.JointType.ToString().Equals("kCylindricalJointType")) { jointBytes.AddRange(ProcessCylindricalJoint(rigidJoint)); } if (assemblyJoint.Definition.JointType.ToString().Equals("kPlanarJointType")) { jointBytes.AddRange(ProcessPlanarJoint(rigidJoint)); } if (assemblyJoint.Definition.JointType.ToString().Equals("kBallJointType")) { jointBytes.AddRange(ProcessBallJoint(rigidJoint)); } } } //Adds ID of joint section and the size of the section if there are joints in the model, to avoid excess data in the file. if (jointBytes.Count > 0) { jointBytes.AddRange(BitConverter.GetBytes(0003)); jointBytes.InsertRange(4, BitConverter.GetBytes(jointBytes.Count - 4)); } return(jointBytes.ToArray()); } catch (Exception e) { //catches problems MessageBox.Show(e.Message + "\n\n\n" + e.StackTrace); return(null); } }