Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.
2019mmp003
275 Views, 2 Replies

Exception while using circular pattern feature

// Hi all,

// I am having an exception error while running the line indicated by purple color,

//exception image is also provided at bottom

// can I get the solution why I am getting this.

 

ObjectCollection bodyCollection;
bodyCollection = inventorApplication.TransientObjects.CreateObjectCollection();

bodyCollection.Add("Extrusion2");
bodyCollection.Add("Extrusion3");
object oangle = (360 *Math.PI)/180;

CircularPatternFeatureDefinition pattern1;
pattern1 = oPartCompDef.Features.CircularPatternFeatures.
CreateDefinition(bodyCollection,oPartCompDef.WorkAxes[3],true,
noOfHolesRadially,oangle);
CircularPatternFeature pa = oPartCompDef.Features.
CircularPatternFeatures.AddByDefinition(pattern1);

 

2019mmp003_1-1604930167848.png

 

 

_dscholtes_
in reply to: 2019mmp003

I noticed 'noOfHolesRadially' is not declared or set.

2019mmp003
in reply to: _dscholtes_


private void button1_Click(object sender, EventArgs e)
{
Inventor.Application inventorApplication;
inventorApplication = (Inventor.Application)
Marshal.GetActiveObject("Inventor.Application");
PartDocument partDoc;
partDoc = (PartDocument)inventorApplication.Documents.Add
(DocumentTypeEnum.kPartDocumentObject,
inventorApplication.FileManager.GetTemplateFile
(DocumentTypeEnum.kPartDocumentObject));


PartComponentDefinition oPartCompDef;
oPartCompDef = partDoc.ComponentDefinition;

PlanarSketch oSketch;
oSketch = oPartCompDef.Sketches.Add(oPartCompDef.WorkPlanes[3]);

TransientGeometry oTransGeom;
oTransGeom = inventorApplication.TransientGeometry;


SketchCircle outerCircle,innerCircle;

outerCircle = oSketch.SketchCircles.AddByCenterRadius(oTransGeom.CreatePoint2d(0, 0),
Convert.ToDouble(outerdiameter.Text)/2);
innerCircle = oSketch.SketchCircles.AddByCenterRadius(oTransGeom.CreatePoint2d(0, 0),
(Convert.ToDouble(outerdiameter.Text) / 2)-
Convert.ToDouble(Thickness.Text));
Profile oProfile;
oProfile = oSketch.Profiles.AddForSolid();

ExtrudeDefinition oExtrudeDef;
oExtrudeDef = oPartCompDef.Features.ExtrudeFeatures.
CreateExtrudeDefinition(oProfile,
PartFeatureOperationEnum.kJoinOperation);
oExtrudeDef.SetDistanceExtent(Convert.ToDouble(cageheight.Text)
, PartFeatureExtentDirectionEnum.kPositiveExtentDirection);
ExtrudeFeature oExtrude;
oExtrude = oPartCompDef.Features.ExtrudeFeatures.Add(oExtrudeDef);
double outerDia = Convert.ToDouble(outerdiameter.Text);
double outerHoleDia = Convert.ToDouble(outerholediameter.Text);
double innerHoleDia = Convert.ToDouble(innerholediameter.Text);
double innerDia = Convert.ToDouble(outerdiameter.Text)-2*
(Convert.ToDouble(Thickness.Text));
double biggerDia = findBiggerHole(outerHoleDia, innerHoleDia);
double crossSectionAreaOfCage = (22 / 28) * innerDia * innerDia;
double height = Convert.ToDouble(cageheight.Text);
int noOfHolesAlongCageHeight = (int)((height - biggerDia) / (biggerDia * 2) + 0.5);

int totalNoOfHoles = (int)((innerDia * innerDia) / (biggerDia) * biggerDia);
int noOfHolesRadially = totalNoOfHoles / noOfHolesAlongCageHeight;
double angle = 360 / noOfHolesRadially;

WorkPlane outerHolePlane;
outerHolePlane = oPartCompDef.WorkPlanes.AddByPlaneAndOffset(oPartCompDef.
WorkPlanes[1], Convert.ToDouble(outerdiameter.Text)/2);
WorkPlane innerHolePlane;
innerHolePlane = oPartCompDef.WorkPlanes.AddByPlaneAndOffset(oPartCompDef.
WorkPlanes[1], innerDia/2);

oSketch = oPartCompDef.Sketches.Add(outerHolePlane);


List<SketchCircle> holes = new List<SketchCircle>(new SketchCircle[noOfHolesAlongCageHeight]);
double first = biggerDia;
for(int i=0;i<noOfHolesAlongCageHeight;i++)
{
holes[i] = oSketch.SketchCircles.AddByCenterRadius(oTransGeom.CreatePoint2d(0,first),
outerHoleDia / 2);
first = first + 2*biggerDia;
}

Profile newProfile;
newProfile = oSketch.Profiles.AddForSolid();

ExtrudeDefinition newExtrudeDef;
newExtrudeDef = oPartCompDef.Features.ExtrudeFeatures.
CreateExtrudeDefinition(newProfile,
PartFeatureOperationEnum.kCutOperation);
newExtrudeDef.SetDistanceExtent(Convert.ToDouble(depth.Text),
PartFeatureExtentDirectionEnum.kNegativeExtentDirection);

ExtrudeFeature newExtrude;
newExtrude = oPartCompDef.Features.ExtrudeFeatures.Add(newExtrudeDef);


oSketch = oPartCompDef.Sketches.Add(innerHolePlane);


List<SketchCircle> innerHoles = new List<SketchCircle>(new SketchCircle[noOfHolesAlongCageHeight]);
double second = biggerDia;
for (int i = 0; i < noOfHolesAlongCageHeight; i++)
{
innerHoles[i] = oSketch.SketchCircles.AddByCenterRadius(oTransGeom.CreatePoint2d(0,second),
innerHoleDia / 2);
second = second + 2 * biggerDia;
}

Profile newsProfile;
newsProfile = oSketch.Profiles.AddForSolid();

ExtrudeDefinition newsExtrudeDef;
newsExtrudeDef = oPartCompDef.Features.ExtrudeFeatures.
CreateExtrudeDefinition(newsProfile,
PartFeatureOperationEnum.kCutOperation);

newsExtrudeDef.SetDistanceExtent(Convert.ToDouble(depth.Text),
PartFeatureExtentDirectionEnum.kSymmetricExtentDirection);

ExtrudeFeature newsExtrude;
newsExtrude = oPartCompDef.Features.ExtrudeFeatures.Add(newsExtrudeDef);

 

ObjectCollection bodyCollection;
bodyCollection = inventorApplication.TransientObjects.CreateObjectCollection();

//foreach (ExtrudeFeature item in oPartCompDef.Features.ExtrudeFeatures)
//{
// if (item.Name == "Extrusion1")
// continue;
// else
// bodyCollection.Add(item);
//}
bodyCollection.Add("Extrusion2");
bodyCollection.Add("Extrusion3");

object oangle = (360 *Math.PI)/180;

CircularPatternFeatureDefinition pattern1;
pattern1 = oPartCompDef.Features.CircularPatternFeatures.CreateDefinition(bodyCollection,oPartCompDef.WorkAxes[3],true,
noOfHolesRadially,oangle,true);
CircularPatternFeature pa = oPartCompDef.Features.CircularPatternFeatures.AddByDefinition(pattern1);

}