朱悠悠

摘 要筆者通過對某型號電子樣機的梳理,總結了其中復用頻率較高的特征。通過對腰形草圖的封裝進行了探討與研究,并對腰形草圖定制過程中遇到的問題,例如腰形草圖空間坐標變換、腰形草圖自動生成全約束特征、腰形草圖GUI圖形顯示等關鍵點提出了行之有效的解決方法,最終實現腰形草圖的一鍵式創建,該方法為今后類似草圖特征的封裝起到了重要的借鑒作用。
【關鍵詞】腰形草圖 坐標轉換 GUI
在UG的眾多功能中,草圖功能是最基本,使用頻率最高的功能,因此對草圖進行二次開發,是提高工作效率的重要方式。筆者通過對某型號電子樣機的梳理,腰形草圖在機匣類零件中復用頻率較高,因此將腰形草圖進行封裝,得型號設計人員可以根據輸入參數大小一鍵得到所需的腰形草圖特征,從而將設計人員從重復的勞動中解放出來,提高了其型號設計的效率。本文詳細介紹將腰形草圖的封裝以及封裝過程遇到的技術難點。
1 腰形草圖封裝關鍵技術
1.1 腰形草圖平面定位
對于UG軟件設計人員來說,腰形草圖的所有特征在任意空間的一個平面上,即平面XOY上,該平面需要人工進行選取獲得,然而,對于任意腰形草圖特征來說,其特征同時存在于空間的坐標系XYZ與人工選取的XOY平面上的,因此,需要將腰形草圖特征的坐標轉換成空間絕對坐標,才能保證成型的腰形草圖的幾何唯一性。
1.2 三維空間幾何坐標變換原理
三維空間幾何坐標變換包括三維平移變換、比例變換以及旋轉變換,三維平移變化、比例變換是二維情況的直接推廣;旋轉變換因為可以選擇空間任意方向作為旋轉軸,因此三維空間旋轉變換處理起來較為復雜。與二維變換相似,我們也采用齊次坐標技術來描述空間的各點坐標及其變換,這時,描述空間三維變換的變換矩陣是4×4的形式,由此產生的一系列變換可以用單個矩陣來表示。
1.3 三維坐標變換構造
本文筆者將腰形草圖從一個參考坐標系下的位置變換成絕對坐標系下的位置,變換思路具體過程分為以下兩步:
(1)平移坐標系oxyz,使它的坐標原點與新坐標原點重合;
(2)進行旋轉變換,使兩坐標系的坐標軸重合。
2 腰形草圖封裝方法
2.1 腰形草圖封裝環境
目前研究所UG使用版本為 NX7.5、腰形草圖封裝環境需安裝對應的開發平臺Microsoft Visual 2008以上版本,本文筆者安裝的是Microsoft Visual2010,并且配置好UG NX7.5與Microsoft Visual 2010之C#接口信息。
2.2 腰形草圖封裝步驟
首先,在Microsoft Visual2010中新建一個NX7.5項目。
然后,在新建的項目中設計腰形草圖GUI界面(見圖1)。
根據GUI界面中填寫的參數,在主函數中定義這些參數,并且將其與GUI界面中顯示的參數關聯。
然后新建一個類文件,并在該文件中定義三維坐標變換函數,在該函數中首先定義當前腰形草圖工作坐標系單位矩陣。再根據三維坐標變換構造方法對空間坐標進行定義。然后定義一個腰形草圖構建函數,由于腰形草圖是由直線與圓弧組成的,因此腰形草圖的構建可以分解成直線與圓弧的構建(以下是一段圓弧輪廓的創建代碼)。
Point3d startPoint1 = new Point3d(0.0, 100, 100);Point3d pointOn1 = new Point3d(0.0, -100 100);Point3d endPoint1 = new Point3d(0.0, -300, 200); Arc arc1;arc1 = workPart.Curves.CreateArc(startPoint1, pointOn1, endPoint1, false, out startAndEndGotFlipped1); theSession.ActiveSketch.AddGeometry(arc1,NXOpen.Sketch.InferConstraintsOption.InferNoConstraints);
在完成腰形草圖輪廓的構建之后,對于腰形草圖的每一根輪廓線來說,在腰形草圖中必須全約束才能保證腰形草圖大小的唯一性,因此,需要對腰形草圖輪廓進行尺寸約束(以下是一段圓弧的尺寸約束代碼):
//圓弧C1圓心過原點
NXOpen.Sketch.ConstraintGeometry CL1;CL1.Geometry=CKX;CL1.PointType=NXOpen.Sketch.ConstraintPointType.StartVertex;CL1.SplineDefiningPointIndex = 0;//標注C1尺寸NXOpen.Sketch.DimensionGeometry dimC1;dimC1.Geometry = C1;dimC1.AssocType = NXOpen.Sketch.AssocType.Tangency;dimC1.AssocValue = 42;dimC1.HelpPoint.X = 0.0;dimC1.HelpPoint.Y = 0.0;dimC1.HelpPoint.Z = 0.0;dimC1.View =workPart.ModelingViews.WorkView;
對于腰形草圖現有輪廓無法進行全約束時,可以通過新建的坐標軸和參考線來輔助其約束尺寸。
最后對該項目進行封裝生成yaoxingcaotu.dll文件將其載入在NX7.5中使用就可以通過輸入參數來一鍵式生成腰形草圖了。
作者單位
中國航發湖南動力機械研究所 湖南省株洲市 412002