Exemplo n.º 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;
}
Exemplo n.º 2
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;
}
Exemplo n.º 3
0
CTwAutoRedraw::CTwAutoRedraw()
{
	ads_name_clear( m_ss );
	acedSSAdd( NULL, NULL, m_ss );
}
Exemplo n.º 4
0
////////////////////////////////////////////////////////////////////////////////
// drawMaterial()
//
// Draws a cube of the dimension "dCubeSize" at the position "corner", draws the
// name of the material "sMaterial" under the cube, and applies the material
// "sMaterial" to the cube.
//
// Returns AvRetNorm unless it encounters an error in acdbEntLast(), in
// which case it returns AvRetError.
//
static AvErrorCode
drawMaterial(ads_point corner, double dCubeSize, 
             char *sMaterial, char *sLibPath)
{
    AvErrorCode    retval;
    AvMatlibParam  libParam;
    AvRmatParam    rmatParam;
    ads_name       entity,
                   selectionSet;

    drawCube(corner, dCubeSize);

    // Get the cube we just created
    //
    if (acdbEntLast(entity) != RTNORM) 
    {
        acdbFail("acdbEntLast failed\n");
        return AvRetError;
    }

    acedSSAdd(entity, NULL, selectionSet);

    drawMaterialName(corner, dCubeSize, sMaterial);

    // Retrieve the material from the library
    //
    libParam.mode = AvMatlibImport;
    libParam.libraryName = sLibPath;
    libParam.materialName = sMaterial;
    libParam.flags = AvMatlibMaterial | AvMatlibLibrary;
    if((retval = av_matlib(&libParam)) != AvRetNorm) 
    {
        acutPrintf("error: %s importing %s\n",
                   av_errorstr(retval),
                   sMaterial);
    }
    else
    {
        // Apply the material to the drawing
        //
        rmatParam.mode = AvRmatAttach;
        rmatParam.selectionSet[0] = selectionSet[0];
        rmatParam.selectionSet[1] = selectionSet[1];
        rmatParam.name = sMaterial;
        rmatParam.flags = AvRmatSelSet | AvRmatName;
        if((retval = av_rmat(&rmatParam)) != AvRetNorm) 
        {
            acutPrintf("error: %s attaching %s\n",
                       av_errorstr(retval),
                       sMaterial);
        } 
        else 
        {
            acutPrintf("attached material %s\n",
                        sMaterial);
        }
    }
    
    acedSSFree(selectionSet);

    return AvRetNorm;
}