• Login
sketchucation logo sketchucation
  • Login
๐Ÿค‘ SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

Why Doesn't Component's Material Change?

Scheduled Pinned Locked Moved Dynamic Components
sketchup
26 Posts 4 Posters 12.1k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    SketchUcationKid
    last edited by 2 Mar 2017, 20:05

    @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.

    1 Reply Last reply Reply Quote 0
    • T Offline
      TIG Moderator
      last edited by 2 Mar 2017, 20:53

      You misconstrue what I said.
      This IS my definitive comment !

      I simply want you to set 'Wood_Floor' as the current [applied] material in the model and then get its 'display_name' and 'name' - which could be different...
      You then confirm that they are indeed different...

      But somehow deny this is true ??
      But it is !

      Also I did not ask you to do anything with any other material, and I did not suggest that somehow my code snippets would change anything in the model - they were just there to report the facts !

      Do you not see my simple point ?

      Even if 'Wood_Floor' is in use in the model, then its 'displayed name' and its actual 'data-base name' might vary, so then your DC code could fail because it can't find the material 'by name' as it's not what shows in the Materials Browser dialog...

      BUT, if you were to include the required material applied onto a swatch hidden within your DC, then you have a much better chance that it will be recognized by name and therefore used without an error...

      TIG

      1 Reply Last reply Reply Quote 0
      • J Offline
        JQL
        last edited by 2 Mar 2017, 22:11

        Hey Kid. Do both these things:

        1. Don't make Tig loose his coolness, we need him to keep cool as ever ๐Ÿ˜‰.
        2. Do the following, step by step:
        • Edit the component you are making;
        • Draw a rectangle for each material you will need that component to have;
        • Paint each rectangle with the corresponding material;
        • Go to Material browser and hit the little house icon;
        • Above the list, to the right there's a blue and white arrow icon pointing right which read details when you hover over it. Click it and choose List View;
        • This list now shows the names of the materials you used in model;
        • It might also list a lot of materials you are not using but clicked on so they got into the model;
        • Go to the details arrow again and choose the purge option;
        • The material names you can use in the DC component are somewhere within the resulting list.
        • Never erase the squares you drew initially;
        • If you need to hide them from view, then shrink them as small as you wish, and hide them inside the model. (you can really hide the objects too by selecting them all, right clicking on one of them and use the hide command.)
        • These little squares are the swatches Tig told you about.

        www.casca.pt
        Visit us on facebook!

        1 Reply Last reply Reply Quote 0
        • S Offline
          SketchUcationKid
          last edited by 2 Mar 2017, 22:21

          @TIG, I did not misconstrue what you said. if I made you to understand so, l apologize.
          I have another DC which has basically the same structure (with mother component and subcomponents) and it is working pretty fine. I can change its material thru the dropdown list that I put available on the component options screen. and I didn't need to do all those changes to make it work.

          about the white color, what I wanted to say is that it is saved in the system as Color_000, both display and current name. I set the material behavior to the same Color_000, which was supposed to change the component color to white but it didn't happen, unsuccessfully. on the other hand, when I use the bucket tool to paint the component (not the faces), it works.

          1 Reply Last reply Reply Quote 0
          • S Offline
            SketchUcationKid
            last edited by 3 Mar 2017, 01:39

            @JQL, all of those steps were already taken by me. if you take a look at the attached pictures, you'll be able to see those "little squares", that you mentioned, placed right above the cabinet. I believe that I'm dealing with one more of many bugs found in SketchUp.

            I don't know what really is doing him lose his "coolness" but this chat has more to do with an air conditioner machine ๐Ÿ˜‰ .

            1 Reply Last reply Reply Quote 0
            • T Offline
              TIG Moderator
              last edited by 3 Mar 2017, 13:20

              A material has to have been used in the model, simply making it current is not enough.
              Perhaps this is the Color_000 issue ?
              http://sketchucation.com/forums/viewtopic.php?f=180%26amp;t=33847

              As has been spelled out several times, adding small painted faces within some part of the DC is the sure way of having these available to use in the DC, however there is this potential difference between the material .name and its .display_name
              The enclosing [...] etc show this.
              Try using those for the material name, rather than the display name.
              The code snippet I gave allows you to get any material's dual names.
              I understand that the [...] indicate the material was at some time loaded into a model and not created from scratch.
              It has been like that since v6.0

              Link Preview Image
              Class: Sketchup::Material

              The Sketchup::Material class represents a Sketchup::Texture or Sketchup::Color that can be applied to Sketchup::Drawingelements.

              favicon

              SketchUp Ruby API Documentation (ruby.sketchup.com)

              Since you are shipping the materials you can choose the re-name them using the >=v8.0 method:
              material.name="some_name"

              A quick way to do this could be this snippet...
              Sketchup.active_model.materials.each{|mat| p n=mat.name; p d=mat.display_name; mat.name=d; p mat.name }
              This processes all of the materials currently used in the model and sets the mat's name to the display_name - thereby sidestepping any difference between the two...
              It prints each material's name, display_name and final name - this safety-net is in case the new name is already taken by another material, in which case it'll get a numerical suffix added...

              This has been cover ages ago by thomthom, here... some of his points have already been added to the API notes...
              http://www.thomthom.net/thoughts/2012/03/the-secrets-of-sketchups-materials/

              TIG

              1 Reply Last reply Reply Quote 0
              • 1
              • 2
              • 2 / 2
              2 / 2
              • First post
                21/26
                Last post
              Buy SketchPlus
              Buy SUbD
              Buy WrapR
              Buy eBook
              Buy Modelur
              Buy Vertex Tools
              Buy SketchCuisine
              Buy FormFonts

              Advertisement