组件开发流程
本章节介绍了创建组件的基本流程以及注意事项。
属性概念
每一个输入类型的UI控件都需要配置 空值 和 默认值。
空值(EmptyValue)
含义:代表"无数据"或"空"的标识值。
对于double
类型,空值为double.MaxValue
对于int
类型,空值为int.MaxValue
对于string
类型,空值为""
(即空字符串,少数情况为null)
对于SDK
封装好的控件,通常其命名中会含有EmptyValue
的属性,例如:
···
PlatePropertyPanel.EmptyValue;
BoltBasicPropertyPanel.EmptyValue;
BoltHolePanel.EmptyValue;
···
默认值(DefaultValue)
含义:当用户未输入时,提供的预设值。
应根据组件的实际需要配置,同时其数据类型应和空值保持一致。
利用空值和默认值判断用户是否有输入
示例:
由于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控件的输入是具有单位语义,例如长度、角度。则应该配置 模型首选项 。
组件实例
连接组件
- 其
TargetComponentType
的类型为LoongCAD.STC.Object3D.ConnectionComponent
。 - 在 ComponentInstanceContext 中的
TargetComp
,其属性Main
,为组件在软件创建时选择的主零件实例。 TargetComp
的属性Subs
,为组件在软件创建时选择的多个次零件实例。
细部组件
- 其
TargetComponentType
的类型为LoongCAD.STC.Object3D.DetailComponent
。 - 在 ComponentInstanceContext 中的
TargetComp
,其属性Main
,为组件在软件创建时选择的主零件实例。 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
集合,增加需要的标签页。
- 在VS的工具箱中,选择
doubleInput
,放置到需要的标签页中。
- 配置该
doubleInput
控件的ParamNames
(建议将名称和ParamNames配一致,便于查找对应)。
- 在
ParamsNames.cs
,ParamsHandler.cs
中增加对应的配置。
- 在
PluginMain.cs
的业务代码中测试,尝试获取该控件的输入值。
下拉选项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;
}
AutoScaleMode
改为Dpi
模式
+ FormBorderStyle
改为 Sizable
配置CheckBox
多数控件均需要配置自身的CheckBox
,步骤如下
- 从工具箱中选中CheckBox
,将其添加到需要的位置。
- 将需要绑定
CheckBox
的控件的ControlCheckName
改为对应新添加的CheckBox
的Name
- 通过面板的选项检验绑定。
配置UI工具箱
如何添加开发控件到工具箱 - 打开工具箱,如果找不到,可以在vs的视图中打开。
- 在工具箱空白处右键单击,并左键单击 选择项。
- 在
.NET Framework
组件标签页下,点击 浏览,选择LoongSDKSTC.dll
, 等待vs加载完毕后,点击确定。
配置文件引用
如何添加项目必须的文件引用。 - 点开所处项目的引用分组栏,右键单击引用,选择添加引用。
- 在引用管理器窗口,单击浏览按钮,找到并添加以下三项:
LoongSDKSTC.dll
LoongCAD.Common.dll
LoongSDKCore.dll
-
勾选该三项引用文件,点击确认按钮,进行添加。
-
其余系统引用,如若开发过程中需要,可自行添加。