ObjectARX-选定圆C
你好我正在做一个应用程序,以获得选定的圆心和半径。
其实我已经做完了。但问题是,如果我只移动圆,它会显示中心点。
它应该显示我是否选择了实体。请帮帮我。
我的代码是
void CDbModReactor::objectModified(const AcDbDatabase* pDb,
const AcDbObject* pDbObj)
{
AcAxDocLock docLock(pDbObj->ownerId(), AcAxDocLock::kNormal);
if(docLock.lockStatus() != Acad::eOk)
return;
else
gpDlg->objDisplay("modified", pDbObj);
}
void objDisplay(const char* pWhat, const AcDbObject* pDbObj)
{
if(!gpDlg)
return;
char hstr;
char idstr;
const char *pClsName = NULL;
double pRadius, y_value;
if(pDbObj)
{
AcDbObjectId id = pDbObj->objectId();
AcDbHandle h;
pClsName = pDbObj->isA()->name();
pDbObj->getAcDbHandle(h);
h.getIntoAsciiBuffer(hstr);
//acutPrintf("\nDbModReactor: obj %s: "
// "class %s, id %lx, handle %f.\n",
// pWhat, pClsName , id, idstr);
//sprintf(idstr, "0x%08lx", id);
}
else
{
pClsName = "";
strcpy(hstr, "");
strcpy(idstr, "");
}
ads_name ss;
if( RTNORM !=
acedSSGet("P",NULL,NULL,NULL,ss))
{
// Get Previous selection set
if( RTNORM != acedSSGet(NULL,NULL,NULL,NULL,ss))
{
acDocManager->unlockDocument(acDocManager->curDocument());
return;
}
}
long nEnts;
acedSSLength(ss,&nEnts);
AcDbObjectIdArray entities(nEnts);
//acutPrintf("\nFound %d Entities", nEnts);
CString Tot_Cir;
Tot_Cir.Format("%d",nEnts);
gpDlg->SetDlgItemText(IDC_EDIT1, Tot_Cir);
AcDbCircle* pCircle = AcDbCircle::cast(pDbObj);
if(pCircle == NULL)
return;
AcGePoint3d pCenter = pCircle->center();
y_value = pCenter.y;
pRadius = pCircle->radius();
//acutPrintf("Selected object Y value %f\n", y_value);
//acutPrintf("Selected object X value %f\n", pCenter);
Cir_Radius.Format("%f",pRadius);
Cent_X.Format("%f",pCenter);
Cent_Y.Format("%f",y_value);
m_lstCtrl.InsertItem(0,Cent_X);
m_lstCtrl.SetItemText(0,1,Cent_Y);
FILE * pFile;
pFile = fopen ("C:myfile.csv","a");
if (pFile!=NULL)
{
CString x2 = Cent_X+","+Cent_Y+"\n";
fwrite(x2, x2.GetLength(), 1, pFile);
fclose (pFile);
}
acedSSFree(ss);
}
线程已移动 格纳帕,
这个论坛对于ObjectARX不是特别强大,所以,如果你在这里没有得到足够的回应,请在theSwamp上试试。组织。
李
页:
[1]