bool ArxEntityHelper::SelectEntities( const AcDbObjectIdArray& objIds ) { //acedSSSetFirst(NULL, NULL); if( objIds.isEmpty() ) return false; ads_name ss; //创建一个空的选择集 if(RTNORM != acedSSAdd( NULL, NULL, ss )) return false; bool ret = true; for(int i=0;i<objIds.length();i++) { ads_name ename; if( Acad::eOk != acdbGetAdsName( ename, objIds[i] ) ) { ret = false;; break; } if( RTNORM != acedSSAdd( ename, ss, ss ) ) // 添加到选择集 { ret = false;; break; } } if(ret) { acedSSSetFirst( ss, NULL ); // 高亮选中 } acedSSFree( ss ); // 释放选择集 return ret; }
Acad::ErrorStatus ArxDbgUtils::objIdToEname(const AcDbObjectId& objId, ads_name& ent) { Acad::ErrorStatus es = acdbGetAdsName(ent, objId); ASSERT(es == Acad::eOk); if (es == Acad::eOk) ArxDbgUtils::rxErrorMsg(es); return es; }
void MySSGetFilter::un_high_light(AcDbObjectId id) { if (m_obj_origin_color_map.find(id) == m_obj_origin_color_map.end()) return; ads_name name; if (acdbGetAdsName(name, id) == Acad::eOk) { set_color_index(id, m_obj_origin_color_map[id]); //»Ö¸´ÑÕÉ« acedRedraw(name, 4); m_obj_origin_color_map.erase(id); } }
void MySSGetFilter::high_light(AcDbObjectId id) { if (m_obj_origin_color_map.find(id) != m_obj_origin_color_map.end()) return; ads_name name; if (acdbGetAdsName(name, id) == Acad::eOk) { int orign = set_color_index(id, m_color_index); if (orign >= 0) { acedRedraw(name, 3); m_obj_origin_color_map[id] = orign; } } }
/* * 帮助文档中acedSSSetFirst以及acedSSGetFirst * 要求使用它的命令应该开启ACRX_CMD_USEPICKSET和ACRX_CMD_REDRAW选项 * 但测试结果显示,貌似不使用也可以?????? */ bool ArxEntityHelper::SelectEntity( const AcDbObjectId& objId ) { //acedSSSetFirst(NULL, NULL); if( objId.isNull() ) return false; ads_name ename; if( Acad::eOk != acdbGetAdsName( ename, objId ) ) return false;; ads_name ss; if( RTNORM != acedSSAdd( ename, NULL, ss ) ) return false; // 创建选择集 acedSSSetFirst( ss, NULL ); // 高亮选中 acedSSFree( ss ); // 释放选择集 return true; }
BOOL ArxDbgUiDlgDxf::OnInitDialog() { CAcUiDialog::OnInitDialog(); ads_name ent; acdbGetAdsName(ent, m_objPtr->objectId()); // get entity data the ADS way (as DXF codes) resbuf* apps = acutNewRb(RTSTR); apps->resval.rstring = static_cast<char*>(malloc(10)); strcpy(apps->resval.rstring, _T("*")); resbuf* entdata = acdbEntGetX(ent, apps); acutRelRb(apps); buildColumns(); displayRbChain(entdata); acutRelRb(entdata); return TRUE; }
OarxEmployee *OarxEmployeeService::createEmployee (int id, AcGePoint3d location, int cubeNumber, char *strFirstName, char *strLastName) { OarxEmployee *p =NULL ; AcDbXrecord *pRec =NULL ; AcDbDictionary *pAppDict =NULL ; try { //----- Create the object p =new OarxEmployee ; if ( p == NULL ) throw Acad::eOutOfMemory ; ARXOK ( p->setID (id) ) ; ARXOK ( p->setCubeNumber (cubeNumber) ) ; ARXOK ( p->setFirstName (strFirstName) ) ; ARXOK ( p->setLastName (strLastName) ) ; ARXOK ( p->setCenter (location) ) ; AcDbObjectId id0 ; ARXOK ( postToDatabase (p, id0) ) ; pRec =new AcDbXrecord ; if ( pRec == NULL ) throw Acad::eOutOfMemory ; struct resbuf rb ; rb.restype =330 ; //----- SoftPointerId to the OarxEmployee entity rb.rbnext =NULL ; ARXOK ( acdbGetAdsName (rb.resval.rlname, id0) ) ; ARXOK ( pRec->setFromRbChain (rb) ) ; pRec->setXlateReferences (Adesk::kTrue) ; AcDbObjectId idDict =getAppDictionary () ; if ( idDict == AcDbObjectId::kNull ) throw Acad::eNullObjectId ; ARXOK ( acdbOpenAcDbObject ((AcDbObject *&)pAppDict, idDict, AcDb::kForWrite) ) ; char buffer [33] ; sprintf (buffer, "%d", id) ; ARXOK ( pAppDict->setAt (buffer, pRec, id0) ) ; pRec->close () ; pAppDict->close () ; return (p) ; } catch (const Acad::ErrorStatus es) { if ( p != NULL && p->objectId () == AcDbObjectId::kNull ) delete p ; else p->cancel () ; if ( pRec != NULL && pRec->objectId () == AcDbObjectId::kNull ) delete pRec ; else pRec->cancel () ; if ( pAppDict != NULL ) pAppDict->cancel () ; return (NULL) ; } }