\n\n

,需要通过父级DOM结构来判断 */ var trackActionPhone = function (node) { var nodeInnerText = node.innerText || ''; if (!limitRegLength(nodeInnerText)) return; var nodeText = trimText(nodeInnerText); if (nodeText.length < 5 || nodeText.length > 20) return false; var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'click'; var str = trimText(node.href || nodeText || ''); if (phoneReg.test(str) && numUseReg.test(str)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { phone: nodeText, }, }, '*'); _paq.push(['trackEvent', type, 'phone', nodeText]); return true; } /** 排查父级嵌套非标签场景,并且对dom的正则校验做一个性能兜底,通过控制innerText的长度,来确保正则的性能 */ var fatherText = trimText(node.parentNode.innerText || ''); if (fatherText.length < 5 || fatherText.length > 20) return false; if (phoneReg.test(fatherText) && numUseReg.test(fatherText)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { phone: nodeText, }, }, '*'); _paq.push(['trackEvent', type, 'phone', nodeText]); return true; } return false; }; window.addEventListener('click', function (e) { var node = e.target; /** 社媒点击 */ var appName = ''; var getAppAriaLabel = node.ariaLabel || node.parentNode.ariaLabel || ''; if (mediaList.includes(getAppAriaLabel.toLowerCase())) { appName = getAppAriaLabel; } if ( !appName && node.nodeName && node.nodeName.toLowerCase() === 'a' ) { appName = getMediaName(node.href) || getMediaName(node.alt); } if ( !appName && node.nodeName && node.nodeName.toLowerCase() === 'img' ) { appName = getMediaName(node.alt) || getMediaName(node.src); } if ( !appName && node.nodeName && node.nodeName.toLowerCase() === 'i' ) { appName = getMediaName(node.className); } if (appName) { _paq.push(['trackEvent', 'click', 'contactApp', appName]); return; } /** 联系方式点击 */ if (trackActionPhone(node, 'click')) return; if (node.nodeName && node.nodeName.toLowerCase() === 'a') { var val = node.href; if (!limitRegLength(val)) return; if (emailReg.test(val)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: val, }, }, '*'); _paq.push(['trackEvent', 'click', 'email', val]); return; } } if (node.nodeName && node.nodeName.toLowerCase() === 'i') { var val = node.className; var content = node.parentNode.href || ''; if (val.includes('email')) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: content, }, }, '*'); _paq.push(['trackEvent', 'click', 'email', content]); return; } } var nodeChildList = node.childNodes; for (var i = 0; i < nodeChildList.length; i++) { if (nodeChildList[i].nodeType !== 3) continue; var val = nodeChildList[i].textContent.replace(/\s?:?/g, ''); if (!limitRegLength(val)) continue; if (emailReg.test(val)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: val, }, }, '*'); _paq.push(['trackEvent', 'click', 'email', val]); return; } } trackNumberData(node); }); window.addEventListener('copy', function (e) { if (trackActionPhone(e.target, 'copy')) return; var text = e.target.textContent; if (!text) return; var val = text.replace(/\s:?/g, ''); if (!limitRegLength(val)) return; if (emailReg.test(val)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: val, }, }, '*'); _paq.push(['trackEvent', 'copy', 'email', val]); return; } trackNumberData(e.target); }); } trackContactInit(); /** * 基于custom_inquiry_form.js 以及 form.js 对于询盘表单提交的实现,来反推询盘表单的input标签触发,用来收集意向客户 * 1. 缓存的KEY:TRACK_INPUT_ID_MTM_00; * 2. 缓存策略 - lockTrackInput:单个页面内,10分钟内,不重复上报 */ function trackActionInput() { const CACHE_KEY = 'TRACK_INPUT_ID_MTM_00'; const pathName = window.location.hostname + window.location.pathname; var lockTrackInput = function () { try { const lastCacheData = localStorage.getItem(CACHE_KEY); if (!lastCacheData) return false; const cacheData = JSON.parse(lastCacheData); const cacheTime = cacheData[pathName]; if (!cacheTime) return false; return Date.now() - cacheTime < 1000 * 60 * 10; // 10分钟内,不重复上报 } catch (error) { console.error('lockTrackInput Error', error); return false; } }; var setInputTrackId = function () { try { const curCacheData = localStorage.getItem(CACHE_KEY); if (curCacheData) { const cacheData = JSON.parse(curCacheData); cacheData[pathName] = Date.now(); localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData)); return; } const cacheData = { [pathName]: Date.now(), }; localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData)); } catch (error) { console.error('setInputTrackId Error', error); } }; var getInputDom = function (initDom) { var ele = initDom; while (ele) { /** * isWebSiteForm 是站点的表单 * isChatWindowForm 是聊天窗口的表单 */ /** 旧模板表单 */ var isWebSiteForm = !!( /crm-form/i.test(ele.className) && ele.querySelector('form') ); /** 1:新模板自定义表单、2:Get a Quote 弹框表单 */ var isWebSiteFormNew = !!( /inquiry/i.test(ele.className) && ele.querySelector('form') ); if (isWebSiteForm || isWebSiteFormNew) { _paq.push(['trackEvent', 'formInquiry', 'formInput', 'page']); setInputTrackId(); return; } /** Mkt会话触达-聊天弹框的表单输入: MKT由于是iframe嵌入,所以MKT的上报,会单独写到MKT-form代码上 */ var isInquiryChatForm = !!( /comp-form/i.test(ele.className) && ele.querySelector('form') ); if (isInquiryChatForm) { _paq.push(['trackEvent', 'formInquiry', 'formInput', 'chat']); setInputTrackId(); return; } /** 向上查找父节点 */ ele = ele.parentNode; } }; function initInputListener() { var inputUseDebounce = function (fn, delay) { var timer = null; var that = this; return function () { var args = Array.prototype.slice.call(arguments); if (timer) clearTimeout(timer); timer = setTimeout(function () { fn.apply(that, args); }, delay); }; }; var optimizeGetInputDom = inputUseDebounce(getInputDom, 300); window.addEventListener('input', function (e) { /** 如果已经上报过,则不再上报 */ if (lockTrackInput()) return; optimizeGetInputDom(e.target); }); } try { initInputListener(); } catch (error) { console.log('initInputListener Error', error); } } trackActionInput(); } /** 第三方消息上报:目前主要是针对全点托管会话;在msgCollect/index.js中调试,访问test.html */ function thirdMsgCollect() { /** 先检测是否是stayReal托管:如果stayReal脚本都没有,那么说明当前站点未开启stayReal会话托管 */ const scriptList = Array.prototype.slice.call( document.querySelectorAll('script'), ); const checkStayReal = () => !!scriptList.find((s) => s.src.includes('stayreal.xiaoman.cn')); if (!checkStayReal()) return; /** 缓存当前消息队列的最后一条消息id */ const CACHE_KEY = 'CACHE_KEY_MONITOR'; const setCache = (msgIndex) => { /** 对缓存KEY进行base64转码处理 */ const cacheMsgIndex = btoa(msgIndex); localStorage.setItem(CACHE_KEY, cacheMsgIndex); }; const getCache = () => { const cacheMsgIndex = localStorage.getItem(CACHE_KEY); if (cacheMsgIndex) return Number(atob(cacheMsgIndex)); return -1; }; /** 拉取最新msg列表 */ const pullMsgList = () => { const msgEleList = Array.prototype.slice.call( document.querySelectorAll('#chat-list li'), ); const msgIds = []; const msgMap = msgEleList.reduce((acc, item) => { const sendTime = item .querySelector('.message-data-time') .textContent.trim(); const sendContent = item.querySelector('.message').textContent.trim(); /** msg带有class:other-message的是访客消息,my-message的是客服消息 */ const isOtherMessage = item .querySelector('.message') .classList.contains('other-message'); const msgId = item.querySelector('.message').getAttribute('id'); const msgItemData = { msgId, user: isOtherMessage ? 'visitor' : 'official', time: sendTime, content: sendContent, }; msgIds.push(msgId); acc[msgId] = msgItemData; return acc; }, {}); return { ids: msgIds, dataMap: msgMap, }; }; /** 加密并上传消息数据 */ let ENCRYPT_KEY = 'de29f1aab63ab033'; let ENCRYPT_IV = 'b8d2badf875e76ac'; const baseUrl = 'https://cms.xiaoman.cn'; // var getEncryptConfig = function () { // const url = baseUrl + '/shop-api/innerApi/getKeyIv' // $.get( // url, // function (result) { // console.log('result', result) // if (Number(result.code) === 0 && result.data.key && result.data.iv) { // ENCRYPT_KEY = result.data.key // ENCRYPT_IV = result.data.iv // uploadMsgData() // } else { // /** 如果获取失败,则重试 */ // setTimeout(() => { // getEncryptConfig() // }, 1000) // } // }, // 'json' // ) // } // getEncryptConfig() const encryptMsg = function (msgData) { const enc = new TextEncoder(); // 转字节 const keyBytes = enc.encode(ENCRYPT_KEY); const ivBytes = enc.encode(ENCRYPT_IV); const plainBytes = enc.encode(msgData); // 导入密钥并加密 return crypto.subtle .importKey('raw', keyBytes, { name: 'AES-CBC' }, false, ['encrypt']) .then(function (cryptoKey) { return crypto.subtle.encrypt( { name: 'AES-CBC', iv: ivBytes }, cryptoKey, plainBytes, ); }) .then(function (encryptedBuffer) { // 转 base64 返回 return btoa( String.fromCharCode(...new Uint8Array(encryptedBuffer)), ); }) .catch((err) => { return Promise.reject(err); }); }; let uploadFlag = false; const uploadMsgData = function () { if (uploadFlag) return; uploadFlag = true; const { ids, dataMap } = pullMsgList(); let cacheMsgIndex = getCache(); const msgLen = ids.length; if (!msgLen) { // 消息DOM未挂载 || 消息DOM已挂载,但是消息列表为空 uploadFlag = false; return; } if (msgLen - 1 < cacheMsgIndex) { /** 针对站点挂后台一段时间,消息列表会自动塞入重复消息,导致消息有重复,刷新后又重置回正常消息列表,所以这里需要更新锚点下标 */ cacheMsgIndex = msgLen - 1; setCache(cacheMsgIndex); uploadFlag = false; return; } if (msgLen - 1 === cacheMsgIndex) { // 缓存的最后一次发送的消息ID是最后一条(说明当前消息均已经上报),则不跳过本地上报 uploadFlag = false; return; } const currentMsgIds = ids.slice(cacheMsgIndex + 1, msgLen); const currentMsgData = currentMsgIds.map((id) => dataMap[id]); const mtmId = window.matomo_site_id_cookie_key || ''; // 获取mtm会话id const msgBody = { mtmId, curl: window.location.href, msgList: currentMsgData, }; const msgBodyStr = JSON.stringify(msgBody); encryptMsg(msgBodyStr) .then(function (encryptedMsg) { console.log('encryptedMsg:', encryptedMsg, msgBodyStr); const url = baseUrl + '/shop-api/External/ListenSiteActiveStatus'; $.ajax({ type: 'POST', url, data: JSON.stringify({ d_v: encryptedMsg }), contentType: 'application/json', success: function (result) { if (Number(result.code) === 0) { // 更新消息队列 setCache(msgLen - 1); } uploadFlag = false; }, error: function (err) { console.error(err, '请求异常'); uploadFlag = false; }, }); }) .catch((err) => { console.error(err, '数据加密失败'); uploadFlag = false; }); }; /** 监控chat-list的DOM变更 */ const initChatListObserver = () => { // 需要监听的 DOM 节点 const target = document.getElementById('chat-list'); if (!target) return; // 回调函数 const callback = function (mutationsList, observer) { for (const mutation of mutationsList) { console.log('mutation', mutation); if (mutation.type === 'childList') { uploadMsgData(); } } }; // 配置 const config = { childList: true, // 监听子节点的增删 subtree: true, // 是否也监听后代节点 }; // 创建 observer const observer = new MutationObserver(callback); // 开始监听 observer.observe(target, config); }; let testCount = 30; let itv = null; const checkChatDom = () => !!document.querySelector('#vc-model'); const initTalkCheck = () => { itv = setTimeout(() => { console.log('checkChatDom', checkChatDom(), testCount); if (!checkChatDom() && testCount > 0) { testCount--; initTalkCheck(); return; } clearTimeout(itv); uploadMsgData(); initChatListObserver(); }, 1500); }; initTalkCheck(); } try { gtmTrack(); thirdMsgCollect(); console.log('inserted gtm code'); } catch (error) { console.error('gtmTrack Error', error); } }); })();

Tất Cả Danh Mục

TIN TỨC

Trang chủ&gt;TIN TỨC

Gia công ống và ống dẫn

Sep 17, 2026

Các bộ phận ống và ống dẫn được xác định theo đường kính ngoài và độ dày thành, chứ không theo đường kính danh nghĩa; cách ghi cong trên bản vẽ quyết định việc bộ phận có thể được sản xuất bằng phương pháp kéo hay không. Trang này giải thích cách xác định ống trên bản vẽ và cách kiểm soát cắt, uốn và hàn sau khi bản vẽ đã chính xác.

Cách xác định ống trên bản vẽ

Những thông tin cần ghi rõ trên bản vẽ ống — và lý do vì sao điều đó quan trọng
Tham số Cần nêu rõ điều gì Tại sao điều này quan trọng
Vật liệu và Cấp độ ví dụ: thép không gỉ 304, thép carbon, nhôm 6061 Xác định khả năng tạo hình, khả năng hàn và khả năng chống ăn mòn trước khi lên kế hoạch uốn
Đường kính ngoài Đường kính ngoài chính xác tính bằng milimét Ống được mua và uốn dựa trên đường kính ngoài; giá trị đường kính danh nghĩa không xác định được loại ống
Độ dày thành Độ dày thành danh nghĩa tính bằng milimét, hoặc số hiệu (gauge) kèm theo tiêu chuẩn tương ứng Xác định độ bền, trọng lượng và bán kính nhỏ nhất mà ống có thể uốn được mà không bị nhăn
Bán kính uốn Bán kính đường tâm, hoặc tỷ lệ giữa bán kính và đường kính ngoài Các bán kính nhỏ hơn đòi hỏi nhiều sự hỗ trợ hơn trong khuôn và được xác nhận tại buổi rà soát khả thi về mặt sản xuất (DFM) trước khi chế tạo khuôn
Góc uốn và vị trí uốn Góc uốn, cộng với khoảng cách giữa các điểm tiếp tuyến của chỗ uốn Quá trình uốn ống được kiểm soát từ điểm tiếp tuyến này đến điểm tiếp tuyến kia, chứ không tính từ hai đầu ống
Xử lý đầu cuối Cắt, làm sạch mép cắt, cắt khía, dập bẹt, khoan, tarô hoặc tiện ren Xác định các công đoạn gia công tiếp theo và loại đồ gá cần thiết cho chi tiết
Số lượng và giai đoạn Mẫu thử nghiệm, chạy thử hoặc sản xuất hàng loạt Xác định việc uốn sẽ được thực hiện trên máy uốn CNC hay trên khuôn chuyên dụng

Cắt, uốn và hàn

  • Cắt laser các profile ống và các chi tiết tấm, đạt độ chính xác khoảng 0,1 mm trên các chi tiết tấm đã cắt và uốn
  • Uốn ống bằng CNC với các vị trí uốn được điều khiển bằng chương trình, đảm bảo các chi tiết lặp lại giống nhau ngay từ sản phẩm đầu tiên
  • Hàn MIG, TIG và hàn điểm các cụm ống trên các đồ gá và khuôn để đảm bảo hình học lặp lại chính xác
  • Gia công cơ khí bằng CNC các chi tiết chèn, các gờ nổi và các đặc điểm đầu cuối gia công với độ chính xác khoảng 0,01 mm khi yêu cầu lắp ghép đòi hỏi như vậy
  • Mạ kẽm, sơn bột, thụ động hóa và đánh bóng là các công đoạn hoàn thiện tiếp theo

Đã được kiểm chứng trên chương trình sản xuất 20.000 chi tiết

Trong một dự án giá đỡ gắn bên xe mô-tô, chúng tôi đã sản xuất 20.000 chi tiết bằng cách kết hợp uốn ống bằng CNC với việc cải tiến thiết kế lắp ráp dựa trên DFM. Đây là quy trình tiêu chuẩn cho công việc liên quan đến ống: trước tiên xác định rõ thông số kỹ thuật và các thông số uốn, sau đó khối lượng sản xuất sẽ chỉ còn phụ thuộc vào thiết kế dụng cụ và đồ gá thay vì phải sửa chữa lại

Ống, ống dẫn hay tấm uốn — nên chọn loại nào

  • Ống là lựa chọn hiệu quả về độ cứng và trọng lượng đối với khung, thanh ray, tay nắm và các giá đỡ kết cấu
  • Tấm được định hình phù hợp cho các vỏ bọc, tấm chắn, nắp đậy và giá đỡ khi không cần thiết phải có tiết diện rỗng
  • Ống thường được sử dụng khi cần dẫn chất lỏng, do đó đường kính trong và áp suất quan trọng hơn độ cứng kết cấu
  • Khi một chi tiết yêu cầu cả hai đặc tính trên, ống và tấm được hàn thành một cụm thay vì ép buộc vào một quy trình duy nhất

Các câu hỏi thường gặp

Ống được xác định theo đường kính trong hay đường kính ngoài?

Ống kết cấu được xác định theo đường kính ngoài và độ dày thành. Đường kính danh nghĩa chỉ mô tả kích thước dòng chảy xấp xỉ của ống và không xác định đường kính ngoài thực tế bạn sẽ nhận được; do đó, hãy ghi rõ OD và độ dày thành trên bản vẽ.

Bán kính uốn tối thiểu đối với ống là bao nhiêu?

Giá trị này phụ thuộc vào vật liệu, độ dày thành và tỷ lệ giữa bán kính uốn với đường kính ngoài, và được xác nhận trong buổi đánh giá khả thi về chế tạo (DFM) chứ không được giả định. Nếu bản vẽ yêu cầu bán kính uốn rất nhỏ, vui lòng thông báo sớm độ dày thành và cấp vật liệu để chúng tôi tư vấn về khuôn uốn cũng như việc có cần dùng lõi uốn (mandrel) hay không.

Các bạn có uốn ống vuông và ống chữ nhật không?

Có. Các mặt cắt vuông và chữ nhật được uốn bằng bộ khuôn phù hợp với mặt cắt đó, và bán kính có thể đạt được khác với ống tròn cùng kích thước, do đó cần nêu rõ đồng thời cả mặt cắt và bán kính.

Quý khách có cần ống hàn thành cụm lắp ráp không, hay chỉ cần ống uốn?

Có. Ống có thể được cắt, uốn, khoét rãnh và hàn kèm các giá đỡ, tấm và chi tiết gia công cơ khí thành một cụm lắp ráp hoàn chỉnh, sau đó được xử lý bề mặt và giao hàng sẵn sàng lắp đặt — điều này giúp tránh các vấn đề về dung sai giữa các chi tiết do các nhà cung cấp riêng biệt sản xuất.

Quý khách có thể làm việc với những vật liệu nào?

Thép không gỉ, thép carbon, nhôm, đồng và đồng thau. Cấp độ vật liệu, độ dày thành ống và bề mặt hoàn thiện sẽ được xác nhận trong buổi đánh giá khả thi về thiết kế (DFM) dựa trên tải trọng và môi trường mà chi tiết sẽ chịu.

Các trang liên quan: bộ phận hàn và tán đinh ,Hướng dẫn DFM ,các bộ phận kim loại cho ô tô và xe điện .