![]() |
【转帖】objectarx&dummies习题(二)答案
objectarx&dummies习题(二)答案
objectarx&dummies习题(二)答案 lab 2 - solved hello, hope you have successfully found a solution for this lab. i will present my solution which does not mean that it is the best solution. it is just my solution. after follow the lab instructions i have successfully created the project and the dialog (derived from acuidialog). i have created the proposed layout with the combo and select button. inside the dialog class header, i have added the following: ads_name m_sset; this will store my selection set. next, i have attached an event to my select button which fires the following function: begineditorcommand(); // issue selection acedssfree(m_sset); int err = acedssget(null, null, null, null, m_sset); if (err != rtnorm) { messagebox("selection error.","dlgcolor",mb_iconexclamation); } long length = 0; acedsslength(m_sset, &length); m_btn_apply.enablewindow(length > 0); completeeditorcommand(); this will request the user to perform a selection set at autocad screen. note that we need to hide the dialog and switch back when finished. after that, we will need to perform the modifications walking through the selection set, get each entity's objectid, open it and then change the color according to the selected combo item. so, the event fired when clicking on the apply button will be: cacuidialog::onok(); // retrieve selected color in combobox accmcolor clr; m_color.getcurrentitemcolor(clr); long i, length; ads_name ename; acdbobjectid entid; acedsslength(m_sset, &length); // traverse selected entities acdbtransactionmanager->starttransaction(); for (i = 0; i < length; i++) { // get each entity's objectid acedssname(m_sset, i, ename); acdbgetobjectid(entid, ename); // open the entity and set its color acdbentity* pent = null; if (acdbtransactionmanager->getobject((acdbobject*&)pent, entid,acdb::kforwrite) == acad::eok) { pent->setcolor(clr); } // don't need to close because we're using transaction } acdbtransactionmanager->endtransaction(); acedssfree(m_sset); that's it! hope you enjoy this sample. |
所有的时间均为北京时间。 现在的时间是 12:44 AM. |