利用C#语言对SW进行二次开发,本文创建WPF程序,实现了对圆柱体的参数化设计
1、通过solidworks API帮助文档,可以知道SldWorks对象既代表了SOLIDWORKS
程序,对文档进行的打开,关闭和保存等操作都来自于此对象的属性和方法,因此该对象的SOLIDWORKS二次开的发所需要获取的第一个对象,SldWorks对象在命名空间SolidWorks.Interop.sldworks下,在使用该接口时需要引用此命名空间。此外由于需要引用SOLIDWORKS的枚举对象,故还需要引用SolidWorks.Interop.swconst。
2、如何将上述对应的DLL文件添加到程序项目中,以SW2018为例,我们需要首先手动安装SOLIDWORKS API SDK文件,该文件在安装包apisdk文件夹下,,直接双击安装即可,安装完成后,可在安装程序的文件夹SOLIDWORKS\api\redist下能找到SolidWorks.Interop.sldworks.dll和SolidWorks.Interop.swconst.dll,将其添加到引用中即可。
3、添加完成后,即可在头文件中引用
4、创建wpf界面
5、对于button1——打开SW添加事件click,button2——绘制三维图添加事件click,
返回主程序,编写打开和绘制的程序
using System;
using System.Windows;
using SolidWorks.Interop.sldworks;
namespace cylinder
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
SldWorks SWAPP = new SldWorks();
int error = 0;
int warning = 0;
string filepath1 = @"E:\摆线齿轮减速器\零件2.SLDPRT";
SWAPP.OpenDoc6(filepath1,1,1,"",error,warning);
SWAPP.Visible = true;
}
private void Button2_Click(object sender, RoutedEventArgs e)
{
string rs = Textbox1.Text;
string ls = Textbox2.Text;
double r = Convert.ToDouble(rs)/1000;
double l = Convert.ToDouble(ls)/1000;
ModelDoc2 swDoc = null;
SldWorks swApp = new SldWorks();
ModelDoc2 swModel = default(ModelDoc2);
swModel = (ModelDoc2)swApp.ActiveDoc;
swDoc = ((ModelDoc2)(swApp.ActiveDoc));
bool boolstatus = false;
boolstatus = swDoc.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, false, 0, null, 0);
swDoc.SketchManager.InsertSketch(true);
swDoc.ClearSelection2(true);
SketchSegment skSegment = null;
skSegment = ((SketchSegment)(swDoc.SketchManager.CreateCircle(0, 0, 0,r, 0, 0)));
swDoc.ClearSelection2(true);
swDoc.SketchManager.InsertSketch(true);
//
// Named View
swDoc.ShowNamedView2("*上下二等角轴测", 8);
swDoc.ViewZoomtofit2();
Feature myFeature = null;
myFeature = ((Feature)(swDoc.FeatureManager.FeatureExtrusion2(true, false, false, 0, 0, l, l, false, false, false, false, 0.017453292519943334, 0.017453292519943334, false, false, false, false, true, true, true, 0, 0, false)));
swDoc.ISelectionManager.EnableContourSelection = false;
}
public SldWorks swApp;
}
}