Пример #1
0
        public void Main()
        {
            IModelDoc2 model = swApp.IActiveDoc2;

            if (model != null)
            {
                IFeature feat = model.ISelectionManager.GetSelectedObject6(1, -1) as IFeature;

                if (feat != null)
                {
                    IExtrudeFeatureData2 featData = feat.GetDefinition() as IExtrudeFeatureData2;

                    if (featData != null)
                    {
                        if (featData.AccessSelections(model, null))
                        {
                            object fromEntity;
                            int    fromEntType;
                            featData.GetFromEntity(out fromEntity, out fromEntType);

                            Debug.Print(string.Format("From Entity: {0}",
                                                      fromEntity != null ? string.Format("Yes [{0}]", (swSelectType_e)fromEntType) : "No"));

                            int    endCondRefType;
                            object endCondRef = featData.GetEndConditionReference(true, out endCondRefType);

                            Debug.Print(string.Format("End Condition (Direction 1): {0}",
                                                      endCondRef != null ? string.Format("Yes [{0}]", (swSelectType_e)endCondRef) : "No"));

                            endCondRef = featData.GetEndConditionReference(false, out endCondRefType);

                            Debug.Print(string.Format("End Condition (Direction 2): {0}",
                                                      endCondRef != null ? string.Format("Yes [{0}]", (swSelectType_e)endCondRef) : "No"));

                            object firstDirDirRef;
                            int    firstDirDirRefType;
                            object secondDirDirRef;
                            int    secondDirDirRefType;

                            featData.GetDirectionReference(out firstDirDirRef, out firstDirDirRefType, out secondDirDirRef, out secondDirDirRefType);

                            Debug.Print(string.Format("Direction (Direction 1): {0}",
                                                      firstDirDirRef != null ? string.Format("Yes [{0}]", (swSelectType_e)firstDirDirRefType) : "No"));

                            Debug.Print(string.Format("Direction (Direction 2): {0}",
                                                      secondDirDirRef != null ? string.Format("Yes [{0}]", (swSelectType_e)secondDirDirRefType) : "No"));

                            featData.ReleaseSelectionAccess();
                        }
                        else
                        {
                            throw new InvalidOperationException("Failed to access feature selection");
                        }
                    }
                    else
                    {
                        throw new InvalidCastException("Selected feature is not Boss-Extrude");
                    }
                }
                else
                {
                    throw new NullReferenceException("Select feature");
                }
            }
            else
            {
                throw new NullReferenceException("Open model");
            }
        }
Пример #2
0
        public void getFeaData()                     //获取Feature本身的数据
        {
            switch (feaData.type)
            {
            case 0:
                IExtrudeFeatureData2 extrudeData = (IExtrudeFeatureData2)ori.GetDefinition();

                feaData.EbothDirections = extrudeData.BothDirections;
                feaData.Edepth          = extrudeData.GetDepth(true) + extrudeData.GetDepth(false);
                Debug.Print("Depth: " + feaData.Edepth.ToString());
                feaData.EreverseOffset = extrudeData.GetReverseOffset(true);
                feaData.EwallThickness = extrudeData.GetWallThickness(true);
                switch (extrudeData.ThinWallType)
                {
                case 0:
                    feaData.EwallThickness = extrudeData.GetWallThickness(true);
                    //Debug.Print("Thickness: " + feaData.EwallThickness.ToString());
                    break;

                case 1:
                    feaData.EwallThickness = extrudeData.GetWallThickness(false);
                    //Debug.Print("Thickness: " + feaData.EwallThickness.ToString());
                    break;

                case 2:
                    feaData.EwallThickness = extrudeData.GetWallThickness(true);
                    //Debug.Print("Thickness: " + feaData.EwallThickness.ToString());
                    break;

                case 3:
                    feaData.EwallThickness = extrudeData.GetWallThickness(true) + extrudeData.GetWallThickness(false);
                    //Debug.Print("Thickness: " + feaData.EwallThickness.ToString());
                    break;
                }
                break;

            case 1:
                ILoftFeatureData loftData = (ILoftFeatureData)ori.GetDefinition();

                //object vec1 = loftData.StartDirectionVector;
                //Vector vec2 = (Vector)loftData.EndDirectionVector;
                //feaData.LwallThickness = loftData.GetWallThickness(true);
                switch (loftData.ThinWallType)
                {
                case 0:
                    feaData.LwallThickness = loftData.GetWallThickness(true);
                    break;

                case 1:
                    feaData.LwallThickness = loftData.GetWallThickness(false);
                    break;

                case 2:
                    feaData.LwallThickness = loftData.GetWallThickness(true);
                    break;

                case 3:
                    feaData.LwallThickness = loftData.GetWallThickness(true) + loftData.GetWallThickness(false);
                    break;
                }
                feaData.LstartTangentLength = loftData.StartTangentLength;
                feaData.LendTangentLength   = loftData.EndTangentLength;
                //Debug.Print(feaData.LwallThickness.ToString());

                break;

            case 2:
                IBoundaryBossFeatureData boundaryBossData = (BoundaryBossFeatureData)ori.GetDefinition();
                //feaData.BtangentLength = boundaryBossData.GetTangentLength(2, );
                switch (boundaryBossData.ThinFeatureType)
                {
                case 0:
                    feaData.BwallThickness = boundaryBossData.ThinFeatureThickness[true];
                    break;

                case 1:
                    feaData.BwallThickness = boundaryBossData.ThinFeatureThickness[true];
                    break;

                case 2:
                    feaData.BwallThickness = boundaryBossData.ThinFeatureThickness[true];
                    break;

                case 3:
                    feaData.BwallThickness = boundaryBossData.ThinFeatureThickness[true] + boundaryBossData.ThinFeatureThickness[false];
                    break;
                }
                //feaData.BwallThickness1 = boundaryBossData.ThinFeatureThickness[false];
                //feaData.BwallThickness2 = boundaryBossData.ThinFeatureThickness[true];

                break;

            case 3:
                IRevolveFeatureData2 revolveData = (IRevolveFeatureData2)ori.GetDefinition();
                feaData.Rangle = revolveData.GetRevolutionAngle(true);
                //feaData.RwallThickness = revolveData.GetWallThickness(true);
                switch (revolveData.ThinWallType)
                {
                case 0:
                    feaData.RwallThickness = revolveData.GetWallThickness(true);
                    break;

                case 1:
                    feaData.RwallThickness = revolveData.GetWallThickness(false);
                    break;

                case 2:
                    feaData.RwallThickness = revolveData.GetWallThickness(true);
                    break;

                case 3:
                    feaData.RwallThickness = revolveData.GetWallThickness(true) + revolveData.GetWallThickness(false);
                    break;
                }

                break;

            case 4:
                ISweepFeatureData sweepData = (ISweepFeatureData)ori.GetDefinition();
                //feaData.SwallThickness = sweepData.GetWallThickness(true);
                switch (sweepData.ThinWallType)
                {
                case 0:
                    feaData.SwallThickness = sweepData.GetWallThickness(true);
                    break;

                case 1:
                    feaData.SwallThickness = sweepData.GetWallThickness(false);
                    break;

                case 2:
                    feaData.SwallThickness = sweepData.GetWallThickness(true);
                    break;

                case 3:
                    feaData.SwallThickness = sweepData.GetWallThickness(true) + sweepData.GetWallThickness(false);
                    break;
                }

                break;
            }

            /*
             * feaData.EbothDirections = extrudeData.BothDirections;
             * feaData.Edepth = extrudeData.GetDepth(true);
             * feaData.EreverseOffset = extrudeData.GetReverseOffset(true);
             * feaData.EwallThickness = extrudeData.GetWallThickness(true);
             */
        }
 public IExtrudeFeatureData2Object(IExtrudeFeatureData2 IExtrudeFeatureData2instance)
 {
     IExtrudeFeatureData2Instance = IExtrudeFeatureData2instance;
 }