国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SolidWorks的自動(dòng)焊縫標(biāo)注的二次開發(fā)

2020-05-21 03:33張澤南仲梁維
軟件工程 2020年5期
關(guān)鍵詞:二次開發(fā)

張澤南 仲梁維

摘? 要:在進(jìn)行大型焊接零部件設(shè)計(jì)時(shí),在現(xiàn)有的三維設(shè)計(jì)軟件中設(shè)計(jì)人員通常采用多實(shí)體零件的設(shè)計(jì)方式進(jìn)行設(shè)計(jì),但是在工程圖中焊縫的標(biāo)注往往是十分費(fèi)時(shí)和費(fèi)力的,同時(shí)為了統(tǒng)計(jì)模型中的焊縫信息形成相應(yīng)的焊縫清單,目前任是人工操作,大大增加了工作量和焊接件的設(shè)計(jì)周期。文章主要基于SolidWorks三維設(shè)計(jì)軟件,采用C#編程語言,利用SolidWorks對(duì)外開放的API函數(shù)接口,結(jié)合實(shí)際的焊縫識(shí)別準(zhǔn)則,實(shí)現(xiàn)了自動(dòng)提取多實(shí)體三維設(shè)計(jì)模型中的焊縫信息,采用SQLServer數(shù)據(jù)庫(kù)對(duì)焊縫信息進(jìn)行存儲(chǔ)與讀取,并在工程圖中進(jìn)行自動(dòng)焊縫標(biāo)注,同時(shí)導(dǎo)出對(duì)應(yīng)的焊縫清單。大大減少了人工進(jìn)行焊縫識(shí)別和標(biāo)注的過程,提高了焊接件的工程圖的出圖效率,對(duì)于減少焊接件的設(shè)計(jì)周期有著現(xiàn)實(shí)的意義。

關(guān)鍵詞:焊縫識(shí)別;自動(dòng)標(biāo)注;多實(shí)體零件;二次開發(fā);SolidWorks

中圖分類號(hào):TP319? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

Abstract: When designing large welded parts, the existing 3-d design software designers usually design the parts as separate entities, but the drawing of the weld marks tend to be very time-consuming and laborious, and at the same time in order to form the corresponding weld mark list, the task is now a manual operation, which greatly increased the workload and product design cycle. Based on SolidWorks 3-d design software, the paper uses C# programming language, SolidWorks open API interface, and the actual welding seam recognition criteria to achieve the automatic extraction of multi-entity weld information in three-dimension design model, SQLServer database is used to store and save the weld information, carries out automatic weld marking of engineering drawing, and export the corresponding weld listing at the same time. It greatly simplifies the process of manual identification and marking of welding seams, and improves the efficiency of engineering drawing of welding parts, with practical significance for reducing the design cycle of welding parts.

Keywords: weld identification; automatic marking; multiple solid parts; secondary development; SolidWorks

1? ?引言(Introduction)

焊接與連接是國(guó)家自然科學(xué)基金委員會(huì)機(jī)械工程學(xué)科的重要領(lǐng)域,是零部件成形制造的重要工藝方法,是實(shí)現(xiàn)大到巨型結(jié)構(gòu)小到微納器件輕量化和功能化的主要途徑之一,對(duì)實(shí)現(xiàn)裝備制造綠色環(huán)保和節(jié)能減排具有重要意義[1]。焊接技術(shù)被譽(yù)為工業(yè)的裁縫,在工業(yè)化發(fā)展的進(jìn)程中,焊接在船舶、汽車、航空航天、軍事等領(lǐng)域發(fā)揮著不可替代的作用。21世紀(jì)的制造業(yè)正在逐步向“數(shù)字化”“智能化”方向發(fā)展,焊接也正順應(yīng)著這種趨勢(shì),向自動(dòng)化焊接的方向快步前進(jìn)[2,3]。在SolidWorks三維設(shè)計(jì)軟件中對(duì)焊接件進(jìn)行設(shè)計(jì),工程圖進(jìn)行標(biāo)注時(shí),需要手動(dòng)標(biāo)注和識(shí)別焊縫,對(duì)于焊縫的信息需要人工進(jìn)行測(cè)量和導(dǎo)出,當(dāng)焊接件的實(shí)體數(shù)量龐大時(shí),設(shè)計(jì)人員的工作量大幅度的增加,且容易出錯(cuò)。SolidWorks是基于特征的三維參數(shù)化造型軟件,對(duì)于用戶的自定義二次開發(fā)提供了良好的支持,在SolidWorks中進(jìn)行程序化建模時(shí),需要針對(duì)SolidWorks進(jìn)行二次開發(fā),通過SolidWorks API接口,編制能夠嵌入SOLIDWORKS的插件,通過調(diào)用插件進(jìn)行程序化繪圖[4]。運(yùn)用二次開發(fā)技術(shù),結(jié)合Visual Studio2012開發(fā)平臺(tái)可實(shí)現(xiàn)特定功能的產(chǎn)品開發(fā),可以拓展和彌補(bǔ)SolidWorks自身的不足。

2? ?開發(fā)原理(Development principle)

SolidWorks提供了完整的免費(fèi)的二次開發(fā)工具API,凡是支持COM編程的開發(fā)工具,如Visual C++6.0(以下簡(jiǎn)稱VC++)、Visual Basic、Delphi等均可直接調(diào)用這些API函數(shù)開發(fā)出用戶自己的程序模塊,提高設(shè)計(jì)的效率與正確率[5]。為了方便用戶進(jìn)行二次開發(fā),SolidWorks提供了幾百個(gè)API接口。這些API接口分為兩種,即OLE Automation的IDispatch和作為Windows基礎(chǔ)的COM(Component Object Model組件對(duì)象模型)[6]。對(duì)應(yīng)的SolidWorksAPI對(duì)象模型如圖1所示,它是一個(gè)自上而下的樹型結(jié)構(gòu)。

SolidWorks的二次開發(fā)主要有兩種:一種是基于自動(dòng)化技術(shù)而生成的EXE可執(zhí)行文件,另一種是基于COM開發(fā)SolidWorksAdd-in,生成一個(gè)DLL插件[7]。其中SolidWorks Add-in和SolidWorks程序運(yùn)行于同一個(gè)進(jìn)程空間,Add-in比主程序有更大的控制力,菜單、工具欄及屬性控制頁都可以插件形式在SolidWorks中實(shí)現(xiàn)。其中,第二種技術(shù)運(yùn)用非常廣泛,生成的DLL插件可以融合在SolidWorks設(shè)計(jì)環(huán)境中,增加工具欄的功能,更加便于設(shè)計(jì)者進(jìn)行設(shè)計(jì)操作[8]。本文采用的開發(fā)方式為C#語言對(duì)應(yīng)的SwAddin插件進(jìn)行的二次開發(fā),對(duì)應(yīng)開發(fā)界面效果如圖2所示。

3? 三維模型焊縫信息提?。?D model weld information extraction)

雖然本文最終的目的是在工程圖中進(jìn)行焊縫標(biāo)注,但是在工程圖中無法識(shí)別出三維的信息,所以首先要在三維模型空間中提取焊縫的信息,具體實(shí)現(xiàn)流程的大體框架如圖3所示。

其中關(guān)于接頭形式的判斷,交線的識(shí)別,在后面小節(jié)有詳細(xì)的介紹。在SolidWorks三維設(shè)計(jì)軟件中可以通過遍歷特征樹的技術(shù)訪問到Cut list切割清單,并通過二次開發(fā)可以方便提取其中的實(shí)體,通過實(shí)體文件夾的創(chuàng)建3D box框的屬性,可以在進(jìn)入cut list后可通過其屬性訪問實(shí)體的厚度,長(zhǎng)度,寬度等信息,保存記錄作為焊接接頭形式判斷的依據(jù)之一。經(jīng)過第一步提取可將三維模型中的所有實(shí)體對(duì)象存儲(chǔ)到C#列表中,作為循環(huán)遍歷的主體部分。

3.1? ?焊接接頭形式識(shí)別

焊接接頭是指兩個(gè)或兩個(gè)以上零件要用焊接組合的接點(diǎn)?;蛑竷蓚€(gè)或兩個(gè)以上零件用焊接方法連接的接頭,包括焊縫、熔合區(qū)和熱影響區(qū)。熔焊的焊接接頭是的由高溫?zé)嵩催M(jìn)行局部加熱而形成。焊接接頭由焊縫金屬、熔合區(qū)、熱影響區(qū)和母材金屬所組成[9]。焊接接頭形式可分為對(duì)接接頭、T型接頭、搭接接頭、角接接頭,對(duì)應(yīng)的不同形式的接頭類型如圖4所示。

本文中只針對(duì)對(duì)接接頭和T型接頭進(jìn)行識(shí)別,這里一個(gè)十分重要的識(shí)別準(zhǔn)則為:厚度對(duì)厚度的接頭為對(duì)接接頭,厚度對(duì)長(zhǎng)度或者厚度對(duì)寬度的接頭形式都為T型接頭,對(duì)于角接接頭的處理原則為:如果角接的角度等于90°則作為T型接頭處理,否則作為對(duì)接接頭處理。對(duì)于搭接接頭的形式出現(xiàn)較少,這里就直接忽略了。此外,本文只針對(duì)了兩個(gè)實(shí)體間的焊縫進(jìn)行了識(shí)別處理,可能會(huì)出現(xiàn)三個(gè)實(shí)體同時(shí)出現(xiàn)焊縫的情形,這里沒有進(jìn)行焊縫的合并,只是單獨(dú)按照兩兩之間進(jìn)行識(shí)別處理,存在一些不足。

3.2? ?實(shí)體交線信息提取方法

有了實(shí)體信息和接頭的判斷準(zhǔn)則,下面是如何進(jìn)行判斷焊縫,在多實(shí)體零件中,焊縫只出現(xiàn)在兩個(gè)實(shí)體的交線部分,所以要對(duì)實(shí)體之間求取交線。運(yùn)用SolidWorks二次開發(fā)技術(shù),對(duì)于實(shí)體是屬于IBody2這個(gè)對(duì)象,在這個(gè)對(duì)象下可以通過GetFaces方法獲取該體的所有表面,通過GetEdges方法可以獲取該體上所有的邊線,通過GetIntersectionEdges方法可以獲取兩個(gè)實(shí)體對(duì)象之間的交線。對(duì)于交線,可以求出交線的長(zhǎng)度,作為焊縫長(zhǎng)度的信息。

3.3? ?公共面提取法

如果兩個(gè)實(shí)體的交線不止一條,則求取兩個(gè)實(shí)體公共面,通過計(jì)算公共面,如果兩個(gè)公共面都包含厚度尺寸,則認(rèn)為是對(duì)接接頭,否則為T型接頭。如果兩個(gè)實(shí)體的交線只有一條,這個(gè)時(shí)候就要求取該包含該交線的兩個(gè)實(shí)體的面,計(jì)算兩個(gè)實(shí)體之間包含交線的面之間的夾角,如果夾角為0度、90度、180度中的任何一個(gè)值,說明是T型接頭,否則為對(duì)接接頭。現(xiàn)在針對(duì)交線不止一條的情況來討論公共面的尋找的方法:通過IEdge邊線對(duì)象,可以利用GetTwoAdjacentFaces2方法獲取包含該線的面,通過兩條交線來獲取包含交線的面的對(duì)象,這里可能的面的個(gè)數(shù)為2個(gè)、3個(gè)或者4個(gè)。對(duì)于兩個(gè)面的情形說明兩條交線都在面內(nèi),這兩個(gè)面是同一個(gè)對(duì)象,任意取一個(gè)作為公共面,3個(gè)和4個(gè)的情形需要比較這幾個(gè)面中哪兩個(gè)是相同的面,可以利用IFace2對(duì)象下的IsSame方法比較兩個(gè)面是否為同一個(gè)面。這樣就可以找出公共面。對(duì)于只有一條交線的情況,只需要求取兩個(gè)實(shí)體上包含交線的面中任意兩個(gè)面之間的夾角。獲取包含交線面的方法和多條交線的情況一樣。

3.4? ?焊縫標(biāo)記定位

提取到的每一條焊縫需要定位,方便在工程圖中辨識(shí)每一條線是否為焊縫線的投影。這里可以利用實(shí)體命名的方式來進(jìn)行焊縫對(duì)象的標(biāo)記。可通過PartDoc對(duì)象模型下的SetEntityName方法為實(shí)體進(jìn)行命名,其效果如圖5所示。

4? ?工程圖自動(dòng)焊縫標(biāo)注(Automatic weld marking of engineering drawing)

在三維模型中對(duì)焊縫信息進(jìn)行了提取,對(duì)焊縫進(jìn)行了標(biāo)定。在工程圖中需要進(jìn)行標(biāo)注,對(duì)于工程圖,利用遍歷工程視圖的方式,通過IView對(duì)象下的GetPolylines7方法可以獲得工程視圖中所有的邊線。但是如何將工程視圖中的邊線和三維中的邊線對(duì)應(yīng)起來,需要進(jìn)行映射關(guān)系轉(zhuǎn)換,找到對(duì)應(yīng)的三維中的線再查看該線是否被標(biāo)記,二維中的線需要將IEdge對(duì)象轉(zhuǎn)化為IEntity對(duì)象,通過ModelName屬性可以獲取對(duì)應(yīng)的實(shí)體名稱,如果是焊縫則被標(biāo)記,如果不是則為空。

4.1? ?三維模型到工程圖映射關(guān)系

在SolidWorks中三維圖形變換都是通過變換矩陣來完成的,該變化矩陣如式(1)所示。

該矩陣一共包含16個(gè)元素,a—i前9個(gè)元素構(gòu)成的3×3子矩陣表示旋轉(zhuǎn)矩陣,后面三個(gè)元素(j,k,l)為平移矢量,m表示比例因數(shù),(n,o,p)在這里沒有實(shí)際意義[10]。對(duì)于每一個(gè)視圖IView對(duì)象,可以通過ModelToViewTransform獲取三維模型到二維視圖的轉(zhuǎn)換矩陣,這里需要注意的是在二維視圖中遍歷到的線段對(duì)象是對(duì)應(yīng)三維空間的線段,對(duì)應(yīng)到二維視圖中,只需要執(zhí)行矩陣的乘積運(yùn)算即可,假設(shè)三維空間的一個(gè)點(diǎn)A(Xa,Ya,Za),對(duì)應(yīng)到二維視圖的坐標(biāo)點(diǎn)為B(Xb,Yb,Zb)則有如式(2)的運(yùn)算關(guān)系:

注意這里的坐標(biāo)點(diǎn)轉(zhuǎn)換為其次坐標(biāo)的形式,這樣可以實(shí)現(xiàn)三維到二維的轉(zhuǎn)換,在二維視圖中對(duì)線進(jìn)行選擇,從而進(jìn)行標(biāo)注的實(shí)現(xiàn)。

4.2? ?定位焊縫標(biāo)注

對(duì)于焊縫標(biāo)注需要四個(gè)步驟:首先在找到相應(yīng)的焊縫邊線對(duì)應(yīng)的二維坐標(biāo)點(diǎn)之后,可以通過模型對(duì)象ModelDoc下的擴(kuò)展屬性下的SelectByID2方法來選中對(duì)應(yīng)的邊線;其次就可以插入焊縫標(biāo)注序號(hào),插入之前需要先創(chuàng)建標(biāo)注對(duì)象,這里同樣是通過模型對(duì)象下的擴(kuò)展方法CreateBalloonOptions來創(chuàng)建對(duì)象,并且設(shè)置相關(guān)的屬性;然后用InsertBOMBalloon2方法插入創(chuàng)建的標(biāo)注;最后在插入標(biāo)注的序號(hào)之后再更改相應(yīng)的屬性,設(shè)置該標(biāo)注依附的實(shí)體對(duì)象。

4.3? ?焊縫標(biāo)注位置調(diào)整

焊縫序號(hào)標(biāo)注完成之后是不整齊的,需要進(jìn)行位置的調(diào)整,達(dá)到圖紙的要求。這里序號(hào)調(diào)整的方法是利用視圖的邊框?qū)傩?,將焊縫序號(hào)調(diào)整到邊框外圍固定的位置,并且按照一定的間隔進(jìn)行排布。實(shí)現(xiàn)方式流程大致為:第一步:通過IView對(duì)象的GetOutline方法獲取外邊框。第二步:遍歷獲取該視圖中焊縫序號(hào)的個(gè)數(shù),同時(shí)獲取焊縫標(biāo)注附著點(diǎn)的坐標(biāo)。第三步:根據(jù)邊框尺寸和焊縫序號(hào)個(gè)數(shù)均勻分布焊縫標(biāo)注。最終實(shí)現(xiàn)效果如圖6所示。

5? 焊縫序號(hào)調(diào)整和清單導(dǎo)出(Weld number adjustment and list export)

之前提到,本文只針對(duì)兩個(gè)實(shí)體之間進(jìn)行焊縫識(shí)別,對(duì)于接頭形式的判斷也做了一些調(diào)整,所以有的地方可能還需要改動(dòng),就會(huì)涉及焊縫序號(hào)的刪除或者重新添加等操作。在通過程序進(jìn)行焊縫序號(hào)的重新調(diào)整。對(duì)于提取數(shù)據(jù)的結(jié)果的修改界面如圖7所示。

對(duì)于序號(hào)的變更的原則分為兩種情況:第一種是圖紙未下發(fā)前,更改原則為,刪除的焊縫序號(hào)要重用,新增加的按序號(hào)遞增進(jìn)行排序;第二種是圖紙下發(fā)后,更改原則為,刪除的焊縫序號(hào)不在重用,新增加的序號(hào)按序號(hào)遞增進(jìn)行排序。這里介紹實(shí)現(xiàn)過程的方法,在圖紙上設(shè)計(jì)人員進(jìn)行的操作是無法獲知,每次更改過后程序會(huì)遍歷一遍圖紙,判斷原來的序號(hào)還有哪些,給一個(gè)標(biāo)記,新增的序號(hào)按照剩余的序號(hào)的個(gè)數(shù)給以新的序號(hào)進(jìn)行增加,給一個(gè)新的標(biāo)記。對(duì)于原來的序號(hào)重新進(jìn)行排序,依據(jù)次修改序號(hào)的值。這部分的判斷結(jié)合數(shù)據(jù)庫(kù)來綜合判斷的,其數(shù)據(jù)庫(kù)的設(shè)計(jì)如圖8所示。

圖8 焊縫數(shù)據(jù)庫(kù)設(shè)計(jì)

Fig.8 Weld database design

數(shù)據(jù)庫(kù)會(huì)記錄原有焊縫標(biāo)注序號(hào)的名稱,在遍歷圖紙上的焊縫序號(hào)時(shí),如果可以在數(shù)據(jù)庫(kù)中查詢到說明是沒有更改的,此時(shí)給這個(gè)序號(hào)的delete值一個(gè)新的標(biāo)記,如果查詢不到則說明是新增加的,同時(shí)給delete值一個(gè)新的標(biāo)記,這里需要注意的是每次修改完并進(jìn)行排序之后需要重新將delete值重新初始化,這樣就可以實(shí)現(xiàn)反復(fù)的修改與排序。對(duì)于在圖紙下發(fā)以后的操作是類似的,只需要備份一份數(shù)據(jù)庫(kù),在新的數(shù)據(jù)庫(kù)中進(jìn)行操作即可,這里不再贅述。

修改完之后進(jìn)行焊縫清單導(dǎo)出,其結(jié)果如圖9所示。

6? ?結(jié)論(Conclusion)

本文針對(duì)實(shí)際的焊接件出圖時(shí)對(duì)焊縫序號(hào)進(jìn)行標(biāo)注、焊縫清單導(dǎo)出的人工操作工作量大,對(duì)于SolidWorks自身對(duì)于焊縫標(biāo)注模塊的缺點(diǎn)進(jìn)行優(yōu)化,結(jié)合二次開發(fā)技術(shù)來實(shí)現(xiàn)程序的自動(dòng)焊縫序號(hào)標(biāo)注過程,以及焊縫清單的自動(dòng)導(dǎo)出,實(shí)現(xiàn)了該模塊的智能快速設(shè)計(jì),提高設(shè)計(jì)人員出圖效率,減少了人工干預(yù)而且容易出錯(cuò)的問題,但本文中還存在缺點(diǎn)與不足,對(duì)于焊接接頭形式做了簡(jiǎn)化處理,沒有包含搭接接頭的判斷,而且只針對(duì)兩兩實(shí)體之間的焊縫的判斷和信息的提取,對(duì)于三個(gè)之間的情況做了拆解,在實(shí)際情況中這種情形出現(xiàn)雖然比較少,但是這部分還是需要人工標(biāo)定,是文中的一個(gè)缺陷。從實(shí)際應(yīng)用出發(fā),該程序已經(jīng)可以達(dá)到工程實(shí)際的運(yùn)用,對(duì)于少量特殊的部分需要結(jié)合人工進(jìn)行標(biāo)定。

參考文獻(xiàn)(References)

[1] 賴一楠,武傳松,李宏偉,等.焊接與連接領(lǐng)域科學(xué)基金資助淺析與發(fā)展趨勢(shì)[J].焊接學(xué)報(bào),2019,40(02):1-7;161.

[2] Lee D,Ku N,Kim T,et al.Development and application of an intelligent welding robot system for shipbuilding[J].Robotics and Computer-Integrated Manufacturing,2011,27(2):377-388.

[3] Muhammad,J.,Altun,H.,Abo-Serie,E.Welding seam profiling techniques based on active vision sensing for intelligent robotic welding[J].The International Journal of Advanced Manufacturing Technology,2017,88(1-4):127-145.

[4] 韓博,許允斗,郭路瑤,等.四面體構(gòu)架式可展天線型面劃分與程序化建模[J].中國(guó)機(jī)械工程,2019,30(12):1400-1408.

[5] 陳超祥,胡啟登.SolidWorks高級(jí)教程簡(jiǎn)編[M].北京:機(jī)械工業(yè)出版社,2015.

[6] 李向陽.SolidWorks二次開發(fā)的研究[J].精密制造與自動(dòng)化,2008(02):37-38;53.

[7] 李妍姝.基于SolidWork-API二次開發(fā)的錐齒輪自動(dòng)建模與仿真[J].工業(yè)技術(shù)創(chuàng)新,2016,3(2):234-238.

[8] 索超,李玉翔,林樹忠.基于VB語言對(duì)SolidWorks參數(shù)化設(shè)計(jì)的二次開發(fā)[J].制造業(yè)自動(dòng)化,2013(15):137-139.

[9] 朱亮,陳劍虹.熱影響區(qū)軟化焊接接頭的強(qiáng)度及變形[J].焊接學(xué)報(bào),2004,25(2):61-65;131.

[10] 孫文龍,仲梁維,牛亞運(yùn).基于SolidWorks的工藝門的智能快速設(shè)計(jì)系統(tǒng)[J].農(nóng)業(yè)裝備與車輛工程,2019,57(8):100-103.

猜你喜歡
二次開發(fā)
淺談基于Revit平臺(tái)的二次開發(fā)
西門子Operate高級(jí)編程的旋轉(zhuǎn)坐標(biāo)系二次開發(fā)
淺談Mastercam后處理器的二次開發(fā)
Micaps3.2 版本二次開發(fā)入門淺析
ANSYS Workbench二次開發(fā)在汽車穩(wěn)定桿CAE分析中的應(yīng)用
基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
姜堰市| 德安县| 顺义区| 齐河县| 内黄县| 收藏| 巩义市| 连云港市| 拜城县| 射洪县| 黄骅市| 新化县| 宁河县| 南平市| 拜城县| 二连浩特市| 马公市| 隆尧县| 阜宁县| 新宁县| 丹寨县| 榆林市| 海晏县| 铜川市| 沙田区| 元谋县| 沙洋县| 义乌市| 综艺| 筠连县| 南乐县| 讷河市| 陇西县| 丹棱县| 昔阳县| 宜州市| 枣强县| 双鸭山市| 吉水县| 滨州市| 武穴市|