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

20/06/2016

Fusion API - Изменение внешнего вида тела

К различным объектам в Fusion 360 можно применять материал и внешний вид. Внешний вид (Appearance)  - это как выглядит объект. Между тем материал (Material) - это физическое свойство объекта. Он имеет вид по умолчанию, например, объект видом "Кожа, выветренная" будет выглядеть следующим образом.

 

Тем не менее, мы можем переопределить его внешний вид другим типом.

 

При этом, внешний вид материала не изменяется. Изменяется только поведение тела.

Соответствующими API являются:

  • BRepBody.material - является объектом материала.

 

  • BrepBody.appearance - объект внешнего вида.

 

Таким образом, если мы осуществим тестирование с помощью следующего кода JavaScript, перед переопределением внешнего вида, он выдаст нам материал "Кожа, выветренная" и внешний вид материала и внешний вид тела оба: "Кожа, выветренная". После переопределения, материал "Кожа, выветривание", внешний вид материала не изменился, но внешний вид тела сейчас "Стекло - густой цвет (синий)".

Код - JavaScript: [Выделить]
  1. function run(context) {
  2.     "use strict";
  3.     if (adsk.debug === true) {
  4.         /*jslint debug: true*/
  5.         debugger;
  6.         /*jslint debug: false*/
  7.     }
  8.  
  9.     var ui;
  10.     try {
  11.         var app = adsk.core.Application.get();
  12.         ui = app.userInterface;
  13.  
  14.         var product = app.activeProduct;
  15.         var design = adsk.fusion.Design(product);
  16.        
  17.         //Получить первое тело корневого компонента
  18.         var rootComp = design.rootComponent;
  19.         var body = rootComp.bRepBodies.item(0);
  20.        
  21.         //Материал тела
  22.         var bodyM = body.material;
  23.         ui.messageBox('Материал тела: ' + bodyM.name);       
  24.         //appearance with the material
  25.         var MaterialA =bodyM.appearance;
  26.         ui.messageBox('Материал внешнего вида: ' + MaterialA.name);
  27.        
  28.         //Внешний вид тела
  29.         var BodyA = body.appearance;
  30.         ui.messageBox('body appearance is: ' + BodyA.name);
  31.     }
  32.     catch (e) {
  33.         if (ui) {
  34.             ui.messageBox('Failed : ' + (e.description ? e.description : e));
  35.         }
  36.     }    
  37.     adsk.terminate();
  38. }


Чтобы изменить материал/внешний вид, необходимо, вначале получить материал/внешний вид из библиотеки, и установить их в object.material или object.appearance.

 

 

Код - JavaScript: [Выделить]
  1. function run(context) {
  2.  
  3.     "use strict";
  4.    
  5.     if (adsk.debug === true) {
  6.         /*jslint debug: true*/
  7.         debugger;
  8.         /*jslint debug: false*/
  9.     }
  10.  
  11.     var ui;
  12.     try {
  13.         var app = adsk.core.Application.get();
  14.         ui = app.userInterface;
  15.  
  16.         var product = app.activeProduct;
  17.         var design = adsk.fusion.Design(product);
  18.        
  19.         //Получить первое тело корневого компонента
  20.         var rootComp = design.rootComponent;
  21.         var body = rootComp.bRepBodies.item(0);
  22.        
  23.         //Материал тела
  24.         var bodyM = body.material;
  25.         ui.messageBox('Материла тела: ' + bodyM.name);       
  26.         //Поведение с материалом
  27.         var MaterialA =bodyM.appearance;
  28.         ui.messageBox('Поведение тела: ' + MaterialA.name);
  29.        
  30.         //Поведение тела
  31.         var BodyA = body.appearance;
  32.         ui.messageBox('Поведение тела: ' + BodyA.name);        
  33.        
  34.         //Получить библиотеку материалов
  35.         var mLibs = app.materialLibraries;               
  36.         var mLib = mLibs.itemByName("Fusion 360 Material Library");        
  37.         //Получить один материал из библиотеки
  38.         var mOne = mLib.materials.itemByName("ABS Plastic");
  39.         //Изменить материал тела
  40.         body.material = mOne;
  41.         app.activeViewport.refresh();
  42.         ui.messageBox(Посмотрите на экран после изменения материала: ');       
  43.        
  44.         //Получить библиотеку внешнего вида
  45.         var appearanceLib1 = mLibs.itemByName("Fusion 360 Appearance Library");           
  46.          //Получить один материл из одной библиотеки
  47.         var aOne = appearanceLib1.appearances.itemByName("Fabric (Green)");
  48.         //Изменить внешний вид тела
  49.         body.appearance = aOne;
  50.         app.activeViewport.refresh(); 
  51.         ui.messageBox('Посмотрите на экран после изменения внешнего вида: ');       
  52.       
  53.     }
  54.     catch (e) {
  55.         if (ui) {
  56.             ui.messageBox('Failed : ' + (e.description ? e.description : e));
  57.         }
  58.     }   
  59.    adsk.terminate();
  60. }

 

Источник: http://adndevblog.typepad.com/manufacturing/2016/04/fusion-api-change-appearance-of-body.html

Автор перевода: Дмитрий Емельянов

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

Опубликовано 20.06.2016