C#PDM插件:在更改状态时未获取相关文件的数据卡确切信息,而是获取BOM

C#PDM插件:在更改状态时未获取相关文件的数据卡确切信息,而是获取BOM,c#,add-in,solidworks,C#,Add In,Solidworks,实际上,我创建了一个加载项,每当文件状态发生更改时,我都希望获取“数据卡”选项卡信息 在下面的图1中。(例如,其JPR-DKUS-A-01…02等) 但奇怪的是,我没有得到它,但实际上我得到的是BOM的最后一行的产品 信息(SCR-0039)(参见图2)…当我在收到的其他文件上进行状态更改时 没有BOM的正确数据卡信息。我不知道为什么会这样 图:1 图:2 C#Addin代码如下所示: public void OnCmd(ref EdmCmd poCmd, ref EdmCmdData[

实际上,我创建了一个加载项,每当文件状态发生更改时,我都希望获取“数据卡”选项卡信息

  • 在下面的图1中。(例如,其JPR-DKUS-A-01…02等)
  • 但奇怪的是,我没有得到它,但实际上我得到的是BOM的最后一行的产品 信息(SCR-0039)(参见图2)…当我在收到的其他文件上进行状态更改时 没有BOM的正确数据卡信息。我不知道为什么会这样
图:1

图:2

C#Addin代码如下所示:

public void OnCmd(ref EdmCmd poCmd, ref EdmCmdData[] ppoData)
{
IEdmVault5 edmVault = poCmd.mpoVault as IEdmVault5;
IEdmFile7 aFile;
IEdmBom bom;
IEdmBomMgr bomMgr;
IEdmBomView bomView;
string str_b = "";

try
{
switch (poCmd.meCmdType)
{
case EdmCmdType.EdmCmd_PostState:



IEdmFile5 file = vault.GetFileFromPath(fileName, out IEdmFolder5 folder);

int ver = 0;
ver = file.CurrentVersion;

IEdmEnumeratorVariable8 EnumVarObj = default(IEdmEnumeratorVariable8);
EnumVarObj = (IEdmEnumeratorVariable8)file.GetEnumeratorVariable();

// Get configurations
EdmStrLst5 cfgList = default(EdmStrLst5);
cfgList = file.GetConfigurations();

IEdmPos5 pos = default(IEdmPos5);
pos = cfgList.GetHeadPosition();
string cfgName = null;

Dictionary<string, Dictionary<string, string>> myDictDict = new Dictionary<string, Dictionary<string, string>>();

while (!pos.IsNull)
{

cfgName = cfgList.GetNext(pos);
object VarObj = null;

EnumVarObj.GetVar("PartNo", cfgName, out VarObj);
string VarVal = VarObj?.ToString();

EnumVarObj.GetVar("Description", cfgName, out VarObj);
string Description = VarObj?.ToString();

EnumVarObj.GetVar("Revision", cfgName, out VarObj);
string revision = VarObj?.ToString();

Dictionary<string, string> values = new Dictionary<string, string>();

values.Add("PartNo", VarVal);
values.Add("Revision", revision);
values.Add("Description", Description);


myDictDict.Add(cfgName, values);

}
}
}
}
}
public void OnCmd(ref-EdmCmd poCmd,ref-EdmCmdData[]ppoData)
{
IEdmVault5 edmVault=poCmd.mpoVault作为IEdmVault5;
IEdmFile7文件;
IEdmBom;
IEdmBomMgr bomMgr;
IEdmBomView bomView;
字符串str_b=“”;
尝试
{
开关(poCmd.meCmdType)
{
案例EdmCmdType.EdmCmd\u后状态:
IEdmFile5 file=vault.GetFileFromPath(文件名,输出IEdmFolder5文件夹);
int-ver=0;
ver=file.CurrentVersion;
IEdmEnumeratorVariable8 EnumVarObj=默认值(IEdmEnumeratorVariable8);
EnumVarObj=(IEdmEnumeratorVariable8)文件。GetEnumeratorVariable();
//获取配置
EdmStrLst5 cfgList=默认值(EdmStrLst5);
cfgList=file.GetConfigurations();
IEdmPos5位置=默认值(IEdmPos5);
pos=cfgList.GetHeadPosition();
字符串cfgName=null;
Dictionary mydict=新字典();
而(!pos.IsNull)
{
cfgName=cfgList.GetNext(pos);
对象VarObj=null;
GetVar(“零件号”,cfgName,out VarObj);
字符串VarVal=VarObj?.ToString();
GetVar(“描述”,cfgName,out VarObj);
字符串描述=VarObj?.ToString();
GetVar(“修订”,cfgName,out VarObj);
字符串修订=VarObj?.ToString();
字典值=新字典();
添加(“零件号”,VarVal);
添加(“修订”,修订);
添加(“说明”,说明);
添加(cfgName,值);
}
}
}
}
}

请提供帮助。

Forum.solidworks.com是找到答案的最佳地点Forum.solidworks.com是找到答案的最佳地点