当前位置: 首页>>代码示例>>C#>>正文


C# Feature.GetSpecificFeature2方法代码示例

本文整理汇总了C#中Feature.GetSpecificFeature2方法的典型用法代码示例。如果您正苦于以下问题:C# Feature.GetSpecificFeature2方法的具体用法?C# Feature.GetSpecificFeature2怎么用?C# Feature.GetSpecificFeature2使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Feature的用法示例。


在下文中一共展示了Feature.GetSpecificFeature2方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ConvertMateToPython

        public static bool ConvertMateToPython( 
                                    ref Feature swMateFeature,
                                    ref string asciitext, 
                                    ref ISldWorks mSWApplication,
                                    ref Hashtable saved_parts,
                                    ref int num_link,
                                    ref MathTransform roottrasf,
                                    ref Component2 assemblyofmates
                                    )
        {
            if (swMateFeature == null)
                return false;

            Mate2 swMate = (Mate2)swMateFeature.GetSpecificFeature2();

            if (swMate == null)
                return false;

            object foo =null;
            bool[] suppressedflags;
            suppressedflags = (bool[])swMateFeature.IsSuppressed2((int)swInConfigurationOpts_e.swThisConfiguration, foo);
            if (suppressedflags[0] == true)
                return false;

            if (swMate.GetMateEntityCount() >= 2)
            {
                 // Get the mated parts
                MateEntity2 swEntityA = swMate.MateEntity(0);
                MateEntity2 swEntityB = swMate.MateEntity(1);
                Component2 swCompA = swEntityA.ReferenceComponent;
                Component2 swCompB = swEntityB.ReferenceComponent;
                double[] paramsA = (double[])swEntityA.EntityParams;
                double[] paramsB = (double[])swEntityB.EntityParams;
                 // this is needed because parts might reside in subassemblies, and mate params are expressed in parent subassembly
                MathTransform invroottrasf = (MathTransform)roottrasf.Inverse();
                MathTransform trA = roottrasf;
                MathTransform trB = roottrasf;

                if (assemblyofmates != null)
                {
                    MathTransform partrasfA = assemblyofmates.GetTotalTransform(true);
                    if (partrasfA != null)
                        trA = partrasfA.IMultiply(invroottrasf); // row-ordered transf. -> reverse mult.order!
                    MathTransform partrasfB = assemblyofmates.GetTotalTransform(true);
                    if (partrasfB != null)
                        trB = partrasfB.IMultiply(invroottrasf); // row-ordered transf. -> reverse mult.order!
                }

                 // Fetch the python names using hash map (python names added when scanning parts)
                ModelDocExtension swModelDocExt = default(ModelDocExtension);
                ModelDoc2 swModel = (ModelDoc2)mSWApplication.ActiveDoc;
                swModelDocExt = swModel.Extension;
                String name1 = (String)saved_parts[swModelDocExt.GetPersistReference3(swCompA)];
                String name2 = (String)saved_parts[swModelDocExt.GetPersistReference3(swCompB)];

                 // Only constraints between two parts or part & layout can be created
                if ( ((name1 != null) || (name2 != null)) && (name1 != name2) )
                {
                    CultureInfo bz = new CultureInfo("en-BZ");

                    if (name1 == null)
                        name1 = "body_0";
                    if (name2 == null)
                        name2 = "body_0";

                    // Add some comment in Python, to list the referenced SW items
                    asciitext += "\n# Mate constraint: " + swMateFeature.Name + " [" + swMateFeature.GetTypeName2() + "]" + " type:" + swMate.Type + " align:" + swMate.Alignment + " flip:" + swMate.Flipped + "\n";
                    for (int e = 0; e < swMate.GetMateEntityCount(); e++)
                    {
                        MateEntity2 swEntityN = swMate.MateEntity(e);
                        Component2 swCompN = swEntityN.ReferenceComponent;
                        String ce_nameN = (String)saved_parts[swModelDocExt.GetPersistReference3(swCompN)];
                        asciitext += "#   Entity " + e + ": C::E name: " + ce_nameN + " , SW name: " + swCompN.Name2 + " ,  SW ref.type:" + swEntityN.Reference.GetType() + " (" + swEntityN.ReferenceType2 + ")\n";
                    }
                    asciitext += "\n";

                    //
                    // For each type of SW mate, see which C::E mate constraint(s)
                    // must be created. Some SW mates correspond to more than one C::E constraints.
                    //

                    bool swapAB_1 = false;
                    bool do_CHmate_Xdistance  = false;
                    double do_distance_val  = 0.0;
                    bool do_CHmate_parallel   = false;
                    bool   do_parallel_flip     = false;
                    bool do_CHmate_orthogonal = false;
                    bool do_CHmate_spherical  = false;
                    bool do_CHmate_pointline  = false;

                    // to simplify things later...
                    // NOTE: swMate.MateEntity(0).Reference.GetType() seems equivalent to  swMate.MateEntity(0).ReferenceType2
                    // but in some cases the latter fails.
                    bool entity_0_as_FACE   = (swMate.MateEntity(0).Reference.GetType() == (int)swSelectType_e.swSelFACES);
                    bool entity_0_as_EDGE   = (swMate.MateEntity(0).Reference.GetType() == (int)swSelectType_e.swSelEDGES) ||
                                              (swMate.MateEntity(0).Reference.GetType() == (int)swSelectType_e.swSelSKETCHSEGS) ||
                                              (swMate.MateEntity(0).Reference.GetType() == (int)swSelectType_e.swSelDATUMAXES);
                    bool entity_0_as_VERTEX = (swMate.MateEntity(0).Reference.GetType() == (int)swSelectType_e.swSelVERTICES) ||
                                              (swMate.MateEntity(0).Reference.GetType() == (int)swSelectType_e.swSelSKETCHPOINTS) ||
                                              (swMate.MateEntity(0).Reference.GetType() == (int)swSelectType_e.swSelDATUMPOINTS);
//.........这里部分代码省略.........
开发者ID:projectchrono,项目名称:chrono-solidworks,代码行数:101,代码来源:ConvertMates.cs


注:本文中的Feature.GetSpecificFeature2方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。