Skip to content

Material

let model = await SketchUpApi.getActiveModel();
await model.performOperation(async operation => {
const materialRef = operation.createMaterial('Some Material');
let material = await operation.entityForRef(materialRef);
console.log('Before name', material.name);
operation.materialSetName(material, 'Some new Material');
material = await material.refresh();
console.log('After name', material.name);
}, 'Setting name for a material');
let model = await SketchUpApi.getActiveModel();
await model.performOperation(async operation => {
const materialRef = operation.createMaterial('Some Material');
let material = await operation.entityForRef(materialRef);
console.log('Before color', material.color);
operation.materialSetColor(material, new SketchUpApi.Color(32, 16, 8, 4));
material = await material.refresh();
console.log('After color', material.color);
}, 'Setting color for a material');
let model = await SketchUpApi.getActiveModel();
await model.performOperation(async operation => {
const materialRef = operation.createMaterial('Some Material');
let material = await operation.entityForRef(materialRef);
console.log('Before alpha', material.alpha);
operation.materialSetAlpha(material, 0.6);
material = await material.refresh();
console.log('After alpha', material.alpha);
}, 'Setting Alpha for a material');
let model = await SketchUpApi.getActiveModel();
await model.performOperation(async operation => {
const materialRef = operation.createMaterial('Some Material');
operation.materialSetTextureImageRep(materialRef,
{width:1, height:1, bitsPerPixel:32, rowPadding:0, imageData:'\x01\x02\x03\x04'});
let material = await operation.entityForRef(materialRef);
console.log(JSON.parse(JSON.stringify(material.color)));
}, 'Setting a 32 image rep for a material');
let model = await SketchUpApi.getActiveModel();
let jpeg =
'/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAACAAIDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAdEAABBAIDAAAAAAAAAAAAAAABAAIGBwQFISNj/8QAFAEBAAAAAAAAAAAAAAAAAAAACP/EABwRAAEDBQAAAAAAAAAAAAAAAAABAgQFMjVzsv/aAAwDAQACEQMRAD8AtmA0dSjoLHHOp+EknU4ZJMfxOelvmiIjk+5RRUPFxtbOUP/Z';
await model.performOperation(async operation => {
const materialRef = operation.createMaterial('Material with base64 encoded jpeg');
operation.materialSetTextureDataBase64(materialRef, jpeg);
const material = await operation.entityForRef(materialRef);
console.log(material.color);
}, 'Setting a texture using base64 encoded jpeg');
let model = await SketchUpApi.getActiveModel();
let image = new Image(1, 1);
image.src =
'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAACAAIDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAdEAABBAIDAAAAAAAAAAAAAAABAAIGBwQFISNj/8QAFAEBAAAAAAAAAAAAAAAAAAAACP/EABwRAAEDBQAAAAAAAAAAAAAAAAABAgQFMjVzsv/aAAwDAQACEQMRAD8AtmA0dSjoLHHOp+EknU4ZJMfxOelvmiIjk+5RRUPFxtbOUP/Z';
await new Promise((resolve, reject) => {
image.onload = resolve;
image.onabort = reject;
});
await model.performOperation(async operation => {
const materialRef = operation.createMaterial('Material with texture from an Image element');
operation.materialSetTextureFromHtmlImage(materialRef, image, 'image/jpeg');
const material = await operation.entityForRef(materialRef);
console.log(material.color);
}, 'Setting a texture using an Image element');
let model = await SketchUpApi.getActiveModel();
let materials = await model.getMaterials();
let material = materials.values.find((mat) => mat.texture !== undefined);
if (material === undefined) {
throw new Error('No material with texture in the model');
}
let skmDataUrl = await material.getSkm();
console.log(skmDataUrl.length);
let model = await SketchUpApi.getActiveModel();
let materials = await model.getMaterials();
let material = materials.values.find((mat) => mat.texture !== undefined);
if (material === undefined) {
throw new Error('No material with texture in the model');
}
let textureDataUrl = await material.texture.getImage('png', {colorize: true});
window.open(textureDataUrl, '_blank', 'noopener');
let model = await SketchUpApi.getActiveModel();
let material = (await model.getMaterials()).values[0];
let thumbnailDataUrl = await material.exportThumbnail('png', {maxSize: 64});
window.open(thumbnailDataUrl, '_blank', 'noopener');