Article | 41021146 |
Type | HowTo |
Product | Engine |
Version | 4.0.2.1021 |
Date Added | 6/9/2003 |
Submitted by | Eric |
Keywords |
How can I use CreateFilter method in VC++?
//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();
}