Hallo,
jetzt habe ich mir etwas gebastelt. Es ist zwar umständlich, doch ich komme endlich zu meinem Namen. Anregungen und Verbesserungsvorschläge sind immer willkommen.
Gruß, Thomas
ISelectionMgr selMgr;
ISketchPoint selSketchPoint;
ISketch Sketch;
IComponent Component;
VARIANT SketchPointArr;
double dSelPktX, dSelPktY, dSelPktZ;
double dPktX, dPktY, dPktZ;
int iPointsCount, i, iLen;
CString strName, strTmp;
m_ModelDoc = m_pSolidWorks->GetActiveDoc();
if(m_ModelDoc!=NULL && m_ModelDoc.GetType() == swDocASSEMBLY ){
selMgr = m_ModelDoc.GetSelectionManager();
if( selMgr.GetSelectedObjectType(1) == swSelEXTSKETCHPOINTS {
selSketchPoint = selMgr.GetSelectedObject3(1);
dSelPktX = selSketchPoint.GetX();
dSelPktY = selSketchPoint.GetY();
dSelPktZ = selSketchPoint.GetZ();
Sketch = selSketchPoint.GetSketch();
iPointsCount = Sketch.GetSketchPointsCount();
SketchPointArr = Sketch.GetSketchPoints();
SAFEARRAY *SafeArray = V_ARRAY(&SketchPointArr);
LPDISPATCH *Disp;
HRESULT res;
if (res = SafeArrayAccessData(SafeArray, (void **)&Disp) != S_OK)
AfxMessageBox(_T("Failure accessing safe array data."));
for (i = 0; i < iPointsCount; i++){
ISketchPoint SketchPoint(Disp[i]);
Disp[i]->AddRef();
dPktX = SketchPoint.GetX();
dPktY = SketchPoint.GetY();
dPktZ = SketchPoint.GetZ();
if(dPktX == dSelPktX && dPktY == dSelPktY && dPktZ == dSelPktZ)
break;
}
strName.Format("Punkt%i@", i+1);
strName = strName + m_ModelDoc.GetEntityName(Sketch) + "@";
Component = selMgr.GetSelectedObjectsComponent(1);
strName = strName + Component.GetName() + "@";
strTmp = m_ModelDoc.GetTitle();
iLen = strTmp.GetLength() - 7;
strTmp = strTmp.Left(iLen);
strName = strName + strTmp;
m_ModelDoc.ClearSelection();
}
}
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP