![]() |
【转帖】he Problem About Select Objects By Layer
the problem about select objects by layer
the problem about select objects by layer hi,all in dwgdirect 2.20,select objects by layer: code: bool odexeditorobject::onmouseleftbuttonclick(unsigned int nflags, int x, int y, odexeditorobject* pdragcallback,bool bselectenable) { try { odgepoint3d pt = toeyetoworld(x, y); if( hasselection() ) { if( m_pgrippoints.get() && m_pgrippoints->gripedit(m_pcmdctx, pt) ) return true; if(pdragcallback) { oddbselectionsetptr pwsset = workingsset(); oddbselectionsetptr psset = oddbselectionset::select(activevpid(), 1, &pt); oddbselectionsetiteratorptr piter = psset->newiterator(); while(!piter->done()) { if(pwsset->ismember(piter->objectid())) { piter.release(); break; } piter->next(); } if(piter.isnull()) { // if(pdragcallback->begindragcallback(pt)) return true; } } } oddbuserio* pio = m_pcmdctx->dbuserio(); pio->setlastpoint(pt); pio->setpickfirst(0); int options = oded::kselpicklastpoint| oded::kselsinglepass| oded::kselleavehighlighted; setbit(options, oded::kselremove, getbit(nflags, kshiftisdown)); oddbselectionsetptr psset = pio->select(odstring::kempty, options, workingsset()); odgsview* pview = activeview(); if(m_pgrippoints.get()) pview->erase(m_pgrippoints); if ( psset->numentities()>0 ) { m_pgrippoints = odrxcreateobject( dd_t("grippointscloning") ); if ( m_pgrippoints.get() ) { oddbselectionsetiteratorptr piter = psset->newiterator(); while ( !piter->done() ) { // messagebox(null,oddbentity::cast(piter->objectid().openobject())->layer(),_t("aaa"),mb_ok); if (oddbentity::cast(piter->objectid().openobject())->layer().find(dd_t("mackup"))!=-1 || oddbentity::cast(piter->objectid().openobject())->layer()=="") { if (bselectenable) { m_pgrippoints->addentity( piter->objectid() ); } } piter->next(); } pview->add(m_pgrippoints, 0); } } setworkingsset(psset); } catch(const odedcancel&) { } catch(const oderror& e) { m_pcmdctx->userio()->putstring(e.description()); return false; } return true; } but in dwgdirect 2.3.1,the select object in exgripmanager.cpp,how can i implement the function? please help me! best regards in 2.4 the code below selects block references on layer "thelayertoselect": code: odstring inserttype("insert"); odresbufptr rb = odresbuf::newrb(0, inserttype); odstring layername ("thelayertoselect"); rb->setnext(odresbuf::newrb(8, layername)); oddbselectionsetptr psset = oddbselectionset::select(pdb, rb); int count = psset->numentities(); and this code - all entities on the layer: code: odresbufptr rb; odstring layername ("thelayertoselect"); rb = odresbuf::newrb(8, layername); oddbselectionsetptr psset = oddbselectionset::select(pdb, rb); int count = psset->numentities(); the rb chain supplied specifies the dxf group codes that must match for selected entities. sergey slezkin |
| 所有的时间均为北京时间。 现在的时间是 03:11 AM. |