荊艷麗,仲梁維
(200093 上海市 上海理工大學(xué) 機(jī)械工程學(xué)院)
隨著工業(yè)的進(jìn)步、時(shí)代的發(fā)展,塑膠模具技術(shù)也在不斷發(fā)展,熱流道技術(shù)興起[1]。熱流道系統(tǒng)是塑膠模具生產(chǎn)設(shè)備中的重要組合部分,熱流道系統(tǒng)的功能是銜接注塑機(jī)到產(chǎn)品型腔之間的延伸膠道。熱流道系統(tǒng)的設(shè)計(jì)理念是在需要導(dǎo)熱的部位進(jìn)行導(dǎo)熱處理,如塑膠熔體的流道,在需要隔熱的部位進(jìn)行隔熱處理[2]。在熱流道系統(tǒng)中有很多錯(cuò)綜復(fù)雜的管路,如冷卻水管路、油路和氣路等,對(duì)應(yīng)于管路的管口更是數(shù)量很多,管路之間通過(guò)接頭面板上的管口進(jìn)行連接。設(shè)計(jì)人員在三維軟件設(shè)計(jì)管路時(shí),通常都是采用肉眼識(shí)別標(biāo)簽上的刻字來(lái)找面板上對(duì)應(yīng)的管口,這種方式效率低下,容易出錯(cuò)。通過(guò)SolidWorks 軟件提供的API 函數(shù),對(duì)SolidWorks 進(jìn)行二次開發(fā),實(shí)現(xiàn)了自動(dòng)提取接頭面板的管口,為以后管口的自動(dòng)匹配做準(zhǔn)備,也加快了熱流道系統(tǒng)向“智能化”方向、自動(dòng)化方向快步前進(jìn)的腳步。
熱流道系統(tǒng)面板根據(jù)系統(tǒng)要求的不同,組成面板的單個(gè)面板數(shù)量也不同。圖1 中所示是由兩塊單個(gè)面板組成的系統(tǒng)面板,面板上的標(biāo)簽有刻字信息,分別對(duì)應(yīng)于相應(yīng)的管口名稱,要想完成管口的提取,需要將管口的坐標(biāo)、法向向量、刻字獲取到并且整合到一起。
圖1 面板Fig.1 Panel
目前熱流道系統(tǒng)管道的設(shè)計(jì)中,管口的匹配是采用人工拾取管口的幾何特征,并且通過(guò)肉眼識(shí)別刻字的信息對(duì)管口進(jìn)行匹配,這種方式的缺點(diǎn)是效率低、準(zhǔn)確性難以保證,經(jīng)常出現(xiàn)匹配錯(cuò)誤的情況,同時(shí)也無(wú)法滿足日后熱流道系統(tǒng)智能化設(shè)計(jì)的要求。熱流道系統(tǒng)的管口的信息包含在模型的幾何特征里,一方面是管口的坐標(biāo)信息,另一方面還要獲取標(biāo)簽上的刻字信息,將幾何特征里的管口信息轉(zhuǎn)換成文字信息存儲(chǔ)到數(shù)據(jù)庫(kù),在進(jìn)行系統(tǒng)智能化設(shè)計(jì)時(shí),到數(shù)據(jù)庫(kù)讀出需要的管口即可。這種提取方式保證了管口信息的準(zhǔn)確性,也為管口的自動(dòng)匹配設(shè)計(jì)提供了方法支持。
對(duì)SolidWorks 軟件的二次開發(fā),主要通過(guò)利用其自帶的大量API 接口,這些API 接口具有兼容性好、利于開發(fā)的優(yōu)點(diǎn)[3]。SolidWorks API 應(yīng)用程序的編程輸入是一個(gè)由上至下的分層樹結(jié)構(gòu),相應(yīng)的對(duì)象模型之間是包含關(guān)系而不是繼承關(guān)系[4]。SolidWorks API 對(duì)象模型樹最頂層是應(yīng)用程序級(jí)對(duì)象SldWorks,該對(duì)象中封裝了很多方法和屬性,在SldWorks 對(duì)象下面又定義了若干個(gè)子類,如Environment,F(xiàn)rame,每個(gè)對(duì)象又有自己的屬性、方法和事件。在這些接口對(duì)象中封裝的有關(guān)方法和屬性涵蓋了全部的SolidWorks 數(shù)據(jù)模型,用戶通過(guò)客戶應(yīng)用程序?qū)@些API 對(duì)象及其方法和屬性進(jìn)行操作,實(shí)現(xiàn)對(duì)SolidWorks 的功能定制與擴(kuò)展[5]。
在使用SolidWorks 進(jìn)行設(shè)計(jì)時(shí),包括草圖、零件、裝配體在內(nèi)的都有屬于自己的坐標(biāo)原點(diǎn)。在SolidWorks 二次開發(fā)中,會(huì)經(jīng)常用變換來(lái)確定或者移動(dòng)幾何體的物理位置。當(dāng)使用變換時(shí),主要涉及到模型空間、草繪空間以及裝配空間,對(duì)應(yīng)于3 種空間主要有3 種類型的坐標(biāo)點(diǎn):模型空間點(diǎn)、草繪點(diǎn)、裝配空間點(diǎn)[6]。
實(shí)現(xiàn)坐標(biāo)點(diǎn)在3 種空間的變換是通過(guò)一個(gè)數(shù)學(xué)矩陣,如圖2 所示。矩陣包含 16 個(gè)元素,其中前9 個(gè)元素(a到i)是一個(gè) 3×3 的旋轉(zhuǎn)子陣,(j,k,l)定義了平移向量,m是一個(gè)縮放因子,其余3 個(gè)在這里不使用。3×3 的旋轉(zhuǎn)子陣代表3個(gè)坐標(biāo)軸:第1 行表示繞X軸的旋轉(zhuǎn);第2 行表示繞Y軸的旋轉(zhuǎn);第3 行表示繞Z軸的旋轉(zhuǎn)。旋轉(zhuǎn)子陣加上左下角的平移向量以及右下角的縮放因子創(chuàng)建了一個(gè)放射變換,通過(guò)這個(gè)放射變換實(shí)現(xiàn)了坐標(biāo)的變換[6]。
圖2 數(shù)學(xué)變換矩陣Fig.2 Mathematical transformation matrix
坐標(biāo)點(diǎn)的轉(zhuǎn)換主要涉及3 種對(duì)象模型,如圖3 所示。
圖3 坐標(biāo)變換對(duì)象模型Fig.3 Coordinate transformation object model
本文的二次開發(fā)用到的坐標(biāo)點(diǎn)變換主要是2個(gè):一是草圖點(diǎn)到模型點(diǎn)的坐標(biāo)點(diǎn)變換。草圖里的點(diǎn)x,y,z坐標(biāo)是相對(duì)于草繪原點(diǎn)的,通過(guò)使用 MathUtility 對(duì)象來(lái)實(shí)現(xiàn)草繪點(diǎn)變換到模型空間的點(diǎn);二是模型坐標(biāo)點(diǎn)到裝配體坐標(biāo)點(diǎn)的變換。在進(jìn)行裝配設(shè)計(jì)時(shí),新添加的零件的原點(diǎn)往往和裝配體的原點(diǎn)不會(huì)重合,這樣組件里的點(diǎn)的坐標(biāo)是相對(duì)于組件原點(diǎn)的,不是相對(duì)于裝配體原點(diǎn)的,從而需要進(jìn)行坐標(biāo)變換,來(lái)找到組件的點(diǎn)在裝配體里的坐標(biāo)。
數(shù)據(jù)庫(kù)(Database)是存儲(chǔ)相關(guān)數(shù)據(jù)的集合,由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)應(yīng)用程序、計(jì)算機(jī)軟件和硬件系統(tǒng)以及數(shù)據(jù)管理員等部分組成。設(shè)計(jì)過(guò)程中往往需要對(duì)大量數(shù)據(jù)進(jìn)行篩選,如何高效獲取所需數(shù)據(jù)至關(guān)重要。數(shù)據(jù)庫(kù)的另一作用是標(biāo)準(zhǔn)數(shù)據(jù)的管理,主要對(duì)標(biāo)準(zhǔn)件及固定尺寸模型參數(shù)進(jìn)行存儲(chǔ)[7]。本文采用SQL Server 數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和讀取,SQL Server 數(shù)據(jù)庫(kù)是一種大型關(guān)系數(shù)據(jù)庫(kù),操作難度低,安全程度高,是當(dāng)下最為常用的服務(wù)器體系類數(shù)據(jù)庫(kù)[8]。
連接數(shù)據(jù)庫(kù)代碼:
熱流道系統(tǒng)的總裝配模型是以項(xiàng)目號(hào)進(jìn)行命名,其內(nèi)部的幾個(gè)子裝配體命名也是依據(jù)一定的規(guī)則,如線框、油缸、分流板、面板(見圖4)等零件在不同的熱流道系統(tǒng)裝配體里的命名是不變的,所以要進(jìn)行面板接口的位置提取,首先要明確子裝配體中模型的命名規(guī)則,找到接頭面板所在的子裝配體。具體編程序是自上而下的While 循環(huán)語(yǔ)句遍歷特征樹,通過(guò)組件的GetChildren 方法找到接頭面板,利用Select 方法選中接頭面板零件。部分代碼如下:
圖4 單個(gè)面板模型Fig.4 Single panel model
通過(guò)GetFirstFace 方法,可以遍歷得到面板上所有的面,用Measure 對(duì)象的Calculate 方法測(cè)量每個(gè)面的面積找到面積最大面,面積最大面的法向量就是接口的法向量。用Face 下面的Normal 獲取模型面的法向量,通過(guò)坐標(biāo)轉(zhuǎn)換求得向量二點(diǎn)在裝配體里的坐標(biāo),繼而獲得裝配體里的法向量,部分代碼如下:
'獲取法向量
要獲取接口的圓心坐標(biāo),也是在獲得最大面的對(duì)象后,利用GetEdges()方法遍歷面上的邊,對(duì)邊進(jìn)行判斷,如果邊是圓并且半徑大于6 mm,那么就需要得到這個(gè)圓的圓心坐標(biāo)。部分代碼如下:
這樣得到的圓心坐標(biāo)是面板模型中相對(duì)于模型空間中原點(diǎn)的坐標(biāo),而管道生成需要在總裝配體中進(jìn)行,所以需要對(duì)模型空間中的坐標(biāo)點(diǎn)進(jìn)行坐標(biāo)點(diǎn)變換。部分代碼如下:
熱流道系統(tǒng)管路分為油路、水路和氣路,不同管路接口在面板上有文字的標(biāo)簽(如圖5 所示)進(jìn)行標(biāo)識(shí),要實(shí)現(xiàn)自動(dòng)管路的生成,軟件必須能自動(dòng)識(shí)別這些標(biāo)簽的內(nèi)容。標(biāo)簽是做成配置文件的形式放在軟件中使用,首先通過(guò)遍歷特征樹找到裝配體中被激活的標(biāo)簽,然后通過(guò)草圖對(duì)象下的GetSketchTextSegments 方法,獲取標(biāo)簽上的文字信息,部分代碼如下:
圖5 帶文字的標(biāo)簽Fig.5 Label with text
文字提取到之后,還要對(duì)文字的位置進(jìn)行識(shí)別,通過(guò)GetCoordinates()方法可以得到文字的定位坐標(biāo),但是這個(gè)坐標(biāo)是草圖空間里的坐標(biāo),需要進(jìn)行兩次坐標(biāo)轉(zhuǎn)換才可以得到標(biāo)簽在裝配空間里的坐標(biāo)值。部分代碼如下:
熱流道系統(tǒng)分為很多種,實(shí)際設(shè)計(jì)熱流道系統(tǒng)時(shí),會(huì)根據(jù)需要對(duì)面板個(gè)數(shù)進(jìn)行設(shè)計(jì)。本文的二次開發(fā)適用于不同的面板數(shù)量。下一步是對(duì)已經(jīng)獲取了的面板接口的圓心坐標(biāo)和標(biāo)簽文字一一對(duì)應(yīng)起來(lái),程序能自動(dòng)識(shí)別水路、油路、氣路的進(jìn)出口接口,采用嵌套循環(huán)for 循環(huán)語(yǔ)句,計(jì)算圓心到文字定位點(diǎn)的直線距離,根據(jù)距離的長(zhǎng)短給每個(gè)接口匹配名字,部分代碼如下:
將所有數(shù)據(jù)寫入數(shù)據(jù)庫(kù)方便使用,如圖6所示。
圖6 數(shù)據(jù)庫(kù)數(shù)據(jù)Fig.6 Database data
本文以熱流道系統(tǒng)在設(shè)計(jì)過(guò)程中的不足為出發(fā)點(diǎn),為日后在三維軟件中實(shí)現(xiàn)管口的自動(dòng)匹配以及系統(tǒng)的智能化設(shè)計(jì)提供面板管口數(shù)據(jù)。以SolidWorks2018 三維CAD 軟件為開發(fā)平臺(tái),vb.net 為編程語(yǔ)言,采用SQL Server 數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的存儲(chǔ)和讀取,通過(guò)對(duì)熱流道系統(tǒng)接頭面板管口坐標(biāo)位置、法向向量、刻字信息的提取和數(shù)據(jù)整合,為熱流道系統(tǒng)自動(dòng)化管路提供了數(shù)據(jù)支撐,使得管路在生成時(shí)能準(zhǔn)確找到對(duì)應(yīng)的面板管口,同時(shí)減少在實(shí)際裝配過(guò)程中的工時(shí),節(jié)約了成本。二次開發(fā)過(guò)程中涉及坐標(biāo)點(diǎn)的變換、模型文字識(shí)別等,為致力于SolidWorks 二次開發(fā)的人員提供了一定的參考。