跳转至

组件开发流程

本章节介绍了创建组件的基本流程以及注意事项。


属性概念

每一个输入类型的UI控件都需要配置 空值默认值

空值(EmptyValue)

含义:代表"无数据"或"空"的标识值。

对于double类型,空值为double.MaxValue

对于int类型,空值为int.MaxValue

对于string类型,空值为"" (即空字符串,少数情况为null)

对于SDK封装好的控件,通常其命名中会含有EmptyValue的属性,例如:

   ···
   PlatePropertyPanel.EmptyValue;
   BoltBasicPropertyPanel.EmptyValue;
   BoltHolePanel.EmptyValue;
   ···

默认值(DefaultValue)

含义:当用户未输入时,提供的预设值。

应根据组件的实际需要配置,同时其数据类型应和空值保持一致。

利用空值和默认值判断用户是否有输入

示例:

ParamsHandler \ ParamsNames

由于Get方法拿到的值,在用户没有输入的时候,返回的是默认值

所以可以通过在一开始将默认值空值设为相同,通过比较得知用户是否有输入。

   /* in ParamsHandler class
   private static void AddEmptyDefaultValue(string paramName,object emptyValue,object defaultValue){
      AddEmptyDefaultValue(g_emptyValues,g_builtinDefaults,paramName,emptyValue,defaultValue);
   }
   */

   ---in ParamsHandler InitializeEmptyDefaults func
   g_emptyValues = new DObject();
   g_builtinDefaults = new DObject();

   AddEmptyDefaultValue(ParamNames.TEXT,double.MaxValue,double.MaxValue);

示例中,将键值对ParamNames.TEXT空值默认值都设置为了double.MaxValue

通过将Get方法拿到值与空值比较,就能得知用户是否已对该控件输入。

   var handler = m_context.ParamsHandler;
   double dist = handler.GetDoubleValue(ParamNames.TEST);
   bool bHasInput = !Equals(dist,double.MaxValue);

模型首选项

如果UI控件的输入是具有单位语义,例如长度、角度。则应该配置 模型首选项

组件实例

连接组件

软件中创建连接组件

  1. TargetComponentType的类型为LoongCAD.STC.Object3D.ConnectionComponent
  2. ComponentInstanceContext 中的 TargetComp ,其属性Main,为组件在软件创建时选择的主零件实例。
  3. TargetComp的属性Subs,为组件在软件创建时选择的多个次零件实例。

细部组件

软件中创建细部组件

  1. TargetComponentType的类型为LoongCAD.STC.Object3D.DetailComponent
  2. ComponentInstanceContext 中的 TargetComp ,其属性Main,为组件在软件创建时选择的主零件实例。
  3. TargetComp的属性CtrlPoints,为组件在软件创建时选择的细部控制点。

示例:

   Vec3 DetailPt;
   if(TargetComp.CtrlPoints != null){
      if(TargetComp.CtrlPoints.Length > 0){
         DetailPt = TargetComp.CtrlPoints[0].WorldPos;
      }
   }

基本流程

1.确定该组件需要创建那些实例对象。(梁/柱,多边形板,螺栓,焊缝,切割体)。

2.确定这些实例对象之间的关系,确立采取的连接方式(使用螺栓/使用焊缝)。

3.确定实例对象的创建顺序,确立实例对象相互间的位置、尺寸、是否创建的依赖关系。

4.按照顺序,从组件实例中获取位置、方向,构建实例。

构建实例的基本属性

构建实例的函数均为TargetComp的成员函数,前缀为Create

下列Create函数的具体信息,请参考SDK的API手册。

构建梁

CreateSteelBeam:创建梁,形式上和软件中创建梁一致。

CreateSteelPolyBeam:创建折形梁,形式上和软件中创建折形梁一致。

构建多边形板

CreateSteelPlate:创建多边形板,形式上和软件中创建多边形板一致,

但API接口调用有一定限制。(例如:对于共线的3点将无法创建)。

构建螺栓

CreateBoltGroup:创建螺栓组,其形式需要创建好实例后,配置多个属性。

CreateBoltHoles:创建孔组,本质上和螺栓组是同一类的对象,但配置的属性不同。

构建焊缝

CreatePolyWeld:创建多边形焊缝,需要确立主次对象,以及焊缝控制点位置。

CreateAutoWeld:创建自动单边焊缝,需要确立主次对象,以及焊缝的工作坐标系,探测方向。

构建切割\对齐

CreateCutPlane:创建面切割。需要确定切割对象。

CreateBeamCutter:创建梁切割体,用创建好的梁去切割对象。

CreatePlateCutter:创建多边形板切割体,可以修改多边形板的控制点折角类型,来实现多样的切割样式。

CreateAlignPlane:创建面对齐。需要确定对齐对象。

UI控件

基本配置

  • 以在主窗口增加doubleInput为例
  • 打开Form_PluginMain.cs的设计器。
  • 选中tab_main,打开其属性面板,在属性面板中打开TabPages集合,增加需要的标签页。

UI控件-0.png

UI控件-1.png
  • 在VS的工具箱中,选择doubleInput,放置到需要的标签页中。

UI控件-2.png
  • 配置该doubleInput控件的ParamNames(建议将名称和ParamNames配一致,便于查找对应)。

UI控件-3.png

UI控件-4.png
  • ParamsNames.csParamsHandler.cs中增加对应的配置。

UI控件-5.png
  • PluginMain.cs的业务代码中测试,尝试获取该控件的输入值。

UI控件-6.png

UI控件-7.png

下拉选项UI配置

提供下拉选项的配置,下拉选项可配置文字,图片。

在设计器中添加好UI控件后,需要在Form_PluginMain中配置,示例:

        #region 辅助类函数
        private void AddItems(KeyValueComboBox comboBox,List<string> msg)
        {
            comboBox.ClearItems();
            for(var i = 0; i < msg.Count; ++i)
            {
                comboBox.AddItem(i, msg[i]);
            }
            comboBox.UpdateItems();
        }
        private void AddItems(ImageComboBox imageComboBox,int num)
        {
            imageComboBox.ClearItems();
            for(var i = 0; i< num; ++i) {
                imageComboBox.AddItem(i,i);
            }
            imageComboBox.UpdateItems();
        }
        #endregion

         //in InitializeControls()
        AddItems(this.KeyValueCB,new List<string>(){"是","否",});
        AddItems(this.ImageCB,5);  

KeyValueCB配置后,为下拉选项:"是","否"。

ImageCB配置后,再根据其UI控件的图片配置,为5个图片的下拉选项。

例如:以一个用5张(100*100)像素图片垂直拼接的图片(100*500)。

其UI控件的属性配置应为:

杂项

  • Image:选择垂直拼接的图片。
  • ImageItemSize : (100,100) 单张图片的大小。

行为

  • DropDownHeight: 下拉选项时的高度值,此处建议 500 + 10 = 510。
  • DropDownWidth: 下拉选项时的宽度值,此处建议 100。
  • ItemHeight: 单张选项图片的高度,此处建议 112。

布局

  • Size:UI控件的大小,建议 (105,105),如果属性没办法配置,可以通过鼠标拉动控件边线来调节。

额外注意项

开启UI面板的自动缩放

foreach (TabPage curPage in this.tab_main.TabPages) {
    curPage.AutoScroll = true;
}
应在每个主UI的初始化函数中调用。 同时如何有焊缝窗口,也应该在焊缝窗口添加AutoScroll。 同时应该将面板属性中的: + AutoScaleMode改为Dpi模式 + FormBorderStyle 改为 Sizable

配置CheckBox

多数控件均需要配置自身的CheckBox,步骤如下 - 从工具箱中选中CheckBox,将其添加到需要的位置。

UI控件-8.png
  • 将需要绑定CheckBox的控件的ControlCheckName改为对应新添加的CheckBoxName

UI控件-9.png

UI控件-10.png
  • 通过面板的选项检验绑定。

配置UI工具箱

如何添加开发控件到工具箱 - 打开工具箱,如果找不到,可以在vs的视图中打开。

  • 在工具箱空白处右键单击,并左键单击 选择项。

  • .NET Framework组件标签页下,点击 浏览,选择 LoongSDKSTC.dll, 等待vs加载完毕后,点击确定。

配置文件引用

如何添加项目必须的文件引用。 - 点开所处项目的引用分组栏,右键单击引用,选择添加引用。

  • 在引用管理器窗口,单击浏览按钮,找到并添加以下三项: LoongSDKSTC.dll LoongCAD.Common.dll LoongSDKCore.dll
  • 勾选该三项引用文件,点击确认按钮,进行添加。

  • 其余系统引用,如若开发过程中需要,可自行添加。