本文整理汇总了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);
//.........这里部分代码省略.........