Пример #1
0
        public CONSTRAINT(NXOpen.Positioning.Constraint nxConstraint, ASSEMBLY assemManager)
        {
            assemManager_ = assemManager;

            nxConstraintRefGeoms = nxConstraint.GetReferences();

            //get number of reference geometry related with current constraint
            numRefGeoms = nxConstraintRefGeoms.Length;

            //Make array to save reference geometries and their corresponding parts in TransCAD
            tcad_refGeomRelatedParts = new TransCAD.Part[numRefGeoms];
            tcad_RefGeoms            = new TransCAD.Reference[numRefGeoms];
            refGeomPartPositions     = new Point3d[numRefGeoms];
            refGeomPartOrientations  = new Matrix3x3[numRefGeoms];
            nx_RefGeoms = new NXObject[numRefGeoms];

            //for each reference geometry in constraint
            for (int i = 0; i < numRefGeoms; i++)
            {
                ConstraintReference nxConstraintRefGeom = nxConstraintRefGeoms[i];

                nx_RefGeoms[i] = nxConstraintRefGeom.GetGeometry();

                //identify reference related part's index by name from NX
                int    refGeomPartIdx = 0;
                string refCompName    = nx_RefGeoms[i].OwningComponent.DisplayName;
                for (int k = 0; k < assemManager_.numComponents; k++)
                {
                    if (assemManager_.nxCompNames[k] == refCompName)
                    {
                        refGeomPartIdx = k;
                    }
                }

                //get TransCAD part info related with current reference geometry
                tcad_refGeomRelatedParts[i] = assemManager_.tcad_PartList[refGeomPartIdx];

                //get current TransCAD part's position and orientation to convert world coordinate(from NX) to local coordinate(in TransCAD)
                refGeomPartPositions[i]    = assemManager_.componentPositions[refGeomPartIdx];
                refGeomPartOrientations[i] = assemManager_.componentOrientations[refGeomPartIdx];
            }
        }
Пример #2
0
 public CONSTRAINTCoaxial(NXOpen.Positioning.Constraint nxConstraint, ASSEMBLY assemManager)
     : base(nxConstraint, assemManager)
 {
 }
Пример #3
0
        static void Main(string[] args)
        {
            nxSession = Session.GetSession();
            ufSession = UFSession.GetUFSession();

            PartLoadStatus partLoadStatus1;
            //ArrayList tcad_PartList = new ArrayList();
            string fileName = args[0];

            //"D:\\UG_MACRO\\TEST MODEL\\Amodels\\A1\\Pre\\A1.prt";
            NXOpen.Part assemblyFilePart = nxSession.Parts.OpenDisplay(fileName, out partLoadStatus1);

            ASSEMBLY assemManager = new ASSEMBLY();

            assemManager.InitializeTransCAD();
            assemManager.loadAssemblyInfo(assemblyFilePart);

            int numConstraints = assemManager.nxConstraints.Length;
            List <CONSTRAINT> preConstraints = new List <CONSTRAINT>();

            //for each constraint
            for (int i = 0; i < numConstraints; i++)
            {
                NXOpen.Positioning.Constraint nxConstraint = assemManager.nxConstraints[i];

                Constraint.Type constraintType = nxConstraint.ConstraintType;
                System.Console.WriteLine(constraintType.ToString());

                ConstraintReference[] nxConstraintRefGeoms = nxConstraint.GetReferences();

                if (constraintType == Constraint.Type.Touch)
                {
                    //validation
                    if (nxConstraintRefGeoms.Length != 2)
                    {
                        System.Console.WriteLine("Touch Align Constraint should have only 2 reference geometries!");
                        continue;
                    }

                    //Coaxial

                    /*
                     * if (nxConstraintRefGeoms[0].GetUsesGeometryAxis() && nxConstraintRefGeoms[1].GetUsesGeometryAxis())
                     * {
                     *  preConstraints.Add(new CONSTRAINTCoaxial(nxConstraint, assemManager));
                     * }
                     */
                    //Incidence??
                    else
                    {
                        preConstraints.Add(new CONSTRAINTIncidence(nxConstraint, assemManager));
                    }
                }
                //coaxial-edge-based-fit-Constraint in NX
                else if (constraintType == Constraint.Type.Fit)
                {
                    preConstraints.Add(new CONSTRAINTCoaxial(nxConstraint, assemManager));
                }

                else if (constraintType == Constraint.Type.Fix)
                {
                }

                else if (constraintType == Constraint.Type.Distance)
                {
                }

                else if (constraintType == Constraint.Type.Angle)
                {
                }
            }

            //for each constraint
            for (int i = 0; i < preConstraints.Count(); i++)
            {
                preConstraints[i].getNXInfo();
            }
            //for each constraint
            for (int i = 0; i < preConstraints.Count(); i++)
            {
                preConstraints[i].toTransCAD();
            }
            assemManager.UninitializeTransCAD();
        }
Пример #4
0
 public CONSTRAINTIncidence(NXOpen.Positioning.Constraint nxConstraint, ASSEMBLY assemManager)
     : base(nxConstraint, assemManager)
 {
     nxConst = nxConstraint;
 }