//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private static RectangularPatternFeatureData newRectangularPatternFeatureData() { RectangularPatternFeatureData featureData = new RectangularPatternFeatureData(); featureData.xDirAxis = null; featureData.yDirAxis = null; featureData.naturalXDirection = true; featureData.naturalYDirection = true; featureData.xCount = null; featureData.yCount = null; featureData.xSpacing = null; featureData.ySpacing = null; featureData.xDirectionSpacingType = PatternSpacingTypeEnum.kDefault; featureData.yDirectionSpacingType = PatternSpacingTypeEnum.kDefault; featureData.xDirStartPoint3D = null; featureData.yDirStartPoint3D = null; return(featureData); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private static RectangularPatternFeature[] CopyRectangularPatternFeature(PartComponentDefinition partCompDef, RectangularPatternFeature AsmFeature, Matrix invTransfo, int elementIdx, ComponentOccurrence occurrence, out ReportData[] reports) { List <RectangularPatternFeature> newFeatures = new List <RectangularPatternFeature>(); ObjectCollection ParentFeatures = FeatureUtilities.CopyParentFeatures(partCompDef, AsmFeature.Parent.Document as Document, AsmFeature.ParentFeatures, invTransfo, occurrence, out reports); if (ParentFeatures.Count == 0) { return(null); } Sketch3D sketch3D = partCompDef.Sketches3D.Add(); List <RectangularPatternFeatureData> FeaturesDataList = new List <RectangularPatternFeatureData>(); //Only along X Axis if (AsmFeature.XDirectionEntity != null && AsmFeature.YDirectionEntity == null) { UnitVector xDirection = FeatureUtilities.GetDirection(AsmFeature.XDirectionEntity); xDirection.TransformBy(invTransfo); Point xDirStartPoint = null; WorkAxis xDirAxis = null; SketchPoint3D xDirStartPoint3D = null; try { xDirStartPoint = FeatureUtilities.GetPoint(AsmFeature.XDirectionStartPoint); xDirStartPoint.TransformBy(invTransfo); xDirAxis = partCompDef.WorkAxes.AddFixed(xDirStartPoint, xDirection, FeatureUtilities.ConstructionWorkAxis); xDirStartPoint3D = sketch3D.SketchPoints3D.Add(xDirStartPoint, false); } catch { xDirAxis = partCompDef.WorkAxes.AddFixed(partCompDef.WorkPoints[1].Point, xDirection, FeatureUtilities.ConstructionWorkAxis); } double count1 = (double)(AsmFeature.XCount.Value) - elementIdx + 1; //Check it's not the last pattern element if (count1 != 0 && elementIdx != (double)(AsmFeature.XCount.Value)) { RectangularPatternFeatureData featureData = newRectangularPatternFeatureData(); featureData.xCount = count1; featureData.xSpacing = AsmFeature.XSpacing.Value; featureData.naturalXDirection = AsmFeature.NaturalXDirection; featureData.xDirectionSpacingType = AsmFeature.XDirectionSpacingType; featureData.xDirAxis = xDirAxis; featureData.xDirStartPoint3D = xDirStartPoint3D; FeaturesDataList.Add(featureData); } double count2 = elementIdx; //Check it's not the first pattern element if (count2 != 0 && elementIdx != 1) { RectangularPatternFeatureData featureData = newRectangularPatternFeatureData(); featureData.xCount = count2; featureData.xSpacing = AsmFeature.XSpacing.Value; featureData.naturalXDirection = !AsmFeature.NaturalXDirection; featureData.xDirectionSpacingType = AsmFeature.XDirectionSpacingType; featureData.xDirAxis = xDirAxis; featureData.xDirStartPoint3D = xDirStartPoint3D; FeaturesDataList.Add(featureData); } } //Only along Y Axis if (AsmFeature.YDirectionEntity != null && AsmFeature.XDirectionEntity == null) { } //Only along both Axes if (AsmFeature.XDirectionEntity != null && AsmFeature.YDirectionEntity != null) { } foreach (RectangularPatternFeatureData featureData in FeaturesDataList) { RectangularPatternFeature newFeature = partCompDef.Features.RectangularPatternFeatures.Add(ParentFeatures, featureData.xDirAxis, featureData.naturalXDirection, featureData.xCount, featureData.xSpacing, featureData.xDirectionSpacingType, featureData.xDirStartPoint3D, featureData.yDirAxis, featureData.naturalYDirection, featureData.yCount, featureData.ySpacing, featureData.yDirectionSpacingType, featureData.yDirStartPoint3D, AsmFeature.ComputeType, AsmFeature.OrientationMethod); foreach (FeaturePatternElement element in newFeature.PatternElements) { if (newFeature.HealthStatus == HealthStatusEnum.kUpToDateHealth) { break; } if (element.Faces.Count == 0 && element.Index != 1) { element.Suppressed = true; } } if (newFeature != null) { newFeatures.Add(newFeature); } } return(newFeatures.ToArray()); }