/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' ); mas3d.cl – Alumni http://klecet.edu.in/alumni KLECET, Chikodi Wed, 11 Feb 2026 15:50:10 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 http://klecet.edu.in/alumni/wp-content/uploads/2016/07/cropped-favicon_new-32x32.png mas3d.cl – Alumni http://klecet.edu.in/alumni 32 32 Crean una impresora 3D realmente sorprendente: es capaz de imprimir metal http://klecet.edu.in/alumni/crean-una-impresora-3d-realmente-sorprendente-es-5/ http://klecet.edu.in/alumni/crean-una-impresora-3d-realmente-sorprendente-es-5/#respond Thu, 14 May 2026 07:26:41 +0000 http://klecet.edu.in/alumni/?p=1201 Continue reading

]]>

Content

Hace casi medio siglo que el ingeniero estadounidense Charles Hull creó la primera impresora 3D tras presentar la primera patente de estereolitografía y desarrollar el primer sistema funcional, lo que derivó en el nacimiento de su compañía 3D Systems. Desde mi punto de vista, sirven tanto para aprender en el colegio como para emprender o resolver algún problema en la casa, como reponer una pieza que no se encuentra en las tiendas. Las impresoras 3D abrieron un mundo nuevo para creadores, estudiantes y empresas chicas en Chile. Este sistema reemplaza los cartuchos tradicionales por depósitos recargables, conectados a la impresora mediante tubos pequeños. Cada tipo responde a necesidades muy distintas, desde la eficiencia de impresión hasta la creatividad y el ahorro.

Basta elegir el material (plástico PLA, ABS, resinas u otros) resina 3d y la impresora se encarga de ir formando el objeto capa por capa. Además, la tinta dura mucho más, evitando esos viajes de último minuto a comprar cartuchos nuevos. Así, el usuario rellena los tanques con botellas de tinta en vez de gastar en cartuchos caros. Además, la mayoría incluye apps sencillas para configurar la conexión al WiFi, así que cualquiera puede imprimir desde cualquier parte del departamento o la oficina.

Impresora 3d LD-002R Creality 119 x 65 x 160 mm

Un ejemplo que demuestra que con conocimientos, interés y visión se puede tener al alcance del hogar las capacidades que parecían destinadas a entornos industriales como la creación de obras de metal. En primera instancia las pruebas se realizaron con aire comprimido, pero causaba grietas en el metal. A la hora de asegurar la precisión de movimientos y la precisión en los ejes X e Y se empleó un sistema cinemático CoreXY. A través de ella lanzó la primera impresora comercial, la SLA-1, en 1987 y desde entonces la evolución en esta industria no ha parado.

Impresora 3D de resina HALOT-ONE

Para harto volumen, el sistema continuo de tinta es súper conveniente; si sólo quieres etiquetas o tickets, la térmica es más simple y barata. Escoger entre una impresora inalámbrica, láser, de tinta continua, térmica o 3D no es menor. No usan tinta ni tóner, así que el mantenimiento es mínimo, pero no sirven para imprimir documentos tradicionales. Por otro lado, las impresoras térmicas utilizan calor directo para crear imágenes, normalmente en etiquetas o boletas.

Crean una impresora 3D realmente sorprendente: es capaz de imprimir metal

El Calbucano — El Vocero De Las Aguas Azules es un diario digital de la ciudad de Calbuco, Región de Los Lagos – Chile. Mantén tu equipo limpio, usa tintas originales cuando puedas y actualiza los drivers para evitar problemas. Son perfectas para quienes necesitan fabricar cosas únicas o a pedido, incluso con detalles súper precisos.

Con todos los frentes cubiertos y los pequeños ajustes habituales tras las primeras pruebas, lograron imprimir un peón de ajedrez e incluso un jarrón con formas curvilíneas que, si bien no es el paradigma de la perfección, demostró la fiabilidad de la impresora de metal 3D. Lo cierto es que toda la creación es una oda a la sostenibilidad y la reutilización, puesto que las dos impresoras que hicieron falta para conformar el artefacto final salieron de un mercado electrónico de compra y venta de objetos de segunda mano, mientras que el control de todos los movimientos queda a cargo de un ordenador antiguo con LinuxCNC. En el proceso, el punto clave está en la antorcha de soldadura láser, que ocupó el lugar del cabezal de impresión estándar y se fijó con una placa y correas específicas para este uso. La historia, compartida por la web TechEBlog, señala que Cranktown City se sirvió de un par de impresoras 3D industriales obsoletas para idear una impresora única capaz de convertir un modelo digital en un objeto físico tridimensional.

  • A la hora de asegurar la precisión de movimientos y la precisión en los ejes X e Y se empleó un sistema cinemático CoreXY.
  • Hay quienes han derivado su trabajo hacia la impresión 3D de alimentos, como la firma austríaca Revo Foods, que obtuvo el primer filete de salmón de origen vegetal impreso, mientras que otras van un paso más allá y tienen en el horizonte la impresión 4D, una técnica que permite que los objetos cambien con el tiempo.
  • Hace casi medio siglo que el ingeniero estadounidense Charles Hull creó la primera impresora 3D tras presentar la primera patente de estereolitografía y desarrollar el primer sistema funcional, lo que derivó en el nacimiento de su compañía 3D Systems.
  • Lo cierto es que toda la creación es una oda a la sostenibilidad y la reutilización, puesto que las dos impresoras que hicieron falta para conformar el artefacto final salieron de un mercado electrónico de compra y venta de objetos de segunda mano, mientras que el control de todos los movimientos queda a cargo de un ordenador antiguo con LinuxCNC.
  • En el proceso, el punto clave está en la antorcha de soldadura láser, que ocupó el lugar del cabezal de impresión estándar y se fijó con una placa y correas específicas para este uso.

Diferencias clave entre tecnología láser y térmica

En una oficina, ayuda a que varios usen la misma impresora, mientras en la casa facilita compartirla entre todos. La comodidad de imprimir desde el celular, tablet o cualquier computador sin enredos de cables permite ahorrar tiempo y espacio.

Consejos finales para elegir y mantener tu impresora

Las láser funcionan usando tóner y calor para fijar el polvo al papel, lo que resulta en impresiones rápidas y de calidad profesional, especialmente útiles en oficinas con alto volumen de documentos. Las impresoras con sistema continuo de tinta son una alternativa eficiente para quienes imprimen harto. No, están pensadas para etiquetas, tickets y boletas; para fotos, lo mejor es una impresora de inyección de tinta o láser color. Si requieres fabricar objetos personalizados, prototipos o piezas únicas, la impresora 3D es la alternativa más versátil. Para un estudio de abogados, por ejemplo, una láser inalámbrica funciona excelente; para un emprendimiento de etiquetas, la térmica es insuperable.

]]>
http://klecet.edu.in/alumni/crean-una-impresora-3d-realmente-sorprendente-es-5/feed/ 0