Hi Daniel,
I was run correcly at first time.
After that it is not running...
Code in CSampDialog.h
public:
CSampDialog( CWnd* pParent = NULL );
void OnCopy2Excell(const char* pWhat, const AcDbObject* pDbObj);
afx_msg void OnShowPoints();
static Acad::ErrorStatus SelectionSetToObjectIds( AcDbObjectIdArray &setIds, ads_name ssname );
static void ExtTools_test(void);
Code in CSampDialog.cpp
BEGIN_MESSAGE_MAP(CSampDialog, CDialog)
//{{AFX_MSG_MAP(CSampDialog)
ON_WM_CLOSE()
ON_MESSAGE(WM_ACAD_KEEPFOCUS, onAcadKeepFocus)
ON_BN_CLICKED(IDC_BUTTON2, OnShowPoints)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static void ExtTools_test(void)
{
CSampDialog cmd;
cmd.OnShowPoints();
}
void CSampDialog::OnShowPoints()
{
ads_name ss;
if( RTNORM != acedSSGet(_T("P"),NULL,NULL,NULL,ss))
return;
AcDbObjectIdArray ids;
if(CSampDialog::SelectionSetToObjectIds(ids,ss) != Acad::eOk)
return;
for(size_t i = 0; i < ids.length() ; i++)
{
AcDbEntity* pObj = NULL;
if(acdbOpenObject(pObj,ids[i],AcDb::kForRead) == Acad::eOk)
{
AcDbCircle* pCirc = AcDbCircle::cast(pObj);
if (pCirc !=NULL)
{
double dRadius = pCirc->radius();
AcGePoint3d ptCenter = pCirc->center();
acutPrintf(_T("\ncenter (%g,%g,%g) radius %g"),
ptCenter.x,ptCenter.y,ptCenter.z, dRadius);
}
pObj->close();
}
else
acutPrintf(_T("\nFailed to open the object."));
}
acedSSFree(ss);
}
Acad::ErrorStatus CSampDialog::SelectionSetToObjectIds( AcDbObjectIdArray &setIds, ads_name ssname )
{
long sslength;
ads_name ent;
acedSSLength(ssname,&sslength);
for (long i = 0; i < sslength; i++)
{
AcDbObjectId oId;
acedSSName(ssname, i, ent);
if(acdbGetObjectId(oId, ent) == Acad::eOk)
setIds.append(oId);
else
return Acad::eNullObjectId;
}
return Acad::eOk;
}
what is the wrong with this?
Thanks...