|
我把代码贴上来吧:
SldWorks.SldWorksClass sld = new SldWorksClass();
int nErrors=0;
int nWarnings=0;
ModelDoc2 docx = sld.OpenDoc6(@"D:zySW_testx.SLDPRT", 1, 0, "", ref nErrors, ref nWarnings);
ModelDoc2 docy = sld.OpenDoc6(@"D:zySW_testy.SLDPRT", 1, 0, "", ref nErrors, ref nWarnings);
AssemblyDoc assemblyDoc = (AssemblyDoc)sld.NewAssembly();
ModelDoc2 doc = (ModelDoc2)assemblyDoc;
Component2 x = assemblyDoc.AddComponent4(@"D:zySW_testx.SLDPRT", "", 0, 0, 0);
Component2 y = assemblyDoc.AddComponent4(@"D:zySW_testy.SLDPRT", "", 0, 0, 0);
doc.ClearSelection2(true);
SelectFaceByFeature(doc, x, "拉伸2", "19841013");
SelectFaceByFeature(doc, y, "绘制的折弯4", "17723919");
assemblyDoc.AddMate2(0, 0, false, 0, 0, 0, 0, 0, 0, 0, 0, out nErrors);
doc.ClearSelection2(true);
SelectEdgeByBody(doc, x, "切除-拉伸2", "edgeleft");
SelectEdgeByBody(doc, y, "绘制的折弯4", "edge1");
assemblyDoc.AddMate2(5, 0, false, 0.011, 0, 0, 0, 0, 0, 0, 0, out nErrors);
doc.ClearSelection2(true);
SelectEdgeByBody(doc, x, "切除-拉伸2", "edgetop");
SelectEdgeByBody(doc, y, "绘制的折弯4", "edge2");
assemblyDoc.AddMate2(5, 0, false, 0.011, 0, 0, 0, 0, 0, 0, 0, out nErrors);
doc.ClearSelection2(true);
doc.SaveAs(@"D:zySW_teste.easm");
sld.CloseAllDocuments(true);
sld.ExitApp();
选择面和边的代码如下:
void SelectFaceByFeature(ModelDoc2 assemblyDoc,Component2 part,string featurename,string facename)
{
Feature feature = (Feature)part.FeatureByName(featurename);
object faces = (object)feature.GetFaces();
for (int i =0; i < faces.Length; i++)
{
Entity faceEntity = (Entity)faces<i>;
if (assemblyDoc.GetEntityName(faceEntity) == facename)
{
faceEntity.Select2(true, 0);
return;
}
}
}
private void SelectEdgeByBody(ModelDoc2 assemblyDoc, Component2 part,string bodyName, string edgeName)
{
object partbodys = (object)part.GetBodies(0);
for (int j = 0; j < partbodys.Length; j++)
{
Body2 body = (Body2)partbodys[j];
if (body.Name == bodyName)
{
object edges = (object)body.GetEdges();
for (int i = 0; i < edges.Length; i++)
{
Entity edgeEntity = (Entity)edges<i>;
if (assemblyDoc.GetEntityName(edgeEntity) == edgeName)
{
edgeEntity.Select2(true, 0);
return;
}
}
}
}
} |
|