コード例 #1
0
        public static void CreateCam(double angle)
        {
            double dRad   = angle * dPi / 180;
            double dDSin1 = iCircle1Rad * Math.Sin(dRad);
            double dDCos1 = iCircle1Rad * Math.Cos(dRad);
            double dDSin2 = iCircle2Rad * Math.Sin(dRad);
            double dDCos2 = iCircle2Rad * Math.Cos(dRad);
            double dCSin  = iCircleDist * Math.Sin(dRad);
            double dCCos  = iCircleDist * Math.Cos(dRad);

            oCurrentSketch = oPartBody.Sketches.Add(oPlaneYZ);
            Factory2D oFactory2D = oCurrentSketch.OpenEdition();
            double    dRad1      = dRad - dPi / 4;
            double    dRad2      = dRad + dPi / 4;

            oCurrentLine1   = oFactory2D.CreateLine(iCenterX - dDSin1, iCenterY + dDCos1, iCenterX + dCCos + dDSin2, iCenterY - dCSin + dDCos2);
            oCurrentLine2   = oFactory2D.CreateLine(iCenterX + dDSin1, iCenterY - dDCos1, iCenterX + dCCos - dDSin2, iCenterY - dCSin - dDCos2);
            oCurrentCircle1 = oFactory2D.CreateCircle(iCenterX, iCenterY, iCircle1Rad, dRad2, dRad1);
            oCurrentCircle2 = oFactory2D.CreateCircle(iCenterX + dCCos, iCenterY + dCSin, iCircle2Rad, dRad1, dRad2);
            Reference   oRefLine1          = oPart.CreateReferenceFromObject(oCurrentLine1);
            Reference   oRefCircle1        = oPart.CreateReferenceFromObject(oCurrentCircle1);
            Reference   oRefLine2          = oPart.CreateReferenceFromObject(oCurrentLine2);
            Reference   oRefCircle2        = oPart.CreateReferenceFromObject(oCurrentCircle2);
            Reference   oRefLine1StartPt   = oPart.CreateReferenceFromObject(oCurrentLine1.StartPoint);
            Reference   oRefLine1EndPt     = oPart.CreateReferenceFromObject(oCurrentLine1.EndPoint);
            Reference   oRefLine2StartPt   = oPart.CreateReferenceFromObject(oCurrentLine2.StartPoint);
            Reference   oRefLine2EndPt     = oPart.CreateReferenceFromObject(oCurrentLine2.EndPoint);
            Reference   oRefCircle1StartPt = oPart.CreateReferenceFromObject(oCurrentCircle1.StartPoint);
            Reference   oRefCircle1EndPt   = oPart.CreateReferenceFromObject(oCurrentCircle1.EndPoint);
            Reference   oRefCircle2StartPt = oPart.CreateReferenceFromObject(oCurrentCircle2.StartPoint);
            Reference   oRefCircle2EndPt   = oPart.CreateReferenceFromObject(oCurrentCircle2.EndPoint);
            Constraints oConstraints       = oCurrentSketch.Constraints;
            Constraint  oConstraint        = oConstraints.AddMonoEltCst(CatConstraintType.catCstTypeReference, oRefCircle1);

            oConstraint = oConstraints.AddMonoEltCst(CatConstraintType.catCstTypeReference, oRefCircle2);
            oConstraint = oConstraints.AddBiEltCst(CatConstraintType.catCstTypeTangency, oRefLine1, oRefCircle1);
            oConstraint = oConstraints.AddBiEltCst(CatConstraintType.catCstTypeTangency, oRefCircle2, oRefLine1);
            oConstraint = oConstraints.AddBiEltCst(CatConstraintType.catCstTypeOn, oRefCircle1StartPt, oRefLine1StartPt);
            oConstraint = oConstraints.AddBiEltCst(CatConstraintType.catCstTypeOn, oRefCircle2EndPt, oRefLine1EndPt);
            oConstraint = oConstraints.AddBiEltCst(CatConstraintType.catCstTypeTangency, oRefLine2, oRefCircle1);
            oConstraint = oConstraints.AddBiEltCst(CatConstraintType.catCstTypeTangency, oRefLine2, oRefCircle2);
            oConstraint = oConstraints.AddBiEltCst(CatConstraintType.catCstTypeOn, oRefCircle1EndPt, oRefLine2StartPt);
            oConstraint = oConstraints.AddBiEltCst(CatConstraintType.catCstTypeOn, oRefCircle2StartPt, oRefLine2EndPt);
            oCurrentSketch.CloseEdition();
            ShapeFactory oShapeFactory = (ShapeFactory)oPart.ShapeFactory;
            Pad          oPad          = oShapeFactory.AddNewPad(oCurrentSketch, iCamThickness + iCurrentLevel);

            oPad.SecondLimit.Dimension.Value = iCurrentLevel * -1;
        }