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(),下面是官方的解释:

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

相关推荐
西瓜本瓜@3 分钟前
在Android开发中实现静默拍视频
android·java·开发语言·学习·音视频
_.Switch8 分钟前
高效网络自动化:Python在网络基础中的应用
运维·开发语言·网络·python·数据分析·自动化
清灵xmf17 分钟前
JavaScript 中如何识别异步函数?
开发语言·javascript·async·异步函数
七月巫山晴33 分钟前
QChart中柱形图的简单使用并实现【Qt】
开发语言·数据结构·c++·qt·算法·排序算法
阿丁小哥36 分钟前
【Python各个击破】numpy
开发语言·python·numpy
琼火hu43 分钟前
R语言笔记(五):Apply函数
开发语言·笔记·r语言·apply
柴头物联网1 小时前
XQT_UI 组件|01|颜色
开发语言·qt·ui
浪漫主义狗1 小时前
JDK源码系列(二)—— ArrayList 和 LinkedList 深度源码解析
java·开发语言·windows·源码
繁依Fanyi1 小时前
ArrayList和linkedList的区别
java·开发语言·算法
achaoyang2 小时前
【Python学习计算机知识储备】
开发语言·python·学习