荊艷麗,仲梁維
(200093 上海市 上海理工大學 機械工程學院)
隨著工業的進步、時代的發展,塑膠模具技術也在不斷發展,熱流道技術興起[1]。熱流道系統是塑膠模具生產設備中的重要組合部分,熱流道系統的功能是銜接注塑機到產品型腔之間的延伸膠道。熱流道系統的設計理念是在需要導熱的部位進行導熱處理,如塑膠熔體的流道,在需要隔熱的部位進行隔熱處理[2]。在熱流道系統中有很多錯綜復雜的管路,如冷卻水管路、油路和氣路等,對應于管路的管口更是數量很多,管路之間通過接頭面板上的管口進行連接。設計人員在三維軟件設計管路時,通常都是采用肉眼識別標簽上的刻字來找面板上對應的管口,這種方式效率低下,容易出錯。通過SolidWorks 軟件提供的API 函數,對SolidWorks 進行二次開發,實現了自動提取接頭面板的管口,為以后管口的自動匹配做準備,也加快了熱流道系統向“智能化”方向、自動化方向快步前進的腳步。
熱流道系統面板根據系統要求的不同,組成面板的單個面板數量也不同。圖1 中所示是由兩塊單個面板組成的系統面板,面板上的標簽有刻字信息,分別對應于相應的管口名稱,要想完成管口的提取,需要將管口的坐標、法向向量、刻字獲取到并且整合到一起。

圖1 面板Fig.1 Panel
目前熱流道系統管道的設計中,管口的匹配是采用人工拾取管口的幾何特征,并且通過肉眼識別刻字的信息對管口進行匹配,這種方式的缺點是效率低、準確性難以保證,經常出現匹配錯誤的情況,同時也無法滿足日后熱流道系統智能化設計的要求。熱流道系統的管口的信息包含在模型的幾何特征里,一方面是管口的坐標信息,另一方面還要獲取標簽上的刻字信息,將幾何特征里的管口信息轉換成文字信息存儲到數據庫,在進行系統智能化設計時,到數據庫讀出需要的管口即可。這種提取方式保證了管口信息的準確性,也為管口的自動匹配設計提供了方法支持。
對SolidWorks 軟件的二次開發,主要通過利用其自帶的大量API 接口,這些API 接口具有兼容性好、利于開發的優點[3]。SolidWorks API 應用程序的編程輸入是一個由上至下的分層樹結構,相應的對象模型之間是包含關系而不是繼承關系[4]。SolidWorks API 對象模型樹最頂層是應用程序級對象SldWorks,該對象中封裝了很多方法和屬性,在SldWorks 對象下面又定義了若干個子類,如Environment,Frame,每個對象又有自己的屬性、方法和事件。在這些接口對象中封裝的有關方法和屬性涵蓋了全部的SolidWorks 數據模型,用戶通過客戶應用程序對這些API 對象及其方法和屬性進行操作,實現對SolidWorks 的功能定制與擴展[5]。
在使用SolidWorks 進行設計時,包括草圖、零件、裝配體在內的都有屬于自己的坐標原點。在SolidWorks 二次開發中,會經常用變換來確定或者移動幾何體的物理位置。當使用變換時,主要涉及到模型空間、草繪空間以及裝配空間,對應于3 種空間主要有3 種類型的坐標點:模型空間點、草繪點、裝配空間點[6]。
實現坐標點在3 種空間的變換是通過一個數學矩陣,如圖2 所示。矩陣包含 16 個元素,其中前9 個元素(a到i)是一個 3×3 的旋轉子陣,(j,k,l)定義了平移向量,m是一個縮放因子,其余3 個在這里不使用。3×3 的旋轉子陣代表3個坐標軸:第1 行表示繞X軸的旋轉;第2 行表示繞Y軸的旋轉;第3 行表示繞Z軸的旋轉。旋轉子陣加上左下角的平移向量以及右下角的縮放因子創建了一個放射變換,通過這個放射變換實現了坐標的變換[6]。

圖2 數學變換矩陣Fig.2 Mathematical transformation matrix
坐標點的轉換主要涉及3 種對象模型,如圖3 所示。

圖3 坐標變換對象模型Fig.3 Coordinate transformation object model
本文的二次開發用到的坐標點變換主要是2個:一是草圖點到模型點的坐標點變換。草圖里的點x,y,z坐標是相對于草繪原點的,通過使用 MathUtility 對象來實現草繪點變換到模型空間的點;二是模型坐標點到裝配體坐標點的變換。在進行裝配設計時,新添加的零件的原點往往和裝配體的原點不會重合,這樣組件里的點的坐標是相對于組件原點的,不是相對于裝配體原點的,從而需要進行坐標變換,來找到組件的點在裝配體里的坐標。
數據庫(Database)是存儲相關數據的集合,由數據庫、數據庫管理系統、數據庫應用程序、計算機軟件和硬件系統以及數據管理員等部分組成。設計過程中往往需要對大量數據進行篩選,如何高效獲取所需數據至關重要。數據庫的另一作用是標準數據的管理,主要對標準件及固定尺寸模型參數進行存儲[7]。本文采用SQL Server 數據庫對數據進行存儲和讀取,SQL Server 數據庫是一種大型關系數據庫,操作難度低,安全程度高,是當下最為常用的服務器體系類數據庫[8]。
連接數據庫代碼:


熱流道系統的總裝配模型是以項目號進行命名,其內部的幾個子裝配體命名也是依據一定的規則,如線框、油缸、分流板、面板(見圖4)等零件在不同的熱流道系統裝配體里的命名是不變的,所以要進行面板接口的位置提取,首先要明確子裝配體中模型的命名規則,找到接頭面板所在的子裝配體。具體編程序是自上而下的While 循環語句遍歷特征樹,通過組件的GetChildren 方法找到接頭面板,利用Select 方法選中接頭面板零件。部分代碼如下:


圖4 單個面板模型Fig.4 Single panel model
通過GetFirstFace 方法,可以遍歷得到面板上所有的面,用Measure 對象的Calculate 方法測量每個面的面積找到面積最大面,面積最大面的法向量就是接口的法向量。用Face 下面的Normal 獲取模型面的法向量,通過坐標轉換求得向量二點在裝配體里的坐標,繼而獲得裝配體里的法向量,部分代碼如下:
'獲取法向量

要獲取接口的圓心坐標,也是在獲得最大面的對象后,利用GetEdges()方法遍歷面上的邊,對邊進行判斷,如果邊是圓并且半徑大于6 mm,那么就需要得到這個圓的圓心坐標。部分代碼如下:

這樣得到的圓心坐標是面板模型中相對于模型空間中原點的坐標,而管道生成需要在總裝配體中進行,所以需要對模型空間中的坐標點進行坐標點變換。部分代碼如下:

熱流道系統管路分為油路、水路和氣路,不同管路接口在面板上有文字的標簽(如圖5 所示)進行標識,要實現自動管路的生成,軟件必須能自動識別這些標簽的內容。標簽是做成配置文件的形式放在軟件中使用,首先通過遍歷特征樹找到裝配體中被激活的標簽,然后通過草圖對象下的GetSketchTextSegments 方法,獲取標簽上的文字信息,部分代碼如下:


圖5 帶文字的標簽Fig.5 Label with text
文字提取到之后,還要對文字的位置進行識別,通過GetCoordinates()方法可以得到文字的定位坐標,但是這個坐標是草圖空間里的坐標,需要進行兩次坐標轉換才可以得到標簽在裝配空間里的坐標值。部分代碼如下:


熱流道系統分為很多種,實際設計熱流道系統時,會根據需要對面板個數進行設計。本文的二次開發適用于不同的面板數量。下一步是對已經獲取了的面板接口的圓心坐標和標簽文字一一對應起來,程序能自動識別水路、油路、氣路的進出口接口,采用嵌套循環for 循環語句,計算圓心到文字定位點的直線距離,根據距離的長短給每個接口匹配名字,部分代碼如下:

將所有數據寫入數據庫方便使用,如圖6所示。

圖6 數據庫數據Fig.6 Database data


本文以熱流道系統在設計過程中的不足為出發點,為日后在三維軟件中實現管口的自動匹配以及系統的智能化設計提供面板管口數據。以SolidWorks2018 三維CAD 軟件為開發平臺,vb.net 為編程語言,采用SQL Server 數據庫進行數據的存儲和讀取,通過對熱流道系統接頭面板管口坐標位置、法向向量、刻字信息的提取和數據整合,為熱流道系統自動化管路提供了數據支撐,使得管路在生成時能準確找到對應的面板管口,同時減少在實際裝配過程中的工時,節約了成本。二次開發過程中涉及坐標點的變換、模型文字識別等,為致力于SolidWorks 二次開發的人員提供了一定的參考。