/* Extract entities out of a selection set and add them to the * appropriate list. */ int SampleEnts(ads_name selset, ExportMode expMode) { char layer[64], type[16]; long int num, numtot; ads_name ename; ADSResBuf *edata; DLL_LIST list; if (ads_sslength(selset, &numtot) != RTNORM) return 0; for (num = 0; num < numtot; num++) { if (num % 20 == 0) ads_printf("Sampling entities: %ld/%ld\r", num, numtot); if (ads_ssname(selset, num, ename) != RTNORM) return 0; if ((edata = ads_entget(ename)) == NULL) { WarnMsg("SampleEnts: can't get ent: %lx", ename); return 0; } if (strcmp(RBSearch(edata, 0)->resval.rstring, "INSERT") == 0) { if ((list = DllNewList(entListsSetup)) == NULL) { WarnMsg("SampleEnts: can't make block entity list"); return 0; } (void)DllPushF(list, NewADSName(ename), NULL); AddToBlockList(list); ads_relrb(edata); continue; } if (!IsValidEntType(GetEntType(edata, type))) { ads_relrb(edata); continue; } if ((list = DllNewList(entListsSetup)) == NULL) { WarnMsg("SampleEnts: can't make entity list"); ads_relrb(edata); return 0; } (void)DllPushF(list, NewADSName(ename), NULL); switch (expMode) { case EXP_BYCOLOR: if (!AddEntToColorLists(list, GetColorVal(edata, NULL, 0))) return 0; break; case EXP_BYLAYER: if (!GetLayerVal(layer, edata, list, 0)) return 0; if (!AddEntToLayerLists(list, layer)) return 0; break; default: ads_fail("SampleEnts: unknown export mode."); } ads_relrb(edata); } ads_printf("Sampling entities: %ld/%ld\n", num, numtot); return RTNORM; }
void CTwAutoRedraw::Remove() { long Len = 0; ads_sslength( m_ss, &Len ); for ( int i = 0; i < Len; i++ ) { ads_name ent; ads_ssname( m_ss, i, ent ); ads_redraw( ent, 4 ); } ads_ssfree( m_ss ); ads_name_clear( m_ss ); }