Why Doesn't Component's Material Change?
-
If the faces or another component/group inside a component are already painted, painting the mother component won't affect them.
Painting a component or group only affects faces, components or groups that haven't been painted already.
-
@JQL, thanks for the reply. I don't want to paint the mother component but the child one. I created 2 components made of 3 subcomponets each then I created a mother component with these 2 components, painted a child component, repainted it and it worked. why?
-
paint on faces not containers like groups or components.
edit the child and paint it's faces.
painting on containers only leads to confusion.
-
the purpose of painting the component is to do this change thru the "Material behavior". I created a dropdown list with some materials so I can choose which color the component will have. I cannot select the component faces in the Material behavior but the component itself.
-
I didn't mean to say you wanted to paint the mother component. I said only that, if you change the material of a component but it still shows the original material, this means one of two things:
- Either the faces in the component or subcomponents are already painted with the original material;
- Or it's composed of subgroups/components which are painted with the original material.
-
Ah. It's a DC.
-
@JQL, as you suspected, the faces of the component were already painted. so I selected all the faces and set them to "Default" material, as you can see attached. then I could finally paint the component with one click using the bucket tool.
now there's a new problem. I tried to change the component material with the "Material behavior", it says that the selected material is not in model but, as you can see, it is!
thanks.
-
yes, @Rich O Brien. it is a DC.
-
It's available from the library but it's not applied to anything in the model.
You need material applied to something before you can pick it.
Make a small face a paint it with the material for it to be accessible in the drop down.
The more Materials you need to more little faces you'll need to hide somewhere in your model.
At least that was the the scenario in the past. I haven't stayed current on DC of late
-
but this material has been used in the model, as you can see in the picture. I'm trying to change the side finishing. top and bottom finishing already have this material applied. it was supposed to work, so.
-
The usual 'trick' is to apply the materials which you wish to be used by a DC onto tiny faces [aka 'swatches'] nested inside other objects in the DC [so they are never seen].
Then 'calling' that material by its name from within the DC code should work...
-
What I see in your picture is that the Wood material is selected in the Wood library.
To see what's applied/available you need to set the Materials library to In Model
-
@rich o brien said:
To see what's applied/available you need to set the Materials library to In Model
To see the materials you have in model, you click on the little house icon on the top left of the materials list.
The list will then be called "In Model", not "Wood" nor "Minecraft".
If you don't do what TIG suggests (swatches hidden inside the DC) you will not be able to use that DC in models that don't have those materials.
-
the material "Wood_Floor" is available in Model. so, it was supposed to work.
-
You have not demonstrated that 'Wood_Floor' is available in the model.
Your screen-shots show it in a collection named 'Wood', that is external to the model.
If you click the 'house' icon to show what's in the model is it also there ?As has previously been explained a DC which doesn't have embedded swatches of materials is doomed to fail, because one day the named material will not be found...
-
If you click on a material from the libraries it becomes available in model but not applied to any face.
You should have tiny faces hidden inside your component, each face with a material variation you need on the Dynamic Component, in order to transport the material with the component to wherever it goes.
-
please, take a look at the attached picture and tell me what is missing.
-
material behavoir setting.
-
You tantalizingly never show us everything we need to make a defintive comment...
However, try this...
Open your Material Browser and set 'Wood_Floor' as the current material.
Paint it onto something manually.
Now open the Ruby Console and paste these lines + enter...p Sketchup.active_model.materials.current.display_name p Sketchup.active_model.materials.current.name
It will show the Material's display_name and its name - note that these don't always match, depending on how the material is created / imported...
e.g.
"Wood Floor"
"[Wood Floor]"Since the DC code needs the Material's name, then it fails if the material has been added to the model because the actual name is different from what is displayed - the surrounding [...] shows that.
Importing it whilst it's within the DC may well use another naming convention that will work... try it... -
@TIG, is this your defintive comment? because it didn't work anyway. I opened Ruby Console, run both lines of code that you suggested and noticed that the white color name for both display and current's name are the same: Color_000. exactly the same name I used in the material behavior setting. it didn't change the color to white, which, according to you, it should work. the same happened to the Wood Floor material, which display and current's name are saved as Wood Floor and [Wood Floor], respectively.
Advertisement