I'll Back up and Share some nice scripts that come about messing with ChatGPT - This will create a plane from the clipboard (Windows). Pretty Handy for modeling from reference. It can run from the script editor or shelf:
import maya.cmds as cmds from PIL import ImageGrab from PIL import Image import tempfile import time def create_unique_poly_plane(): global last_image_hash try: # Capture the image from the clipboard using PIL (Pillow) clipboard_image = ImageGrab.grabclipboard() if clipboard_image: # Generate a hash of the clipboard image to detect new images current_image_hash = hash(clipboard_image.tobytes()) # Check if the image is new if current_image_hash != last_image_hash: last_image_hash = current_image_hash # Get image dimensions image_width = clipboard_image.width image_height = clipboard_image.height # Unique naming timestamp = int(time.time()) plane_name = f"Clipboard_Poly_Plane_{timestamp}" texture_name = f"Clipboard_Texture_{timestamp}" # Create a polyPlane in Maya with the same dimensions poly_plane = cmds.polyPlane( width=image_width / 100.0, # Convert to Maya units (cm) height=image_height / 100.0, # Convert to Maya units (cm) subdivisionsWidth=1, subdivisionsHeight=1, name=plane_name ) # Save the clipboard image to a temporary file temp_image_path = tempfile.gettempdir() + f"/{texture_name}.png" clipboard_image.save(temp_image_path, "PNG") # Setup shader and texture setup_shader(poly_plane[0], temp_image_path, texture_name) print(f"PolyPlane '{plane_name}' created with new clipboard image as a texture!") else: print("Clipboard image is the same as the last one processed.") else: print("No image found on the clipboard.") except Exception as e: print("An error occurred:", str(e)) def setup_shader(poly_plane, image_path, texture_name): # Open Hypershade and create a shader network cmds.HypershadeWindow() lambert_shader = cmds.shadingNode('lambert', asShader=True, name=f"Lambert_{texture_name}") shading_group = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=f"SG_{texture_name}") file_texture = cmds.shadingNode('file', asTexture=True, name=texture_name) # Connect file texture to Lambert shader cmds.connectAttr(file_texture + '.outColor', lambert_shader + '.color') cmds.connectAttr(lambert_shader + '.outColor', shading_group + '.surfaceShader') # Set the file texture path cmds.setAttr(file_texture + '.fileTextureName', image_path, type="string") # Assign the shader to the polyPlane cmds.select(poly_plane) cmds.hyperShade(assign=lambert_shader) # Initialize the last image hash last_image_hash = None # Example usage: Call this function each time you want to create a polyPlane from a new clipboard image create_unique_poly_plane()