private void CreateBase(IADAssemblySession assembly, string name) { IADTransformation trans = assembly.GeometryFactory.CreateIdentityTransform(); IADOccurrence occurrence = assembly.RootOccurrence.Occurrences.AddEmptyPart(name, isSheetMetal: false, pTransform: trans); IADPartSession part = (IADPartSession)occurrence.DesignSession; IADDesignPlane xyPlane = part.DesignPlanes.Item("XY-Plane"); IADSketch sketch = part.Sketches.AddSketch(null, part.planeXY(), "Pin"); // Create circle for the pin sketch.BeginChange(); foreach (Pt p in cam.rollerPoints) { sketch.Figures.AddCircle(MMToCM(p.x), MMToCM(p.y), MMToCM(cam.RollerDiameter / 2.0)); } sketch.EndChange(); part.Features.AddExtrudedBoss(pSketch: sketch, depth: MMToCM(PinHeight), endCondition: ADPartFeatureEndCondition.AD_TO_DEPTH, toGeometryOcc: null, toGeometryObject: null, toGeometryOffset: 0, direction: ADDirectionType.AD_ALONG_NORMAL, pDirectionOcc: null, pDirectionObject: null, isDirectionReversed: false, draftAngle: null, IsOutwardDraft: false, name: "Pin"); // Base body sketch = part.Sketches.AddSketch(null, part.planeXY(), "Base"); sketch.BeginChange(); sketch.Figures.AddCircle(0, 0, MMToCM(cam.ComputedPinBoltCircleDiameter / 2 + cam.RollerDiameter)); sketch.EndChange(); part.Features.AddExtrudedBoss(pSketch: sketch, depth: MMToCM(BaseThickness), endCondition: ADPartFeatureEndCondition.AD_TO_DEPTH, toGeometryOcc: null, toGeometryObject: null, toGeometryOffset: 0, direction: ADDirectionType.AD_ALONG_NORMAL, pDirectionOcc: null, pDirectionObject: null, isDirectionReversed: true, draftAngle: null, IsOutwardDraft: false, name: "Base"); // Create the bore for the motor sketch = part.Sketches.AddSketch(null, part.planeXY(), "Motor Mount Bore "); sketch.BeginChange(); sketch.Figures.AddCircle(0, 0, MMToCM(motor.motorMountBore / 2.0)); sketch.EndChange(); part.Features.AddExtrudedCutout(pSketch: sketch, depth: 0, endCondition: ADPartFeatureEndCondition.AD_THROUGH_ALL, toGeometryOcc: null, toGeometryObject: null, toGeometryOffset: 0, direction: ADDirectionType.AD_ALONG_NORMAL, pDirectionOcc: null, pDirectionObject: null, isDirectionReversed: false, draftAngle: null, IsOutwardDraft: false, name: "Motor Mount Bore"); // Create the CS mounting holes for the motor sketch = part.Sketches.AddSketch(null, part.planeXY(), "Motor Mounting Holes"); sketch.BeginChange(); for (int i = 0; i < motor.mountingHoles; i++) { sketch.Figures.AddSketchPoint(MMToCM(Math.Cos(2 * Math.PI * i / motor.mountingHoles) * motor.mountingHolePitchCircle / 2), MMToCM(Math.Sin(2 * Math.PI * i / motor.mountingHoles) * motor.mountingHolePitchCircle / 2)); } sketch.EndChange(); part.Features.AddCounterSunkHole(pSketch: sketch, depth: 0, diameter: MMToCM(motor.mountingHoleDia), counterSinkDiameter: MMToCM(motor.mountingHoleCSDia), counterSinkAngle: Math.PI / 2, isReversed: false, tappedThread: null, depthCondition: ADHoleDepthCondition.AD_HOLE_THROUGH_ALL, toGeometryOcc: null, toGeometryObject: null, toGeometryOffset: 0, name: "Motor mounting holes"); //object filename = @"c:\temp\ad"; //part.SaveAs(ref filename, "name"); }
private void CreateCAM(IADAssemblySession assembly, string name, bool secondCam) { IADTransformation trans = assembly.GeometryFactory.CreateIdentityTransform(); IADOccurrence occurrence = assembly.RootOccurrence.Occurrences.AddEmptyPart(name, isSheetMetal: false, pTransform: trans); IADPartSession part = (IADPartSession)occurrence.DesignSession; IADDesignPlane xyPlane = part.DesignPlanes.Item("XY-Plane"); IADSketch sketch = part.Sketches.AddSketch(null, part.planeXY(), "CAM Profile"); // Create the spline int order = 3; int splinePoints = cam.camPoints.Count + 1; Array points = new double [splinePoints * 2]; Array knots = new double[splinePoints + order]; Array weights = new double[splinePoints]; int idx = 0; for (int i = 0; i < cam.camPoints.Count; i++) { points.SetValue(MMToCM(cam.camPoints[i].x), idx * 2); points.SetValue(MMToCM(cam.camPoints[i].y), idx * 2 + 1); weights.SetValue(0, idx); idx++; //if (i == 0 ) //{ // points.SetValue(cam.camPoints[i].x, idx * 2); // points.SetValue(cam.camPoints[i].y, idx * 2 + 1); // weights.SetValue(0, idx); // idx++; //} } // Add the first point again to close the spline points.SetValue(points.GetValue(0), idx * 2); points.SetValue(points.GetValue(1), idx * 2 + 1); weights.SetValue(0, idx); idx++; //points.SetValue(cam.camPoints[0].x, idx * 2); //points.SetValue(cam.camPoints[0].y, idx * 2 + 1); //weights.SetValue(0, idx); //idx++; idx = 0; for (int i = 0; i < splinePoints - order + 1; i++) { knots.SetValue((float)i / (float)(splinePoints - order + 1), i + order - 1); } for (int i = 0; i < order; i++) { knots.SetValue(0, i); knots.SetValue(1, splinePoints + i); } sketch.BeginChange(); sketch.Figures.AddBspline(order, splinePoints, ref points, ref knots, ref weights); sketch.EndChange(); // Extrude the cam double draftAngle = 0; part.Features.AddExtrudedBoss(pSketch: sketch, depth: MMToCM(cam.CamThickness), endCondition: ADPartFeatureEndCondition.AD_TO_DEPTH, toGeometryOcc: null, toGeometryObject: null, toGeometryOffset: 0, direction: ADDirectionType.AD_ALONG_NORMAL, pDirectionOcc: null, pDirectionObject: null, isDirectionReversed: false, draftAngle: draftAngle, IsOutwardDraft: false, name: "CAM Boss"); // Create the bore sketch = part.Sketches.AddSketch(null, part.planeXY(), "Bore "); sketch.BeginChange(); sketch.Figures.AddCircle(0, 0, MMToCM(cam.EccentricBearingOuterDia / 2.0)); sketch.EndChange(); part.Features.AddExtrudedCutout(pSketch: sketch, depth: 0, endCondition: ADPartFeatureEndCondition.AD_THROUGH_ALL, toGeometryOcc: null, toGeometryObject: null, toGeometryOffset: 0, direction: ADDirectionType.AD_ALONG_NORMAL, pDirectionOcc: null, pDirectionObject: null, isDirectionReversed: false, draftAngle: draftAngle, IsOutwardDraft: false, name: "Bore cutout"); double offsetAngle = 0; if (secondCam) { offsetAngle = (Math.PI * 2.0) / (cam.TeethInCAM + 1) / 2; } // Create the output holes sketch = part.Sketches.AddSketch(null, part.planeXY(), "Output Holes"); sketch.BeginChange(); if (cam.OutputBearings > 0) { double holeDia = MMToCM(cam.OutputBearingsDia + cam.Eccentricity * 2); double pitchDia = MMToCM(cam.OutputPitchCircleDia); for (int i = 0; i < cam.OutputBearings; i++) { double angle = Math.PI * 2.0 * (double)i / (double)cam.OutputBearings - offsetAngle; double x = (pitchDia / 2) * Math.Cos(angle); double y = (pitchDia / 2) * Math.Sin(angle); sketch.Figures.AddCircle(x, y, holeDia / 2.0); } } sketch.EndChange(); part.Features.AddExtrudedCutout(pSketch: sketch, depth: 0, endCondition: ADPartFeatureEndCondition.AD_THROUGH_ALL, toGeometryOcc: null, toGeometryObject: null, toGeometryOffset: 0, direction: ADDirectionType.AD_ALONG_NORMAL, pDirectionOcc: null, pDirectionObject: null, isDirectionReversed: false, draftAngle: draftAngle, IsOutwardDraft: false, name: "Output cutout"); //object filename = @"c:\temp\ad"; //part.SaveAs(ref filename,"name"); }
private void CreateEccentric(IADAssemblySession assembly, string name) { IADTransformation trans = assembly.GeometryFactory.CreateIdentityTransform(); IADOccurrence occurrence = assembly.RootOccurrence.Occurrences.AddEmptyPart(name, isSheetMetal: false, pTransform: trans); IADPartSession part = (IADPartSession)occurrence.DesignSession; IADDesignPlane xyPlane = part.DesignPlanes.Item("XY-Plane"); //IADParameter eccentricParam = part.Parameters.NewParameter("Eccentric", ADParameterType.AD_DISTANCE); //IADParameter bearingInnerDiaParam = part.Parameters.NewParameter("BearingInnerDia", ADParameterType.AD_DISTANCE); //part.Parameters.OpenParameterTransaction(); //eccentricParam.Value = MMToCM(cam.Eccentricity); //bearingInnerDiaParam.Value = MMToCM(BearingID); //part.Parameters.CloseParameterTransaction(); //IADParameter eccentricyParam = part.Parameters.NewParameter("Eccentricy", ADParameterType.AD_DISTANCE); //part.Parameters.OpenParameterTransaction(); //eccentricyParam.ExternallyDriven = true; //eccentricyParam.SourceDocumentID = "GlobalParameters"; //eccentricyParam.SourceItemID = "Eccentricy"; //part.Parameters.CloseParameterTransaction(); // Create circle for the pin IADSketch sketch = part.Sketches.AddSketch(null, part.planeXY(), "Eccentric"); sketch.BeginChange(); IADSketchCircle circle = sketch.Figures.AddCircle(MMToCM(cam.Eccentricity), 0, MMToCM(cam.EccentricBearingInnerDia / 2.0)); //IADDimension dim = sketch.Dimensions.PlaceDiametricDimension(circle, "BearingInnerDia"); sketch.EndChange(); part.Features.AddExtrudedBoss(pSketch: sketch, depth: MMToCM(PinHeight), endCondition: ADPartFeatureEndCondition.AD_TO_DEPTH, toGeometryOcc: null, toGeometryObject: null, toGeometryOffset: 0, direction: ADDirectionType.AD_ALONG_NORMAL, pDirectionOcc: null, pDirectionObject: null, isDirectionReversed: true, draftAngle: null, IsOutwardDraft: false, name: "Eccentric"); sketch = part.Sketches.AddSketch(null, part.planeXY(), "Centered"); sketch.BeginChange(); circle = sketch.Figures.AddCircle(0, 0, MMToCM(cam.EccentricBearingInnerDia / 2.0)); //dim = sketch.Dimensions.PlaceDiametricDimension(circle, "BearingInnerDia"); sketch.EndChange(); part.Features.AddExtrudedBoss(pSketch: sketch, depth: MMToCM(PinHeight), endCondition: ADPartFeatureEndCondition.AD_TO_DEPTH, toGeometryOcc: null, toGeometryObject: null, toGeometryOffset: 0, direction: ADDirectionType.AD_ALONG_NORMAL, pDirectionOcc: null, pDirectionObject: null, isDirectionReversed: false, draftAngle: null, IsOutwardDraft: false, name: "Pin"); // Create the bore for the motor shaft sketch = part.Sketches.AddSketch(null, part.planeXY(), "Motor shaft Bore "); sketch.BeginChange(); circle = sketch.Figures.AddCircle(0, 0, MMToCM(motor.shaftDia / 2.0)); //dim = sketch.Dimensions.PlaceDiametricDimension(circle, "DriveShaftDia"); sketch.EndChange(); part.Features.AddExtrudedCutout(pSketch: sketch, depth: 0, endCondition: ADPartFeatureEndCondition.AD_THROUGH_ALL, toGeometryOcc: null, toGeometryObject: null, toGeometryOffset: 0, direction: ADDirectionType.AD_ALONG_NORMAL, pDirectionOcc: null, pDirectionObject: null, isDirectionReversed: false, draftAngle: null, IsOutwardDraft: false, name: "Motor shaft Bore"); //object filename = @"c:\temp\ad"; //part.SaveAs(ref filename, "name"); }