14日間の返品・返金サービス
登録して75000円のクーポンを受け取る
1万円以上のご注文で送料無料
store.jp@creality.com
5つ星評価でギフトカードをプレゼント
詳しく見てみましょう
-
-
準工業用大型フォーマット
CR-M4は450*450*470mmの巨大な印刷ボリュームを誇っています。これは、大きなモデルを作成するために少なくまたはほとんどポストプロセッシングを行わずに、または一度により多くの部品を一括印刷するための本物の作業用ツールです。
-
-
多くのプリンターを使用してプリントファームを開始します
多くのCR-M4プリンターがオンラインになっていると、Creality PrintまたはCreality Cloud Webからの単一のコマンドでプリンターが同じモデルを生産する、大量生産の3Dプリントファームを簡単に始めることができます。
-
いつでも便利な印刷方法
LAN接続を使用すると、ユーザーはCreality Printを使用してLAN内の任意のPCから印刷できます。インターネット接続を使用すると、ユーザーはCreality CloudアプリまたはWebからリモートで印刷および監視できます。
-
-
多彩なフィラメントで大胆なアイデアを実現します
多彩なフィラメントで大胆なアイデアを実現します。優れたオールラウンドのプリントヘッドにより、PLA、PA(ナイロン)、耐熱性のあるABS、PLA-Wood、PLA-CF、柔軟なTPU、およびPETGで印刷する自由が得られます。
-
本物の25ポイントの自動調整
CR Touchによる25ポイントのプロービングによる完全自動レベリングで、ノズルとビルドサーフェスの間の距離を迅速にキャリブレーションし、0.05mmの精度でZオフセットを設定します。
-
柔軟なPC表面と高速加熱ベッド
4層のビルドプラットフォーム。PCコーティングは強力な粘着力を提供します。しなやかなスプリングスチールシートは大きなモデルを簡単に取り外し、長期間の使用後も変形しません。磁気ベースと2本のピンが素早い取り付けを可能にします。
-
剛性のあるZ軸での揺れを軽減
「デュアルZ軸はガントリーのたわみやZ-ウォブリングを抑制します。2本のサポートロッドと共に、トップフレームを安定させるための剛性な三角形が形成されます。各Z軸は独立したモーターによって駆動され、高いモデルの品質を底から頂点まで確保します。」
-
CR-M4 3D プリンター
エクストルーダータイプ: "Sprite" デュアルギア直接駆動エクストルーダー
ノズル直径: 標準0.4mm(0.6/0.8mmと互換性あり)
ディスプレイスクリーン: 4.3インチカラータッチスクリーン
メインボード: 統合型32ビットサイレントメインボード
スライシングソフトウェア: Creality Print、Creality Slicer、Cura
サポートされるフィラメント: PLA、PETG、TPU、ABS、PLA-Wood、PA、PLA-CF
UI言語: 英語、スペイン語、ドイツ語、フランス語、ロシア語、ポルトガル語、イタリア語、トルコ語、中国語
const TAG = 'spz-custom-painter-button-animation';
const MAX_ITERATION_COUNT = 99999999;
const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || '';
const ADD_TO_CART_ANIMATION_SETTING =
`${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`;
class SpzCustomPainterButtonAnimation extends SPZ.BaseElement {
/**@override */
static deferredMount() {
return false;
}
/** @param {!SpzElement} element */
constructor(element) {
super(element);
/** @private {!../../src/service/xhr-impl.Xhr} */
this.xhr_ = SPZServices.xhrFor(this.win);
/** @private {Object} */
this.data_ = null;
/** @private {Element} */
this.addToCartButton_ = null;
/** @private {boolean} */
this.productAvailable_ = true;
/** @private {number} */
this.timerId_ = null;
/** @private {number} */
this.animationExecutionCount_ = 0;
/** @private {boolean} */
this.selectedVariantAvailable_ = true;
/** @private {number} */
this.delay_ = 5000;
/** @private {number} */
this.iterationCount_ = 5;
/** @private {string} */
this.animationClass_ = '';
}
/** @override */
isLayoutSupported(layout) {
return layout == SPZCore.Layout.LOGIC;
}
/** @override */
buildCallback() {
this.productAvailable_ = this.element.hasAttribute('product-available');
this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available');
}
/** @override */
mountCallback() {
this.render_();
}
/** @private */
render_() {
if (!this.productAvailable_) {
return;
}
this.fetch_().then((data) => {
if (!data) {
return;
}
this.data_ = data;
this.animationClass_ = `painter-${data.animation_name}-animation`;
this.iterationCount_ =
data.animation_iteration_count === 'infinite'
? MAX_ITERATION_COUNT
: data.animation_iteration_count;
const animationDuration = 1;
const animationDelay = data.animation_delay || 5;
this.delay_ = (animationDuration + animationDelay) * 1000;
this.handleButtonEffect_();
});
}
/**
* @param {JsonObject} data
* @return {(null|Object)}
* @private
*/
parseJson_(data) {
try {
return JSON.parse(data);
} catch (e) {
return null;
}
}
/**
* @return {Promise}
* @private
*/
fetch_() {
return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => {
if (!data || !data.enabled) {
return null;
}
return this.parseJson_(data.detail);
});
}
/** @private */
getAddToCartButton_() {
this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector(
document.body,
'[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]'
);
}
/** @private */
restartAnimation_() {
this.addToCartButton_.classList.remove(this.animationClass_);
this.addToCartButton_./* OK */ offsetWidth;
this.addToCartButton_.classList.add(this.animationClass_);
this.animationExecutionCount_++;
}
/** @private */
clearTimer_() {
this.win.clearInterval(this.timerId_);
this.timerId_ = null;
}
/** @private */
setupTimer_() {
this.timerId_ = this.win.setInterval(() => {
this.restartAnimation_();
if (this.animationExecutionCount_ >= this.iterationCount_) {
this.removeAnimationClass_();
this.clearTimer_();
}
}, this.delay_);
}
/** @private */
restartTimer_() {
if (this.animationExecutionCount_ >= this.iterationCount_) {
this.removeAnimationClass_();
return;
}
this.setupTimer_();
}
/** @private */
listenVariantChange_() {
SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => {
const selectedVariant = e.detail && e.detail.selected;
if (!selectedVariant) {
return;
}
const {available} = selectedVariant;
if (this.selectedVariantAvailable_ !== available) {
this.selectedVariantAvailable_ = available;
this.clearTimer_();
if (available) {
this.restartTimer_();
}
}
});
}
/** @private */
removeAnimationClass_() {
this.win.setTimeout(() => {
this.addToCartButton_.classList.remove(this.animationClass_);
}, 1000);
}
/** @private */
handleButtonEffect_() {
this.getAddToCartButton_();
if (!this.addToCartButton_) {
return;
}
if (this.selectedVariantAvailable_) {
++this.animationExecutionCount_;
this.addToCartButton_.classList.add(this.animationClass_);
if (this.iterationCount_ === 1) {
this.removeAnimationClass_();
return;
}
this.setupTimer_();
}
this.listenVariantChange_();
}
}
SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);