SolidWorks二次开发-修改对象的图层

SolidWorks二次开发-修改对象的图层

	好久没有写博文了,因为不知道要写些什么了。基础的操作都写的差不多了,正好前一段时间有粉丝咨询了一个问题,是关于如何修改RevisionTable的图层。目标是想把这个表格放到一个红色的图层里面,这样比较醒目。


今天我们把这个当作客户的需求来进行分析,当一个例子来剖析一下SolidWorks二次开发的一些步骤,遇到坑之后应该怎么应对。

  • 这个Revision Table是已经存在的表?还是代码插入的。 这就需要考虑到表格对象的获取问题。
  • 图层是已经存在的,还是需要重新建立的。

接下来,就是进行研究测试阶段,看看怎么样快速找到达到效果的办法。
1.录制宏,把手动修改的图层的动作做一次,看Solidworks的宏录制器是否能够记录到。
如下图,操作时只需要先选中表格,在左侧把图层改掉。这样表格就变成了红色。


停止录制,发现代码只有这么几句,没有发现有效的信息。

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("DetailItem188@Sheet1", "REVISIONTABLE", 3.55132394288651E-02, 0.2577670483868, 0, False, 0, Nothing, 0)
End Sub

上面这里录制的是已经存在表格的情况,我考虑没有这个表的情况下插入试试,经过测试,发现如果我们把Solidworks的工程图当前 图层改为Red,此时再插入表格时,就会自动在这个图层了。
但是我们把录制的插入表格的宏再次运行时,表格居然还是黑色的。没有被 放到Red图层里。


这样子的话,说明这个插入的api是有问题的,可能是bug. 那就只能另想办法了
2.查Api
通过个地方可以看到,有不少接口是有Layer这个属性的,但是没有任务Table相关的对象。

我们再查一下与revision table相关的信息,发现了RevisionTableAnnotation 说明它可能和Annotation有关。

然后我们看到一个关键信息。

这样就大概理清楚了,直接先在VBA里面进行测试执行。

RevisionTableAnnotation->TableAnnotation->(Annotation)GetAnnotation->Layer
...

Set myRevisionTable = currentSheet.InsertRevisionTable2(True, 0#, 0#, swBOMConfigurationAnchor_TopLeft, "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\English\standard revision block.sldrevtbt", swRevisionTable_CircleSymbol, True)

Dim ann As TableAnnotation

Set ann = myRevisionTable

Dim ann2 As Annotation

Set ann2 = ann.GetAnnotation

ann2.Layer = "Layer1"

测试没有问题,再转换到其它语言中。
增加到我们的法宝上:

   //这里需要自己打开一个工程图。 并存在名称为Red的图层 (代码新建在之前的章节里有写)

            var swApp = PStandAlone.GetSolidWorks();
            var swModelDoc = (ModelDoc2)swApp.ActiveDoc;

            DrawingDoc drawingDoc = (DrawingDoc)swModelDoc;
            Sheet drwSheet = (Sheet)drawingDoc.GetCurrentSheet();

            var myRevisionTable = drwSheet.InsertRevisionTable2(true, 0, 0, (int)swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopLeft, @"C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\English\standard revision block.sldrevtbt", (int)swRevisionTableSymbolShape_e.swRevisionTable_CircleSymbol, true);

            var tableAnn = (TableAnnotation)myRevisionTable;

            var Ann = tableAnn.GetAnnotation();

            Ann.Layer = "Red";

看看结果 :
虽然 位置不太合理,但效果是对的。

这个案例就这么多,里面有些很具体的思路逻辑需要大家自己感悟。经验性的东西没法一次性讲清楚,就记的住。
正常我能记住的项目周期基本上不会超过半个月,过了半个月就和新项目区别不大了
所以只能学会方法,才能更快的工作。

关注我,下一篇更精彩。

posted @
2023-03-24 18:00 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源

C# SolidWorks 二次开发 API—导入dxf/dwg到图纸或者零件草图

C# SolidWorks 二次开发 API—导入dxf/dwg到图纸或者零件草图

有些情况下我们需要把以前的2D图纸借用到3D中,以前先画2D的时候就是把2D图画好之后 ,选中一些元素,直接Ctrl+C 然后在Solidworks中Ctrl+V就可以了。好像尺寸是没有的。 今天我们来看下如何找api,以及实现这个功能。路子其实都是相通的,会找一个,后面的都会了。
关键字? 这里很明显就是Dxf 或者dwg
来吧,开始搜索。

api帮助跳出来的第一个就是dxf/dwg files
下面有几个小主题,我们我们看下,和我们的目标比较近的就是import或者load .


而且两个方法中都有实例给我们参考:
如果看不懂,就可以复制百度翻译一把: 这样就可以继续研究了:


接下来的步骤就差不多了,挑一个自己喜欢的语言版本的实例,去测试效果。
如下面这个,就是其中一个例子:

下面是api中的源版

SOLIDWORKS API Help
Insert and Position DXF/DWG File in Drawing Example (C#)     
This example shows how to insert and position a DXF/DWG file in a drawing. 

//---------------------------------------------------------------------------
// Preconditions:
// 1. Open a drawing.
// 2. Replace DXF_file_path with the pathname of an existing DXF/DWG file.
// 3. Open the Immediate window.
//
// Postconditions:
// 1. Inserts the DXF/DWG file as per the specified import data.
// 2. Inspect the Immediate window.
//---------------------------------------------------------------------------
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
namespace InsertDXFDrawing_CSharp.csproj
{
    partial class SolidWorksMacro
    {

        public void Main()
        {
            const string sDwgFileName = "DXF_file_path";

            ModelDoc2 swModel = default(ModelDoc2);
            ModelView swModelView = default(ModelView);
            DrawingDoc swDraw = default(DrawingDoc);
            FeatureManager swFeatMgr = default(FeatureManager);
            Feature swFeat = default(Feature);
            Sketch swSketch = default(Sketch);
            View swView = default(View);
            double[] vPos = null;
            bool bRet = false;
            ImportDxfDwgData importData = default(ImportDxfDwgData);

            swModel = (ModelDoc2)swApp.ActiveDoc;
            swModelView = (ModelView)swModel.ActiveView;

            bRet = swModel.Extension.SelectByID2("Sheet1", "SHEET", 0.0, 0.0, 0, false, 0, null, 0);

            swDraw = (DrawingDoc)swModel;
            swFeatMgr = swModel.FeatureManager;
            importData = (ImportDxfDwgData)swApp.GetImportFileData(sDwgFileName);

            // Unit
            importData.set_LengthUnit("", (int)swLengthUnit_e.swINCHES);

            // Position
            bRet = importData.SetPosition("", (int)swDwgImportEntitiesPositioning_e.swDwgEntitiesCentered, 0, 0);

            // Sheet scale
            bRet = importData.SetSheetScale("", 1.0, 2.0);

            // Paper size
            bRet = importData.SetPaperSize("", (int)swDwgPaperSizes_e.swDwgPaperAsize, 0.0, 0.0);

            //Import method
            importData.set_ImportMethod("", (int)swImportDxfDwg_ImportMethod_e.swImportDxfDwg_ImportToExistingDrawing);

            // Import file with importData
            swFeat = swFeatMgr.InsertDwgOrDxfFile2(sDwgFileName, importData);
            swSketch = (Sketch)swFeat.GetSpecificFeature2();

            swView = (View)swDraw.GetFirstView();

            while ((swView != null))
            {
                if (object.ReferenceEquals(swSketch, swView.GetSketch()))
                {
                    break; 
                }
                swView = (View)swView.GetNextView();
            }

            vPos = (double[])swView.Position;

            Debug.Print("File = " + swModel.GetPathName());
            Debug.Print(" Sketch = " + swFeat.Name);
            Debug.Print(" View = " + swView.Name);
            Debug.Print(" Old Pos = (" + vPos[0] * 1000.0 + ", " + vPos[1] * 1000.0 + ") mm");

            // Move to right
            vPos[0] = vPos[0] + 0.01;
            swView.Position = vPos;

            vPos = (double[])swView.Position;
            Debug.Print(" New Pos = (" + vPos[0] * 1000.0 + ", " + vPos[1] * 1000.0 + ") mm");

            // Redraw
            double[] rect = null;
            rect = null;
            swModelView.GraphicsRedraw(rect);

        }

        public SldWorks swApp;

    }
} 

这个我们用到我们的实例中,需要做一些修改。

首选把 swApp 引用改为实体,如我们最近系列中一直使用的
SldWorks swApp = PStandAlone.GetSolidWorks();
然后就是基本照抄模式。

下面我的代码是另一个例子的C#版本。

 /// <summary>
        /// 导入dxf到 sketch
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnImpotDxfToSketch_Click(object sender, EventArgs e)
        {
            SldWorks swApp = PStandAlone.GetSolidWorks();

            //确保文件存在
            string filename = @"C:\Users\Public\Documents\SOLIDWORKS\SOLIDWORKS 2018\samples\tutorial\importexport\rainbow.DXF";

            ImportDxfDwgData importData = (ImportDxfDwgData)swApp.GetImportFileData(filename);

            importData.ImportMethod[""] = (int)swImportDxfDwg_ImportMethod_e.swImportDxfDwg_ImportToPartSketch;

            int longerrors = 0;

            var newDoc = swApp.LoadFile4(filename, "", importData, ref longerrors);

            //Gets
            Debug.Print("Part Sketch Gets:");
            Debug.Print(" Add constraints: " + importData.AddSketchConstraints[""]);
            Debug.Print(" Merge points: " + importData.GetMergePoints(""));
            Debug.Print(" Merge distance: " + (importData.GetMergeDistance("") * 1000));
            Debug.Print(" Import dimensions: " + importData.ImportDimensions[""]);
            Debug.Print(" Import hatch: " + importData.ImportHatch[""]);
            //Sets
            Debug.Print("Part Sketch Sets:");
            importData.AddSketchConstraints[""] = true;
            Debug.Print(" Add constraints: " + importData.AddSketchConstraints[""]);
            var retVal = importData.SetMergePoints("", true, 0.000002);
            Debug.Print(" Merge points: " + retVal);
            Debug.Print(" Merge distance: " + (importData.GetMergeDistance("") * 1000));
            importData.ImportDimensions[""] = true;
            Debug.Print(" Import dimensions: " + importData.ImportDimensions[""]);
            importData.ImportHatch[""] = false;
            Debug.Print(" Import hatch: " + importData.ImportHatch[""]);
        }

执行完之后 。solidworks中出现了传说中的彩虹!哈哈。。。


立即窗口中显示 了一些信息,后面有空继续研究!
代码已经上传.可在此下载源码:https://gitee.com/painezeng/CSharpAndSolidWorks

posted @
2023-03-21 23:08 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源

C# SolidWorks 二次开发 API —创建异型孔特征

C# SolidWorks 二次开发 API —创建异型孔特征

之前有网友咨询过如何创建异型孔特征,今天我们来看下如何实现:


异孔特征中参数比较多,想要用的好还是要看API的帮助文档:

下面是简单的一个代码:

        /// <summary>
        /// 插入异形孔特征
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnInsertHole_Click(object sender, EventArgs e)
        {
            SldWorks swApp = PStandAlone.GetSolidWorks();

            AddHoleForThisPoint("holePoints", 10, "异型孔测试");
        }

        /// <summary>
        /// 插入简单孔特征
        /// </summary>
        /// <param name="sketchName">草图名称</param>
        /// <param name="DiaSize">孔径</param>
        /// <param name="holeName">名称</param>
        public void AddHoleForThisPoint(string sketchName, double DiaSize, string holeName)
        {
            SldWorks SwApp;

            Feature swFeature;

            string fileName;
            long errors;
            long warnings;
            bool status;
            int SlotType;
            int HoleType;
            int StandardIndex;
            int FastenerTypeIndex;
            string SSize;
            short EndType;
            double ConvFactorLength;
            double ConvFactorAngle;
            double Diameter;
            double Depth;
            double Length;
            double ScrewFit;
            double DrillAngle;
            double NearCsinkDiameter;
            double NearCsinkAngle;
            double FarCsinkDiameter;
            double FarCsinkAngle;
            double Offset;
            string ThreadClass;
            double CounterBoreDiameter;
            double CounterBoreDepth;
            double HeadClearance;
            double BotCsinkDiameter;
            double BotCsinkAngle;
            WizardHoleFeatureData2 swWizardHoleFeatData;

            SldWorks swApp = PStandAlone.GetSolidWorks();

            ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;

            var swFeatureMgr = swModel.FeatureManager;

            var swModelDocExt = swModel.Extension;

            status = swModel.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, false, 0, null, 0);

            HoleType = (int)swWzdGeneralHoleTypes_e.swWzdLegacy;
            StandardIndex = -1;
            FastenerTypeIndex = -1;
            SSize = "";
            EndType = (int)swEndConditions_e.swEndCondThroughAll;
            ConvFactorAngle = -1;

            Diameter = DiaSize / 1000;

            Depth = -1;
            Length = -1;

            CounterBoreDiameter = 0;    // Value1
            CounterBoreDepth = 0;   // Value2
            HeadClearance = -1;                              // Value3
            ScrewFit = -1;                                   // Value4
            DrillAngle = -1;                                 // Value5
            NearCsinkDiameter = -1;                          // Value6
            NearCsinkAngle = -1;                             // Value7
            BotCsinkDiameter = -1;                           // Value8
            BotCsinkAngle = -1;                              // Value9
            FarCsinkDiameter = -1;                           // Value10
            FarCsinkAngle = -1;                              // Value11
            Offset = -1;                                     // Value12
            ThreadClass = "";

            swFeature = swFeatureMgr.HoleWizard5(HoleType, StandardIndex, FastenerTypeIndex, SSize, EndType, Diameter, Depth, Length, CounterBoreDiameter, CounterBoreDepth, HeadClearance, ScrewFit, DrillAngle, NearCsinkDiameter, NearCsinkAngle, BotCsinkDiameter, BotCsinkAngle, FarCsinkDiameter, FarCsinkAngle, Offset, ThreadClass, false, false, false, false, false, false);

            Feature holeFeature = (Feature)swFeature.GetFirstSubFeature();

            Feature sizeFeature = (Feature)holeFeature.GetNextSubFeature();

            holeFeature.Select2(false, 0);
            swModel.EditSketch();

            swModel.ClearSelection2(true);
            status = swModel.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, false, 0, null, 0);

            status = swModel.Extension.SelectByID2("Point1@" + sketchName, "EXTSKETCHPOINT", 0, 0, 0, true, 0, null, 0);

            swModel.SketchAddConstraints("sgCOINCIDENT");
            swModel.ClearSelection2(true);

            swModel.ClearSelection2(true);
            swModel.SketchManager.InsertSketch(true);

            holeFeature.Name = holeName + "-点位";
            sizeFeature.Name = holeName + "-尺寸";

            swFeature.Name = holeName;

            status = swModel.Extension.SelectByID2(holeName, "BODYFEATURE", 0, 0, 0, false, 4, null, 0);
            status = swModel.Extension.SelectByID2(sketchName, "SKETCH", 0, 0, 0, true, 64, null, 0);

            swFeature = swModel.FeatureManager.FeatureSketchDrivenPattern(true, false)
            ;

            swFeature.Name = "阵列-" + holeName;
        }
   

运行完之后 效果如下图,我打的是简单直孔,如果要打螺纹孔这些需要细看api参数。

可在此下载源码:https://gitee.com/painezeng/CSharpAndSolidWorks

posted @
2023-03-15 12:20 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源

C# SolidWorks 二次开发 API — 2018版 中文翻译-完整版共享

C# SolidWorks 二次开发 API — 2018版 中文翻译-完整版共享

这是2018的api帮助文档看了一下翻译版,我把之前翻译的文件免费共享下,希望能对大家有所帮助。

如果大家想查找快速了解某个功能,可以直接在Excel表中查找全部。

之前有两篇共享了官方示例与Modeldoc2的一些内容,大家可以去看。

标题 中文描述
IAdvancedHoleFeatureData Interface Methods 有关此类型的所有成员的列表,请参阅iadvancedholefeaturedata members。
AccessSelections Method (IAdvancedHoleFeatureData) 获取对用于定义高级孔特征的选择的访问权限。
GetFarSideElements Method (IAdvancedHoleFeatureData) 获取此高级孔中的远端孔元素。
GetNearSideElements Method (IAdvancedHoleFeatureData) 获取此高级孔中的近边孔元素。
ReleaseSelectionAccess Method (IAdvancedHoleFeatureData) 释放对用于定义孔向导特征的选择的访问权限。
SetFarSideElements Method (IAdvancedHoleFeatureData) 设置此高级孔中的远侧孔元素。
SetNearSideElements Method (IAdvancedHoleFeatureData) 设置此高级孔中的近边孔元素。
IAdvancedSelectionCriteria Interface Methods 有关此类型的所有成员的列表,请参阅IAdvancedSelectionCriteria成员。
AddItem Method (IAdvancedSelectionCriteria) 将条件添加到高级组件选择列表中。
DeleteItem Method (IAdvancedSelectionCriteria) 从高级组件选择列表中删除条件。
GetItem Method (IAdvancedSelectionCriteria) 获取高级组件选择列表中的指定条件。
GetItemCount Method (IAdvancedSelectionCriteria) 获取高级组件选择列表中的条件数。
LoadCriteria Method (IAdvancedSelectionCriteria) 加载指定的查询文件(.sqy)并使其成为当前的高级组件选择列表。
SaveCriteria Method (IAdvancedSelectionCriteria) 将当前高级组件选择列表保存到指定文件。
Select Method (IAdvancedSelectionCriteria) 在“高级组件选择”列表中选择组件。
IAnimation Interface Methods 有关此类型的所有成员的列表,请参见iAnimation Members。
IAnnotationView Interface Methods 有关此类型的所有成员的列表,请参见IAnnotationView成员。
Activate Method (IAnnotationView) 激活此批注视图。
ActivateAndReorient Method (IAnnotationView) 激活并重新定向此批注视图。
GetAnnotations2 Method (IAnnotationView) 获取此批注视图中的批注。
GetViewRotation Method (IAnnotationView) 获取批注视图相对于模型的X-Y平面的旋转矩阵。
Hide Method (IAnnotationView) 隐藏未激活的批注视图中的批注。
IGetViewRotation Method (IAnnotationView) 获取批注视图相对于模型的X-Y平面的旋转矩阵。
IsShown Method (IAnnotationView) 获取是否显示此批注视图中的批注。
MoveAnnotations Method (IAnnotationView) 将指定的批注移动到此批注视图。
Orient Method (IAnnotationView) 确定此批注视图的方向。
Show Method (IAnnotationView) 显示未激活的批注视图中的批注。
IAnnotation Interface Methods 有关此类型的所有成员的列表,请参见iAnnotation Members。
AddOrUpdateStyle Method (IAnnotation) 添加或更新链接到指定样式的注释。
ApplyDefaultStyleAttributes Method (IAnnotation) 将默认样式属性应用于此批注。
CanShowInAnnotationView Method (IAnnotation) 获取此批注是否可以显示在指定的批注视图中。
CanShowInMultipleAnnotationViews Method (IAnnotation) 获取此批注是否可以在多个批注视图中显示。
CheckSpelling Method (IAnnotation) 拼写检查此批注中的文本。
ConvertToMultiJog Method (IAnnotation) 将具有引线的注释转换为具有多折弯引线的注释。
DeleteStyle Method (IAnnotation) 删除指定的样式。
DeSelect Method (IAnnotation) 取消选择此批注。
GetArrowHeadCount Method (IAnnotation) 获取此符号上的箭头数。
GetArrowHeadSizeAtIndex Method (IAnnotation) 获取此批注上指定引线的箭头大小。
GetArrowHeadStyleAtIndex Method (IAnnotation) 获取此批注上特定引线的箭头样式。
GetAttachedEntities3 Method (IAnnotation) 获取此批注附加到的实体。
GetAttachedEntityCount3 Method (IAnnotation) 获取此批注附加到的实体数。
GetAttachedEntityTypes Method (IAnnotation) 获取附加到此批注的实体类型。
GetDashedLeader Method (IAnnotation) 获取此引线是虚线还是实线。
GetDimXpertFeature Method (IAnnotation) 获取与此批注关联的dimxpert功能。
GetDimXpertName Method (IAnnotation) 获取此批注的dimxpert名称。
GetDisplayData Method (IAnnotation) 获取此批注的显示数据。
GetFlipPlaneTransform Method (IAnnotation) 获取批注平面在相反方向上的转换矩阵。
GetLeaderAllAround Method (IAnnotation) 获取此批注的全方位符号显示的设置。
GetLeaderCount Method (IAnnotation) 获取此批注上的引线数。
GetLeaderPerpendicular Method (IAnnotation) 获取此批注的垂直弯曲引线显示设置。
GetLeaderPointsAtIndex Method (IAnnotation) 获取有关此批注上指定引线的坐标信息。
GetLeaderSide Method (IAnnotation) 获取此批注的引线附件侧设置。
GetLeaderStyle Method (IAnnotation) 获取此领导的样式。
GetMultiJogLeaderCount Method (IAnnotation) 获取此批注上多个折弯指引线的数目。
GetMultiJogLeaders Method (IAnnotation) 获取此批注上的多重折弯指引线。
GetName Method (IAnnotation) 获取此批注的名称。
GetNext3 Method (IAnnotation) 获取下一个批注。
GetParagraphs Method (IAnnotation) 获取此注释批注中的段落。
GetPlane Method (IAnnotation) 获取批注相对于模型的X-Y平面的旋转矩阵。
GetPosition Method (IAnnotation) 获取此批注的位置。
GetSmartArrowHeadStyle Method (IAnnotation) 获取此批注的智能箭头样式的设置。
GetSpecificAnnotation Method (IAnnotation) 获取与此批注关联的特定基础对象。
GetStyleName Method (IAnnotation) 获取应用于此批注的样式的名称。
GetTextFormat Method (IAnnotation) 获取此批注中指定文本的文本格式。
GetTextFormatCount Method (IAnnotation) 获取此批注的文本格式数。
GetType Method (IAnnotation) 获取批注的类型。
GetUseDocTextFormat Method (IAnnotation) 获取SolidWorks当前是否正在为此批注使用文档默认文本格式设置。
GetVisualProperties Method (IAnnotation) 获取此批注的视觉属性。
IGetAttachedEntityTypes Method (IAnnotation) 获取附加到此批注的所有实体的类型。
IGetDisplayData Method (IAnnotation) 获取批注的显示数据。
IGetLeaderPointsAtIndex Method (IAnnotation) 获取有关此批注上指定引线的坐标信息。
IGetMultiJogLeaders Method (IAnnotation) 获取此批注上的多重折弯指引线。
IGetPosition Method (IAnnotation) 获取此批注的位置。
IGetSpecificAnnotation Method (IAnnotation) 获取与此批注关联的特定基础对象。
IGetTextFormat Method (IAnnotation) 获取此批注中指定文本的文本格式。
IGetVisualProperties Method (IAnnotation) 获取此批注的视觉属性。
IsDangling Method (IAnnotation) 获取此批注是否悬空。
IsDimXpert Method (IAnnotation) 获取批注是否为dimxpert批注。
ISetAttachedEntities Method (IAnnotation) 将此批注附加到指定的实体。
ISetTextFormat Method (IAnnotation) 设置此批注中指定文本的文本格式信息。
LoadStyle Method (IAnnotation) 加载指定的样式。
SaveStyle Method (IAnnotation) 保存指定的样式。
Select3 Method (IAnnotation) 选择此批注并将其标记。
SetArrowHeadSizeAtIndex Method (IAnnotation) 设置此批注上指定引线的箭头大小。
SetArrowHeadStyleAtIndex Method (IAnnotation) 设置此批注上特定引线的箭头样式。
SetAttachedEntities Method (IAnnotation) 将此批注附加到指定的实体。
SetLeader3 Method (IAnnotation) 设置此批注的引线特征。
SetLeaderAttachmentPointAtIndex Method (IAnnotation) 为具有指定索引的批注设置引线的指定附着点。
SetName Method (IAnnotation) 设置此批注的名称。
SetPosition2 Method (IAnnotation) 设置此批注的位置。
SetStyleName Method (IAnnotation) 设置此批注的样式。
SetTextFormat Method (IAnnotation) 设置此批注中指定文本的文本格式。
IAssemblyDoc Interface Methods 有关此类型的所有成员的列表,请参见iAssemblyDoc成员。
ActivateGroundPlane Method (IAssemblyDoc) 激活指定配置的地平面。
AddComponent5 Method (IAssemblyDoc) 将指定配置选项的指定组件添加到此程序集。
AddComponentConfiguration Method (IAssemblyDoc) 为最后选定的部件添加新配置。
AddComponents3 Method (IAssemblyDoc) 将多个零部件添加到部件中。
AddConcentricMateWithTolerance Method (IAssemblyDoc) 将未对齐的同心配合添加到此部件。
AddDistanceMate Method (IAssemblyDoc) 将距离配合添加到此部件。
AddMate5 Method (IAssemblyDoc) 将配合添加到此部件。
AddPipePenetration Method (IAssemblyDoc) 使用在选定草图点处结束的管道穿透相邻管件或管道。
AddPipingFitting Method (IAssemblyDoc) 将管件添加到当前管道部件。
AddSmartComponent Method (IAssemblyDoc) 将指定坐标处的指定组件作为智能组件添加到此程序集。
AddToFeatureScope Method (IAssemblyDoc) 将零部件添加到当前选定部件特征的范围中。
AutoAngleAxis Method (IAssemblyDoc) 自动检测轴的角度伴侣。
AutoExplode Method (IAssemblyDoc) 自动生成当前部件配置的分解图。
CompConfigProperties5 Method (IAssemblyDoc) 设置指定配置中选定组件的属性。
CopyWithMates2 Method (IAssemblyDoc) 复制此部件中的一个或多个具有配合的零部件。
CreateExplodedView Method (IAssemblyDoc) 创建活动程序集配置的分解视图。
CreateMate Method (IAssemblyDoc) 使用指定的数据创建高级配合。
CreateMateData Method (IAssemblyDoc) 为指定的配合类型创建高级配合特征数据。
CreateSmartComponent Method (IAssemblyDoc) 创建智能组件。
CreateSpeedPak Method (IAssemblyDoc) 为此程序集中选定部件的活动配置创建指定类型的SpeedPak。
DeleteSelections Method (IAssemblyDoc) 删除子部件的选定零部件或选定零部件的子部件。
DissolveComponentPattern Method (IAssemblyDoc) 溶解选定的组件模式。
DissolveSubAssembly Method (IAssemblyDoc) 在此部件中分解选定的部件。
EditAssembly Method (IAssemblyDoc) 切换回程序集文档进行编辑。
EditConcentricMate Method (IAssemblyDoc) 编辑未对齐的同心配合。
EditDistanceMate Method (IAssemblyDoc) 编辑距离配合。
EditMate4 Method (IAssemblyDoc) 编辑选定的装配零部件配合关系。
EditPart2 Method (IAssemblyDoc) 在部件上下文中编辑选定的零件。
ExitIsolate Method (IAssemblyDoc) 退出隔离所选组件并将程序集返回其初始显示状态。
FeatureByName Method (IAssemblyDoc) 返回部件中命名特征的iFeature对象。
FileDeriveComponentPart Method (IAssemblyDoc) 从当前选定的部件创建新的零件文档。
FixComponent Method (IAssemblyDoc) 修复选定的组件;即,使其不可移动。
ForceUpdateElectricalData2 Method (IAssemblyDoc) 强制更新电气数据。
GetActiveGroundPlane Method (IAssemblyDoc) 获取指定配置的活动地平面。
GetAdvancedSelection Method (IAssemblyDoc) 获取高级组件选择。
GetBox Method (IAssemblyDoc) 获取边界框。
GetComponentByID Method (IAssemblyDoc) 使用组件ID获取顶级程序集组件。
GetComponentByName Method (IAssemblyDoc) 获取指定的顶级程序集组件。
GetComponentCount Method (IAssemblyDoc) 获取此程序集的活动配置中的组件数。
GetComponents Method (IAssemblyDoc) 获取此程序集的活动配置中的所有组件。
GetDragOperator Method (IAssemblyDoc) 获取此程序集中动态拖动操作的拖动运算符。
GetDroppedAtEntity Method (IAssemblyDoc) 获取指向将文件放入此程序集中的实体的指针。
GetEditTarget Method (IAssemblyDoc) 获取当前正在编辑的模型文档。
GetEditTargetComponent Method (IAssemblyDoc) 获取当前正在编辑的组件。
GetExplodedViewConfigurationName Method (IAssemblyDoc) 获取指定分解视图的配置名称。
GetExplodedViewCount2 Method (IAssemblyDoc) 获取指定配置中的分解视图数。
GetExplodedViewNames2 Method (IAssemblyDoc) 获取指定配置中分解视图的名称。
GetFeatureScope Method (IAssemblyDoc) 获取受此功能影响的组件。
GetFeatureScopeCount Method (IAssemblyDoc) 获取受此功能影响的组件数。
GetLightWeightComponentCount Method (IAssemblyDoc) 获取程序集中轻型组件的数目。
GetRouteManager Method (IAssemblyDoc) 获取SolidWorks路由API。
GetUnloadedComponentNames Method (IAssemblyDoc) 获取已卸载组件的路径、引用的配置名称、卸载原因、文档类型和名称。
GetVisibleComponentsInView Method (IAssemblyDoc) 获取此程序集中要另存为实体的可见组件的列表。
GetVisibleComponentsInViewCount Method (IAssemblyDoc) 获取此程序集中可见组件的数目。
HasUnloadedComponents Method (IAssemblyDoc) 获取此程序集是否具有隐藏或抑制的已卸载组件。
IAddComponents3 Method (IAssemblyDoc) 将多个零部件添加到部件中。
IFeatureByName Method (IAssemblyDoc) 返回部件中命名特征的iFeature对象。
IGetBox Method (IAssemblyDoc) 获取边界框。
IGetComponents Method (IAssemblyDoc) 获取此程序集的活动配置中的所有组件。
IGetDragOperator Method (IAssemblyDoc) 获取此程序集中动态拖动操作的拖动运算符。
IGetEditTarget2 Method (IAssemblyDoc) 获取当前正在编辑的模型文档。
IGetFeatureScope Method (IAssemblyDoc) 获取受此功能影响的组件。
IGetVisibleComponentsInView Method (IAssemblyDoc) 获取此程序集中要另存为实体的可见组件的列表。
InsertCavity4 Method (IAssemblyDoc) 使用选定的零部件将型腔插入激活零件。
InsertDerivedPattern Method (IAssemblyDoc) 从选定的阵列和种子组件创建派生组件。
InsertEnvelope Method (IAssemblyDoc) 在此程序集中以指定的配置名称添加信封。
InsertJoin2 Method (IAssemblyDoc) 从合并的选定组件构造特征。
InsertLoadReference Method (IAssemblyDoc) 创建对指定或选定配合的配合加载引用。
InsertNewAssembly Method (IAssemblyDoc) 创建新的虚拟子部件,并可选地将其保存到指定的文件中。
InsertNewPart2 Method (IAssemblyDoc) 在指定的面或平面上插入新零件。
InsertNewVirtualAssembly Method (IAssemblyDoc) 从该程序集创建新程序集,并将其内部保存为虚拟组件。

 

 

下载路径 https://download.csdn.net/download/zengqh0314/12170828

 

posted @
2023-03-02 19:00 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源

C# SolidWorks二次开发 API-撤销与重做

C# SolidWorks二次开发 API-撤销与重做

	人非圣人,孰能无错。 不管是做设计还是做什么事,都有可能操作错误或者误操作的情况,熟悉windows的系统的人都知道Ctrl+Z是撤销,Ctrl+Y是重做,所以solidworks中也是有同样的操作的,如下图,在新建一个草图之后,画两条线,在撤销里面就可以看到对应的操作,可以方便的进行撤销与重做操作。如下图:		

查API

既然我们已经知道这个动作,那我们可以在API帮助中搜索对应的关键字,目前虽然没有官方的中文版的API帮助,但我之前共享的翻译文档也是可以参考的哈。

api帮助里面有不少可以查看的信息,这里我就不深入介绍了。

用法


直接上代码,下面就是让程序修改了长和宽,但是在用户界面上可以直接撤销修改。

		private void btnUndoOrRedo_Click(object sender, EventArgs e)
        {

            var swApp = PStandAlone.GetSolidWorks();
            var swModelDoc = (ModelDoc2)swApp.ActiveDoc;
            var swModelDocExt = swModelDoc.Extension;


            //开始记录可以退回的步骤
            swModelDocExt.StartRecordingUndoObject();      

			//这里可以修改多个尺寸,零件,理论上多少步都可以。相当于一个状态备份
			
            Dimension dimension = (Dimension)swModelDoc.Parameter("D1@Extrude2");
            dimension.SetValue3(0.21, 1,null) ;           
            dimension = (Dimension)swModelDoc.Parameter("D4@Sketch1");
            dimension.SetValue3(0.56, 1, null);   
            
            swModelDoc.EditRebuild3();

            //记录结束 ,是否显示在退回列表中。
            swModelDocExt.FinishRecordingUndoObject2("修改长和宽", false);
			
            //撤销
            //swModelDoc.EditUndo2(1);

            //重新执行
            //swModelDoc.EditRedo2(1);


        }
执行完上面程序撤销之前的代码, 现在solidworks上面的撤销功能就亮了,同时我们可以看到有哪几步可以撤销,程序可以显示对应的描述,方便用户执行。
当然也有些操作可能无法撤销,我没有进行太多测试。


好了,今天的撤销的重做就讲这么多了,大家有需要的话可以继续研究。

源代码继续上传在gitee上面。有需要的可以去取。

posted @
2023-02-22 18:15 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源

C# SolidWorks 二次开发 API—遍历零件所有可编辑尺寸

C# SolidWorks 二次开发 API—遍历零件所有可编辑尺寸

最近有高校学生问到一个问题,如何得到零件中所有可以编辑的尺寸信息。包括所有的特征以及草图尺寸。
之前的博客中只是写了如何遍历特征以及图纸中的尺寸。
通过查api发现,其实这个和图纸中标注的尺寸一样,直接使用:
先看结果:
零件:

        /// <summary>
        /// 遍历特征
        /// </summary>
        /// <param name="thisFeat"></param>
        /// <param name="isTopLevel"></param>
        public static void TraverseFeatures(Feature thisFeat, bool isTopLevel, bool isShowDimension = false)
        {
            Feature curFeat = default(Feature);
            curFeat = thisFeat;

            while ((curFeat != null))
            {
                //输出特征名称
                Debug.Print(curFeat.Name);
                if (isShowDimension == true) ShowDimensionForFeature(curFeat);

                Feature subfeat = default(Feature);
                subfeat = (Feature)curFeat.GetFirstSubFeature();

                while ((subfeat != null))
                {
                    //if (isShowDimension == true) ShowDimensionForFeature(subfeat);
                    TraverseFeatures(subfeat, false);
                    Feature nextSubFeat = default(Feature);
                    nextSubFeat = (Feature)subfeat.GetNextSubFeature();
                    subfeat = nextSubFeat;
                    nextSubFeat = null;
                }

                subfeat = null;

                Feature nextFeat = default(Feature);

                if (isTopLevel)
                {
                    nextFeat = (Feature)curFeat.GetNextFeature();
                }
                else
                {
                    nextFeat = null;
                }

                curFeat = nextFeat;
                nextFeat = null;
            }
        }

        /// <summary>
        /// 遍历零件中的所有特征
        /// </summary>
        /// <param name="feature"></param>
        public static void ShowDimensionForFeature(Feature feature)
        {
            var thisDisplayDim = (DisplayDimension)feature.GetFirstDisplayDimension();

            while (thisDisplayDim != null)
            {
                var dimen = (Dimension)thisDisplayDim.GetDimension();

                Debug.Print($"---特征 {feature.Name} 尺寸-->" + dimen.GetNameForSelection() + "-->" + dimen.Value);

                thisDisplayDim = (DisplayDimension)feature.GetNextDisplayDimension(thisDisplayDim);
            }
        }

代码已经上传,请自取。

posted @
2023-02-18 08:49 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源