C# Solidworks二次开发:宏录制实战讲解(第二讲)

大家好,继续介绍我们的宏录制的例子讲解。

其实我们讲的是一个过程,大家只要理解这种方式就可以。

今天要介绍的第一例子为:

(1)如何创建一个轴线。

public void Main()

{

ModelDoc2 swDoc = null;

PartDoc swPart = null;

DrawingDoc swDrawing = null;

AssemblyDoc swAssembly = null;

bool boolstatus = false;

int longstatus = 0;

int longwarnings = 0;

swDoc = ((ModelDoc2)(swApp.ActiveDoc));

ModelView myModelView = null;

myModelView = ((ModelView)(swDoc.ActiveView));

myModelView.FrameState = ((int)(swWindowState_e.swWindowMaximized));

boolstatus = swDoc.Extension.SelectByRay(-0.012171036184511763, 0.035189282202352956, 0.0015284186583244264, -0.12907585697606233, 0.19912846068487891, -0.97143567944108677, 0.00015336652569445758, 2, false, 0, 0);

boolstatus = swDoc.InsertAxis2(true);

return;

}

这个例子也是比较简单,我们需要关注的API为InsertAxis2(true),下面是官方的解释:

然后下面是官方使用的例子:

This example shows how to create revolve features.

//----------------------------------------------------------------------------

// Preconditions:

// 1. Open a new part document.

// 2. Rename the namespace to match your C# project.

//

// Postconditions: Two revolve features and one cut-revolve feature are created.

//----------------------------------------------------------------------------

using SolidWorks.Interop.sldworks;

using SolidWorks.Interop.swconst;

using System;

namespace FeatureRevolves_CSharp.csproj

{

partial class SolidWorksMacro

{

ModelDoc2 swModel;

ModelDocExtension swModelDocExt;

FeatureManager swFeatMgr;

SelectionMgr swSelMgr;

bool boolstatus;

public void Main()

{

swModel = (ModelDoc2)swApp.ActiveDoc ;

swModelDocExt = swModel.Extension ;

swSelMgr = (SelectionMgr)swModel.SelectionManager ;

// Create an axis

boolstatus = swModelDocExt.SelectByID2 ("Right Plane", "PLANE", 0, 0, 0, true, 0, null, (int)swSelectOption_e.swSelectOptionDefault);

boolstatus = swModelDocExt.SelectByID2 ("Top Plane", "PLANE", 0, 0, 0, true, 0, null, (int)swSelectOption_e.swSelectOptionDefault);

swModel.InsertAxis2 (true);

// Create a rectangle

boolstatus = swModelDocExt.SelectByID2 ("Top Plane", "PLANE", -0.08954836342753, 0.0004336873289503, 0.006720765739942, false, 0, null, (int)swSelectOption_e.swSelectOptionDefault);

swModel.InsertSketch2 (true);

swModel.ClearSelection2 (true);

swModel.SketchRectangle (-0.05668466821757, -0.02198379306525, 0, -0.01330857427717, 0.03972855876814, 0, true);

// Create the first revolve feature

swModel.InsertSketch2 (true);

swModel.ShowNamedView2 ("*Trimetric", 8);

boolstatus = swModelDocExt.SelectByID2 ("Sketch1", "SKETCH", 0, 0, 0, false, 0, null, (int)swSelectOption_e.swSelectOptionDefault);

boolstatus = swModelDocExt.SelectByID2 ("Axis1", "AXIS", 0, 0, 0, true, 16, null, (int)swSelectOption_e.swSelectOptionDefault);

swFeatMgr = swModel.FeatureManager ;

swFeatMgr.FeatureRevolve2 (true, true, false, false, false, false, 0, 0, 6.28318530718, 0, false,

false, 0.01, 0.01, 0, 0, 0, true, true, true);

// Create a cut-revolve feature using a face on the revolve feature

swSelMgr.EnableContourSelection = false;

boolstatus = swModelDocExt.SelectByID2 ("", "FACE", -0.03095803920934, 0.01509536510872, 0.02198379306526, false, 0, null, (int)swSelectOption_e.swSelectOptionDefault);

swModel.InsertSketch2 (true);

swModel.ClearSelection2 (true);

swModel.SketchRectangle (-0.04194874421597, 0.01774859621099, 0, -0.01883036471929, -0.01265654504095, 0, true);

swModel.InsertSketch2 (true);

boolstatus = swModelDocExt.SelectByID2 ("Sketch2", "SKETCH", 0, 0, 0, false, 0, null, (int)swSelectOption_e.swSelectOptionDefault);

boolstatus = swModelDocExt.SelectByID2 ("Line4@Sketch2", "EXTSKETCHSEGMENT", -0.01883036471929, 0.003802500010693, 0, true, 4, null, (int)swSelectOption_e.swSelectOptionDefault);

swFeatMgr.FeatureRevolveCut (6.26573201466, false, 0, 0, 0, true, true);

// Create the second revolve feature using a face on the first revolve feature

swSelMgr.EnableContourSelection = false;

boolstatus = swModelDocExt.SelectByID2 ("", "FACE", -0.02333512246603, 0.03472018719853, 0.0219837930652, false, 0, null, (int)swSelectOption_e.swSelectOptionDefault);

swModel.InsertSketch2 (true);

swModel.ClearSelection2 (true);

swModel.CreateCircle2 (-0.02232361399104, 0.03354683337932, 0, -0.01445073476016, 0.02795861773112, 0);

swModel.InsertSketch2 (true);

boolstatus = swModelDocExt.SelectByID2 ("Sketch3", "SKETCH", 0, 0, 0, false, 0, null, (int)swSelectOption_e.swSelectOptionDefault);

boolstatus = swModelDocExt.SelectByRay (-1.81956067901865E-02, 1.80455411334037E-02, 2.17820530671702E-02, -0.400036026779312, -0.515038074910024, -0.758094294050284, 9.91972972972973E-04, 1, False, 4, 0);

swFeatMgr.FeatureRevolve2 (true, true, false, false, false, false, 0, 0, 6.28318530718, 0, false,

false, 0.01, 0.01, 0, 0, 0, true, true, true);

swSelMgr.EnableContourSelection = false;

}

public SldWorks swApp;

}

}

(2)第二个例子为显示选中组件。

public void Main()

{

ModelDoc2 swDoc = null;

PartDoc swPart = null;

DrawingDoc swDrawing = null;

AssemblyDoc swAssembly = null;

bool boolstatus = false;

int longstatus = 0;

int longwarnings = 0;

swDoc = ((ModelDoc2)(swApp.ActiveDoc));

boolstatus = swDoc.Extension.SelectByID2("gas box assembly.stp-1@52170019 GBX15WYS01 C.1 2023-08-13/box assembly.stp-1@gas " +

"box assembly.stp/door assembly.stp-1@box assembly.stp/R0502-0136_--6@door assemb" +

"ly.stp", "COMPONENT", 0, 0, 0, false, 0, null, 0);

swDoc.ShowComponent2();

return;

}

这个例子中需要关注的API是ShowComponent2(),下面是官方的解释:

今天要介绍的就是这么多,我们下篇文章再见。

相关推荐
csdn_aspnet1 分钟前
如何用 C# 和 Gemma 3 在本地构建一个真正能完成工作的 AI 代理的
人工智能·ai·c#·gemma
Cg1362691597418 分钟前
JS-对象-Dom案例
开发语言·前端·javascript
故事和你9119 分钟前
sdut-程序设计基础Ⅰ-实验五一维数组(8-13)
开发语言·数据结构·c++·算法·蓝桥杯·图论·类和对象
Jin、yz1 小时前
JAVA 八股
java·开发语言
我是唐青枫1 小时前
C#.NET Span 深入解析:零拷贝内存切片与高性能实战
开发语言·c#·.net
lxh01131 小时前
数据流的中位数
开发语言·前端·javascript
盒马盒马1 小时前
Rust:迭代器
开发语言·后端·rust
Full Stack Developme2 小时前
Java 常用通信协议及对应的框架
java·开发语言
飞Link4 小时前
告别盲目找Bug:深度解析 TSTD 异常检测中的预测模型(Python 实战版)
开发语言·python·算法·bug
1.14(java)4 小时前
Spring-boot快速上手
java·开发语言·javaee