Пример #1
0
 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);
     }
 }
Пример #2
0
        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);
            }
        }