Product : Engine, Version : 4.0.2.1021, ArticleID : 41021146

HowTo : How can I use CreateFilter method in VC++?

Article41021146
TypeHowTo
ProductEngine
Version4.0.2.1021
Date Added6/9/2003
Submitted byEric
Keywords

Subject

How can I use CreateFilter method in VC++?

Summary

How can I use CreateFilter method in VC++?

Solution

//select all lines,arc,text of layer 0 and/or WALL and change their color to 
red
CString str;
long i = 0;
COleSafeArray arrayLayer;
arrayLayer.CreateOneDim(VT_BSTR,2);
i=0;
str = "0";
arrayLayer.PutElement(&i,str.AllocSysString());
i++;
str = "WALL";
arrayLayer.PutElement(&i,str.AllocSysString());

COleSafeArray arrayType;
arrayType.CreateOneDim(VT_BSTR,3);
i=0;
str = "VDLINE";
arrayType.PutElement(&i,str.AllocSysString());
i++;
str = "VDARC";
arrayType.PutElement(&i,str.AllocSysString());
i++;
str = "VDTEXT";
arrayType.PutElement(&i,str.AllocSysString());

CvdFilterObject filter = m_Vdraw.GetActiveDocument().GetSelections().CreateFilter(arrayType,arrayLayer);
//Filters the database with the above properties and creates a new SelectionSet
// by the name "FILTER1" with the objects that have been asked. If "FILTER1" had
// entities before then this SelectionSet is reseted.
CvdSelection mySelSet = m_Vdraw.GetActiveDocument().GetSelections().FilterSelect("FILTER1", filter);
CvdFigure fig = mySelSet.GetStart();
while(fig.m_lpDispatch){
 fig.SetPenColor(1);
 fig.Update();
 m_Vdraw.DrawEntity(fig,0);
 fig = mySelSet.GetNext();
}