Thanks go to Mahir Abrahim at General Atomics for his VB code, and I have converted it to equivalent C# code, with some additions of code from Simulation Manual.
private CwAddincallback pCWAddin = null;
private CosmosWorks pCWApp = null;
private CWModelDoc pCWDoc = null;
private CWStudyManager pStudyManager = null;
private CWStudy pStudy=null;
private CWMesh pMesh = null;
pCWAddin = (CwAddincallback)SwApp.GetAddInObject(“SldWorks.Simulation”);
Debug.Assert(pCWAddin != null);
pCWApp = pCWAddin.CosmosWorks;
pCWDoc = pCWApp.ActiveDoc;
pStudyManager = pCWDoc.StudyManager;
int nStudies = pStudyManager.StudyCount;
int errCode;
if(nStudies<1)
{
const int cwStaticAnalysis = 0; //const int cwSolidElementMesh = 0;
pStudy = pStudyManager.CreateNewStudy2(“Static_solid”, cwStaticAnalysis, out errCode);
}
pStudyManager.ActiveStudy = 0;
pStudy = pStudyManager.GetStudy(0);
CWSolidManager pSolidMgr = pStudy.SolidManager;
CWSolidComponent pSolidComponent=pSolidMgr.GetComponentAt(0, out errCode);
CWSolidBody pSolidBody = pSolidComponent.GetSolidBodyAt(0, out errCode);
pMesh = pStudy.Mesh;
const int cwMeshState_SUCCEEDED=1;
int rtn = -100;
if (pMesh.MeshState != cwMeshState_SUCCEEDED)
{
pMesh.Quality = 1;
double el, tl;
pMesh.GetDefaultElementSizeAndTolerance(0, out el, out tl);
rtn=pStudy.CreateMesh(0, el,tl);
string info=string.Format(“{0} elements created”, pMesh.ElementCount.ToString());
MessageBox.Show(info);
}
Posted in CAD, Dotnet/C#
