Example #1
0
 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;
		}
	}
}
Example #5
0
/*
 * 帮助文档中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;
}
Example #7
0
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) ;
	}
}