ADN Open CIS
Сообщество программистов Autodesk в СНГ

16/08/2013

Задание примитиву свойства прозрачности используя метод setAlphaPercent

Это пример на ObjectARX задающий примитиву прозрачность, используя метод "setAlphaPercent". Этот метод можно использовать вместо метода "setAlpha" если вы хотите задать альфа-значение в процентах.

Код - C++: [Выделить]
  1. ads_name ename;
  2. ads_point pickPt;
  3.  
  4. int rc = acedEntSel(_T("\nВыберите объект: "), ename, pickPt);
  5. if (rc != RTNORM)
  6.     return;
  7.  
  8. AcDbObjectId entId = AcDbObjectId::kNull;
  9. acdbGetObjectId(entId, ename);
  10.  
  11. AcDbEntity *pEntity = NULL;
  12. Acad::ErrorStatus es
  13.         = acdbOpenAcDbEntity(pEntity, entId, AcDb::kForRead);
  14.  
  15. AcCmTransparency trans = pEntity->transparency();
  16.  
  17. Adesk::UInt8 value = trans.alpha();
  18. double percentage = value * 100.0 / 255.0;
  19. acutPrintf(_T("Значение прозрачности примитива : %d В процентах : %lf"),
  20.                                            value, percentage);
  21.  
  22. pEntity->upgradeOpen();
  23.  
  24. int nAlphaPercent = 1;
  25. acedInitGet(RSG_NONULL + RSG_NONEG, NULL);
  26.  
  27. // 100 % alpha – Совершенно непрозрачный
  28. //   0 % alpha – Полностью прозрачный
  29. rc = acedGetInt(_T("\nУкажите процент прозрачности (от 0 до 100):"), &nAlphaPercent);
  30. if (rc != RTNORM)
  31.     return;
  32.  
  33. AcCmTransparency transparency1;
  34. transparency1.setAlphaPercent(1.0 - (nAlphaPercent * 0.01));
  35.  
  36. // Чтобы убедиться, что прозрачность изменилась
  37. pEntity->setColorIndex (pEntity->colorIndex());
  38.  
  39. pEntity->setTransparency(transparency1);
  40.  
  41. pEntity->close();
  42. acDocManager->sendStringToExecute(
  43.                     acDocManager->curDocument(), _T("_Regen "));

 

Примечание переводчика: Вместо использования асинхронного метода sendStringToExecute для запуска команды РЕГЕН (REGEN)  я бы использовал функцию ads_regen(), которая выполняет регенерацию синхронно.

 

Источник: http://adndevblog.typepad.com/autocad/2013/02/setting-entity-transparency-using-setalphapercent.html

 

 

Обсуждение: http://adn-cis.org/forum/index.php?topic=183

Опубликовано 16.08.2013
Отредактировано 21.08.2013 в 23:25:54