NX二次開發(fā)工具--日志_第1頁
NX二次開發(fā)工具--日志_第2頁
NX二次開發(fā)工具--日志_第3頁
NX二次開發(fā)工具--日志_第4頁
NX二次開發(fā)工具--日志_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、日志日志是快速實(shí)用的NX二次開發(fā)工具,通過錄制、編輯和回放用戶交互操作,日志自動(dòng)生成大量的程序代碼,可以用來創(chuàng)建二次開發(fā)解決方案。日志基于通用應(yīng)用程序接口和.NET框架,它在NX交互進(jìn)程中創(chuàng)建一個(gè)腳本文件,通過腳本文件回放用戶交互操作。在腳本文件的基礎(chǔ)上,進(jìn)行進(jìn)一步編輯修改,通過添加的用戶接口和編程邏輯可以快速進(jìn)行客戶化的定制開發(fā)。日志功能支持VisualBasic,C+,Java和C#等語言,日志錄制前需要選擇其中一種通用的API語言。日志錄制完成后,通過修改編輯應(yīng)用于的應(yīng)用程序中。目前Windows平臺(tái)只支持VisualBasic.NET和C#.NET兩種語言,其他語言可以在UNIX平臺(tái)上

2、使用。本章介紹日志的錄制、編輯和回放,以及如何使用日志功能輔助進(jìn)行NX二次開發(fā),提高開發(fā)效率。2.1日志操作日志的基本功能包括日志的錄制、回放和編輯等。作為NX二次開發(fā)的重要手段,NX二次開發(fā)的編程人員首先必須熟練掌握日志的使用方法。卜II欝百雪.圖1日志菜單工具條日志命令可以操作菜單,也可以點(diǎn)擊相應(yīng)的工具條,見圖1。日志錄制完成后,生成日志文件,用戶可以對(duì)日志文件進(jìn)行編輯和回放。回放日志時(shí),在日志管理器中瀏覽并選擇日志文件,點(diǎn)擊運(yùn)行按鈕來執(zhí)行日志。使用日志的回放功能可以重現(xiàn)日志錄制的交互操作過程。在錄制日志前,先設(shè)置錄制編程語言,選擇PreferencesUserInterface,在參數(shù)設(shè)

3、置對(duì)話框里打開日志標(biāo)簽,在語言選項(xiàng)中選擇編程語言。如圖2,本章默認(rèn)選擇的編程語言為C#語言。OVOC績(jī)oumalFileFormatQASCII*UnicodeUnicodeBigEndianQUTF-80InsertMenu/DialogBox匸omments圖2日志語言選擇211日志指示器并不是所有NX命令都支持日志,日志錄制時(shí),每一個(gè)NX命令都有一個(gè)標(biāo)記來表示該命令是否支持日志,這個(gè)標(biāo)記叫做日志指示器,在菜單和工具條上都有顯示。表1顯示了日志指示器的標(biāo)識(shí)及其意義部分支持意味著并非支持所有的NX命令。表1:日志指示器標(biāo)識(shí)標(biāo)識(shí)說明菜單命令支持日志菜單命令部分支持日志口工具條支持日志b工具條部

4、分支持日志日志錄制時(shí),如果日志指示器沒有顯示,可以通過修改環(huán)境變量UGII_JOURNAL_INDICATOR來控制日志指示器的關(guān)閉和顯示。當(dāng)該環(huán)境變量的值為0時(shí),日志指示器關(guān)閉,環(huán)境變量為其他值或者沒有設(shè)置時(shí),打開日志顯示器。2.1.2錄制日志點(diǎn)擊工具條錄制按鈕或者選擇ToolsfJournalfRecord錄制日志,指定輸出文件存儲(chǔ)日志。日志錄制完成后,選擇ToolsfJournalfStopRecording停止錄制,指定路徑下生成了一個(gè)日志腳本文件,比如QuickExtrud.cs。所有支持日志的NX命令可以錄制成通用應(yīng)用程序接口代碼。如果錄制語言選用C#,可以錄制的日志文件的后綴名為

5、.cs,如果選用VB.NET語言,則后綴名為.vb。詳細(xì)步驟如下:步驟一、新建或者打開一個(gè)部件。點(diǎn)擊RecordJournal工具條命令或者菜單ToolsfJournalfRecord。彈出JournalRecord對(duì)話框,要求用戶輸入錄制文件名,見圖3,文件類型為*.cs,如果文件類型是*.vb,在參數(shù)預(yù)設(shè)置中設(shè)置錄制的編程語言即可。假設(shè)輸入錄制的文件名為QuickExtrude,單擊OK后,進(jìn)入錄制狀態(tài)。查找氾IS():1QuickExtmdeT*自呼最近璽可的位名稱修改日期翹大小journal.匚s2011/10/1015:29VisualC#Sourcefile5KB汀對(duì)QuickEx

6、trude.cs2011/9/2811:01VisualC#Sourcefile7KB|皙|QuickExtrudel.cs2011/9/2616:29VisualC#Sourcefile11KB桌面芒JournalRecordr庫計(jì)算機(jī)網(wǎng)絡(luò)文件名:|QuicKEmtmde.cs文件類型4):IC#ScrnrceFiles(*.ce)步驟二、錄制日志,錄制日志的實(shí)質(zhì)是用腳本語言來記錄用戶的交互操作,注意只有日志指示器中支持的命令才能被錄制成腳本文件。錄制過程中可以靈活使用Journal命令,比如可以暫停錄制、插入注釋等。比如用戶操作是在NX交互環(huán)境中,選擇了一個(gè)草圖,進(jìn)行拉伸。步驟三、錄制完成

7、用戶選擇菜單JournalStopRecording,可以停止錄制。錄制完成后,在步驟一指定的路徑下,生成一個(gè)用戶命名的腳本文件,比如QuickExtrude.cs。2.1.2編輯回放日志日志錄制完成后,選擇菜單ToolsfJournalfPlay回放日志,在日志管理器中,點(diǎn)擊Browse按鈕,選擇錄制的日志文件,點(diǎn)擊Run按鈕,回放日志。通過回放日志,可以重顯錄制的交互操作。在部件導(dǎo)航器中,刪除錄制的拉伸草圖的特征。見圖4。&rPartNavigatorName*LayerCc(:HistoryMode1111+每ModelViewsi飼Cameras宙百UserExpressions-曲M

8、OdelHistoryBlock(0)Sketch(4)5KETC.Sketch(8)5KETC.Sketch(12)SKET.Extrude(13)圖4日志回放生成的特征如圖5,在日志管理器中選擇錄制的QuickExtrude.cs日志文件,單擊Run,運(yùn)行日志文件。在部件導(dǎo)航器中生成了一個(gè)拉伸特征,該拉伸特征和錄制的交互操作產(chǎn)生的拉伸特征完全相同。編輯日志時(shí),在日志管理器中,點(diǎn)擊Edit按鈕,在管理器中打開選定的腳本文件,用戶可以直接修改,編輯完成后回放日志。如果編輯的日志文件存在錯(cuò)誤,回放時(shí)候,彈出錯(cuò)誤信息窗口,同時(shí)在日志管理器中高亮顯示錯(cuò)誤行,見圖6。錯(cuò)誤信息為:存在語法錯(cuò)誤,代碼行尾

9、缺分號(hào),提醒用戶修改錯(cuò)誤。編輯日志文件可以使用其他任意文本編輯器。專業(yè)編程人員可以使用VisualStudio.NET,利用它強(qiáng)大的語法糾錯(cuò)能力,進(jìn)行腳本文件的修改,編譯測(cè)試錯(cuò)誤,可以極大的提高開發(fā)效率。JournalManagerXFileName11JClose圖5日志回放圖6日志錯(cuò)誤顯示22日志在NX二次開發(fā)中的應(yīng)用日志可用于NX的二次開發(fā),但是直接錄制日志沒有用戶界面,而且回放時(shí),根據(jù)確定的對(duì)象名稱重復(fù)錄制的步驟。本節(jié)將討論如何修改日記提供用戶界面,使日志支持通用的應(yīng)用程序的開發(fā)。也將討論如何把日志遷移到一個(gè)完全編譯和鏈接的應(yīng)用程序。修改日志,在日志中添加對(duì)話框等操作的后日志的日志稱為

10、日志應(yīng)用程序。把其他需要編譯鏈接的應(yīng)用成為完全編譯和鏈接的應(yīng)用程序。把錄制的日志應(yīng)用到完全編譯鏈接的應(yīng)用程序中是日志的非常重要的應(yīng)用。表2顯示了不同應(yīng)用程序的差異,一個(gè)是錄制的日志,另外一個(gè)是加入到應(yīng)用程序中的日志,另外一個(gè)是完全編譯和鏈接的應(yīng)用程序。String)的標(biāo)簽,第二個(gè)表示對(duì)話框標(biāo)題,第三個(gè)表示,輸表2不同日志應(yīng)用程序日志(被記錄)單個(gè)源文件操作和錄制時(shí)相同命名的對(duì)象,由作者使用參數(shù)輸入限NX命令的支持日志日志應(yīng)用程序(添加用戶界面)單個(gè)源文件對(duì)于用戶選擇的對(duì)象,由用戶在運(yùn)行時(shí)使用參數(shù)輸入可以用所有.NET支持的通用API的類在NX啟動(dòng)階段不提供初始化在NX啟動(dòng)階段不提供初始化事件事

11、件基于許可檢驗(yàn)的特征基于許可檢驗(yàn)的特征完全被編譯和鏈接的應(yīng)用程序任何數(shù)量的源文件對(duì)于用戶選擇的對(duì)象,由用戶在運(yùn)行時(shí)使用參數(shù)輸入可以使用所有通用API的類和任何所需的.NET類在NX啟動(dòng)階段,應(yīng)用程序可以被自動(dòng)加載,啟動(dòng)方法可以被定義為注冊(cè)事件來處理,以支持對(duì)話框,用戶定義的對(duì)象和許多其他運(yùn)行選項(xiàng)在開發(fā)周期中需要作者許可,在向用戶發(fā)布前需要簽名使用日志輔助創(chuàng)建NX二次開發(fā)項(xiàng)目時(shí)候,需注意以下幾點(diǎn)。在Window平臺(tái)上,日志語言目前僅限于VisualBasic.NET和C#.NET。如果需要開發(fā)其他語言的應(yīng)用程序,可以編譯日志生成動(dòng)態(tài)鏈接庫,并與創(chuàng)建的NX二次開發(fā)應(yīng)用程序連接起來。一個(gè)日志中可能無

12、法調(diào)用其他日志中的方法。如果一個(gè)文件中編寫代碼太龐大而復(fù)雜,需要多個(gè)文件時(shí)候,可以把它們編譯和鏈接到同一個(gè)應(yīng)用程序中。一個(gè)日志首次運(yùn)行時(shí),由于.NET庫的加載,第一次執(zhí)行需要較長(zhǎng)的時(shí)間。NX只能與部分.NET庫鏈接。如果日志鏈接到還沒支持.NET庫的時(shí)候,將發(fā)生錯(cuò)誤。在NX7.5版本中,日志支持.NET庫包含:mscorlib.dllSystem.dllSystem.Windows.Forms.dllSystem.Drawing.dll除了這些庫,.NET功能中的其他類庫無法在日志中回放。如果應(yīng)用程序需要其他庫,編譯和鏈接該庫到應(yīng)用程序中。例如,如果應(yīng)用程序需要實(shí)現(xiàn)一個(gè)客戶機(jī)/服務(wù)器體系結(jié)構(gòu),

13、需要編譯鏈接System.Runtime.Remoting.dll。2.3日志應(yīng)用程序范例范例QuickExtrude演示了錄制日志、編輯日志和運(yùn)行日志等使用日志創(chuàng)建日志應(yīng)用程序的整個(gè)過程。使用該案例需要先打開或者創(chuàng)建一個(gè)部件,該部件中至少含有一個(gè)草圖特征。日志錄制時(shí)先選擇一個(gè)草圖,然后通過拉伸創(chuàng)建實(shí)體。錄制完成后編輯日志源代碼,要求能夠彈出用戶界面讓用戶交互選擇草圖,在對(duì)話框中輸入拉伸起始距離和終止距離,進(jìn)行拉伸操作。本例的關(guān)鍵在于如何在錄制的代碼中,添加用戶界面包含用戶輸入拉伸起始和終止位置的對(duì)話框以及草圖選擇的對(duì)話框。這個(gè)例子也說明了如何通過編輯一個(gè)日志文件來創(chuàng)建日志應(yīng)用程序。2.3.1

14、添加拉伸位置對(duì)話框草圖拉伸時(shí),需要用戶輸入拉伸的起始位置和終止位置,日志根據(jù)交互操作用戶輸入的值設(shè)置拉伸起始和終止值(0.0和1.0),進(jìn)行拉伸。C#代碼如下:extrudeBuilder1.Limits.StartExtend.Value.RightHandSide=0;extrudeBuilder1.Limits.EndExtend.Value.RightHandSide=1;如果使用對(duì)話框的形式動(dòng)態(tài)確定草圖拉伸的起始和終止位置,需要修改代碼,添加一個(gè)簡(jiǎn)單的用戶界面,用對(duì)話框輸入框控件的值代替0.0和1.0。NXOpen的.NET庫中的類NXInputBox類提供了2種靜態(tài)函數(shù)GetInp

15、utNumber和GetInputString,分別用來創(chuàng)建數(shù)值輸入對(duì)話框和字符串輸入對(duì)話框。靜態(tài)函數(shù)GetInputNumber和GetInputString分別有多個(gè)重載的靜態(tài)函數(shù),重載的靜態(tài)函數(shù)的區(qū)別在于輸入?yún)?shù)個(gè)數(shù)的不同,有關(guān)這2個(gè)靜態(tài)函數(shù)的重載見表3。表3NXInputBox靜態(tài)函數(shù)說明函數(shù)名重載函數(shù)形式說明GetlnputNumberGetlnputNumber(String)一個(gè)字符串輸入?yún)?shù)表示數(shù)值輸入框的標(biāo)簽GetInputNumber(String,String)兩個(gè)字符串輸入?yún)?shù),第一個(gè)表示數(shù)值輸入框的標(biāo)簽,第二個(gè)表示對(duì)話框標(biāo)題GetlnputNumber(String,

16、String,含有三個(gè)字符串輸入?yún)?shù),第一個(gè)表示數(shù)值輸入框入數(shù)值的默認(rèn)字符串。三個(gè)輸入?yún)?shù),前2個(gè)字符串輸入?yún)?shù),分別表示GetlnputNumber(String,String,數(shù)值輸入框標(biāo)簽和對(duì)話框標(biāo)題,第三個(gè)Double類Double)型的參數(shù),表示輸入的數(shù)值的默認(rèn)值GetInputString(String)一個(gè)字符串輸入?yún)?shù),表示字符串輸入框的標(biāo)簽2個(gè)字符串輸入?yún)?shù),第一個(gè)表示字符串標(biāo)簽,第GetlnputString(String,String)二個(gè)表示對(duì)話框的標(biāo)題GetlnputString3個(gè)字符串輸入?yún)?shù),第一個(gè)表示字符串輸入對(duì)話GetlnputString(String,S

17、tring,St框的標(biāo)簽,第二個(gè)表示對(duì)話框的標(biāo)題,第三個(gè)表示ring)輸入對(duì)話框的字符串的默認(rèn)值本例使用靜態(tài)函數(shù)GetlnputString函數(shù)的第三種重載形式定義2個(gè)含有一個(gè)字符輸入框的對(duì)話框。使用下面4行代碼替換上面錄制的2行代碼。stringstart_value=NXInputBox.GetInputString(SettheStartLimit:,ExtrudeLimit,0);stringend_value=NXInputBox.GetInputString(SettheEndLimit:,ExtrudeLimit,1);extrudeBuilder1.Limits.StartEx

18、tend.Value.RightHandSide=start_value;extrudeBuilder1.Limits.EndExtend.Value.RightHandSide=end_value;替換代碼中定義列2個(gè)string類型的變量start_value和end_value,使用NXInputBox類GetInputString方法給他們賦值。NXI叩utBox的靜態(tài)函數(shù)彈出對(duì)話框中要求用戶輸入需要的拉伸的位置值。要訪問該接口類,必須包含NXOpenUl名稱空間。UsingNXOpenUI;通過NXlnputBox類的GetlnputString靜態(tài)方法添加了2個(gè)對(duì)話框,對(duì)話框形式見

19、圖7。圖7拉伸位置對(duì)話框2.3.2添加草圖選擇對(duì)話框?yàn)榱颂砑硬輬D選擇,創(chuàng)建一個(gè)靜態(tài)函數(shù)SelectSketch,該函數(shù)的功能添加并獲取用戶界面選擇的草圖。在添加對(duì)象選擇對(duì)話框之前必須了解日志中對(duì)象的選擇粘性。日志錄制的是精確事件,在錄制過程中用戶選擇的對(duì)象和操作中都是確定的。日志中的對(duì)象不是“意圖”選擇,也不是一系列用戶操作獲得的一類的對(duì)象。相反地,日志記錄的是所選對(duì)象實(shí)際名稱,以及對(duì)這些對(duì)象調(diào)用的具體方法。日志回放時(shí)只能對(duì)相同命名的對(duì)象進(jìn)行操作。這種行為被稱為選擇粘性SelectionStickiness例如,錄制抑制視圖中的所有基準(zhǔn)面的交互操作,日志記錄的是抑制的每個(gè)基準(zhǔn)面的名稱和抑制基準(zhǔn)

20、面的最終方法。日志回放時(shí)將根據(jù)錄制對(duì)象的名稱進(jìn)行操作。如果日志脫離它原始記錄的環(huán)境,選擇粘性有時(shí)會(huì)導(dǎo)致回放失敗。例如,如果該日志在其他部件文件中回放,并且這個(gè)部件文件不包含相同名字的基準(zhǔn)面,將會(huì)產(chǎn)生錯(cuò)誤。在QuickExtrude的例子中,錄制選擇粘性的草圖名稱為“SKETCH_002”Sketch(12)為草圖特征名,拉伸曲線為草圖特征中的名為“curveline7”的曲線。NXOpen.Features.Featurefeatures1=newNXOpen.Features.Feature1;NXOpen.Features.SketchFeaturesketchFeature1=(NXOp

21、en.Features.SketchFeature)workPart.Features.FindObject(SKETCH(12);features10=sketchFeature1;CurveFeatureRulecurveFeatureRule1;curveFeatureRule1workPart.ScRuleFactory.CreateRuleCurveFeature(features1);section1.AllowSelfIntersection(true);SelectionIntentRulerules1=newSelectionIntentRule1;rules10=curve

22、FeatureRule1;Sketchsketch1=(Sketch)workPart.Sketches.FindObject(SKETCH_002);Lineline1=(Line)sketch1.FindObject(CurveLine7);NXObjectnullNXObject=null;Point3dhelpPoint1=newPoint3d(1.38057758650344,1.03015642718979,4.0);section1.AddToSection(rules1,line1,nullNXObject,nullNXObject,helpPoint1,NXOpen.Sect

23、ion.Mode.Create,false);日志錄制完成后,根據(jù)要求編輯日志,定義對(duì)話框讓用戶動(dòng)態(tài)選擇草圖,需要?jiǎng)h除選擇粘性,添加支持草圖交互選擇代碼,下面是進(jìn)行草圖交互選擇代碼示例??梢园呀粨Q選擇草圖功能定義為類的靜態(tài)函數(shù)進(jìn)行調(diào)用。在當(dāng)前工作部件中實(shí)現(xiàn)動(dòng)態(tài)的選擇草圖的功能,需要在程序中設(shè)置選擇范圍,可以采取以下步驟:定義選擇范圍定義選擇屏蔽3.使用SelectionManager類中的SelectObject方法選擇一個(gè)特定的對(duì)象。SelectObject的方法調(diào)用一個(gè)簡(jiǎn)單的對(duì)話框允許選擇草圖。要實(shí)現(xiàn)用戶界面類和選擇對(duì)象屏蔽,需要包含以下命名空間。usingNXOpen.UF;usingN

24、XOpenUI;交互選擇草圖參考代碼。publicstaticSketchSelectSketch()UIui=UI.GetUI();Stringmessage=Selectsketch;Stringtitle=Selection;Selection.SelectionScopescope=Selection.SelectionScope.WorkPart;BooleankeepHighlighted=false;BooleanincludeFeatures=true;Selection.SelectionActionselectionAction=Selection.SelectionAct

25、ion.ClearAndEnableSpecific;Selection.MaskTripleselectionMask_array=newSelection.MaskTriple2;selectionMask_array0.Type=UFConstants.UF_sketch_type;selectionMask_array0.Subtype=0;selectionMask_array0.SolidBodySubtype=0;NXObjectselectedObject=null;Point3dcursor;ui.SelectionManager.SelectObject(message,t

26、itle,scope,selectionAction,includeFeatures,keepHighlighted,selectionMask_array,outselectedObject,outcursor);Sketchsketch=(Sketch)selectedObject;if(sketch=null)returnnull;returnsketch;草圖選擇的調(diào)用方法可以添加到日志開始部分。Sketchsketch1=SelectSketch();if(sketch1=null)return;錄制日志使用FindObject方法引用一個(gè)特定名字的對(duì)象。比如錄制所選的草圖對(duì)象是“S

27、KETCH(12)”。下面的代碼查找命名的對(duì)象,并應(yīng)用對(duì)象到適當(dāng)?shù)墓δ苤小?移除的代碼NXOpen.Features.Featurefeatures1=newNXOpen.Features.Feature1;sketchFeature1NXOpen.Features.SketchFeature(NXOpen.Features.SketchFeature)workPart.Features.FindObject(SKETCH(12);features10=sketchFeature1;為了實(shí)現(xiàn)草圖的交互選擇,例子中使用SelectSketch靜態(tài)函數(shù)提供用戶交互選定的草圖對(duì)象。在錄制日志中,給拉

28、伸操作中的拉伸選項(xiàng)添加實(shí)際曲線也是通過使用特定命名的對(duì)象來完成的。/移除的代碼Sketchsketch1=(Sketch)workPart.Sketches.FindObject(SKETCH_002);Lineline1=(Line)sketch1.FindObject(CurveLine7);日志中的選擇意圖是特征曲線,即選擇選定特征中的所有曲線。因此,需要查找草圖特征中的曲線,并用交互式選定草圖中的曲線更換FindObject()方法調(diào)用。/新增的代碼NXObjectgeoms=sketch1.GetAllGeometry();NXObjectnXObject1=geoms0;用Adds

29、ection方法中的nXObjectl替換arcl的應(yīng)用/移除的代碼section1.AddToSection(rules1,line1,nullNXObject,nullNXObject,helpPoint1,NXOpen.Section.Mode.Create,false);/新增的代碼NXObjectnullNXObject=null;section1.AddToSection(rules1,nXObject1,nullNXObject,nullNXObject,helpPoint1,Section.Mode.Create,false);2.3.3日志回放按照要求編輯日志文件后回放日志,

30、本例中回放日志要求當(dāng)前的部件必須包含一個(gè)草圖特征。回放時(shí)首先選擇對(duì)話框選擇一個(gè)草圖特征。在成功選擇草圖后,依次彈出拉伸起始值和拉伸終止值對(duì)話框,在對(duì)話框的SetStartLimit和SetEndLimit輸入框中分別輸入開始值和終止值。日志回放完成后,通過選擇的草圖創(chuàng)建了一個(gè)拉伸特征,拉伸的起始位置和終止位置由用戶輸入確定。2.4日志創(chuàng)建編譯和鏈接的應(yīng)用程序編譯和鏈接的應(yīng)用程序不僅對(duì)通用API和.NET框架完全訪問,也提供了對(duì)NX的事件,NX的對(duì)話框和用戶定義對(duì)象的完全訪問。編譯應(yīng)用程序還需要作者許可,應(yīng)用程序加載過程中檢查作者許可,并運(yùn)行簽署功能。日志僅限于單個(gè)的源文件,能夠訪問大多數(shù)通用A

31、PI功能。日志不要求作者許可。日志和編譯過的應(yīng)用程序都使用運(yùn)行時(shí)基于許可檢查的特征。把日志應(yīng)用程序移到編譯和鏈接過的應(yīng)用程序通常取決于應(yīng)用程序的復(fù)雜性和效率。盡管日志和編譯鏈接的應(yīng)用程序存在很多差異,但是可以使用日志功能,對(duì)編譯鏈接的應(yīng)用程序開發(fā)起到輔助的功能,可以極大的提高編譯和鏈接的應(yīng)用程序的開發(fā)效率。2.4.1日志在編譯鏈接應(yīng)用程序中的應(yīng)用范例使用上節(jié)日志應(yīng)用程序范例QuickExtrude,使用Visualstudio創(chuàng)建拉伸位置對(duì)話框來表示拉伸的起始和終止值。步驟一、創(chuàng)建項(xiàng)目以VisualStudio2005為例,新建一個(gè)project,項(xiàng)目類型選擇VisualC#,模板選擇Clas

32、sLibrary,項(xiàng)目名稱為Quick_Extrude,如圖7,單擊0K后,創(chuàng)建了一個(gè)新的項(xiàng)目。NXOpen.Utilities.dll、NXOpenUI.dll.圖8添加.NET弓I用步驟三、添加日志錄制文件刪除項(xiàng)目中自動(dòng)建立的Class1.cs,把日志錄制文件Extrude.cs復(fù)制到項(xiàng)目文件夾下,添加已存在的item,選擇Extrude.cs,見圖9。用來表示用戶輸入的拉伸操作的起始值和終止值對(duì)話框。見圖10。SolutionQuick_Extrude(1project)直連Quick_Exlrude(j-冒Properties(-uReferencesExtrude.esExtrude

33、_limits.cs嗜Extrude_limit5.Designer.es增Extrude_limits.resx圖10創(chuàng)建拉伸界面在Extrude_limits對(duì)話框中,添加4個(gè)windows控件,其中一個(gè)label空間,2個(gè)button控件和一個(gè)TextBox控件。Extrude_limits類中添加TextBox控件值的set/get方法,用于獲取或者設(shè)置拉伸值,添加label控件的set方法,用于設(shè)置當(dāng)前拉伸值標(biāo)簽。privateSystem.Windows.Forms.Labellabel_name;privateSystem.Windows.Forms.TextBoxextrude

34、_value;privateSystem.Windows.Forms.ButtonOK_button;privateSystem.Windows.Forms.ButtonCancel_button;publicstringExtrude_Valuegetreturnextrude_value.Text;setextrude_value.Text=value;publicstringLabel_Namesetlabel_name.Text=value;響應(yīng)OK控件的click事件,關(guān)閉dialog窗口。privatevoidOK_button_Click(objectsender,EventAr

35、gse)this.Close();步驟五、編輯日志文件編輯日志文件,使用Extrude_limits對(duì)話框,獲取拉伸的起始值和終止值。在Main()方法中,添加代碼,Quick_Extrude為命名空間。Quick_Extrude.Extrude_limitsextrude_dialog_start;Quick_Extrude.Extrude_limitsextrude_dialog_end;extrude_dialog_start=newQuick_Extrude.Extrude_limits();extrude_dialog_start.Label_Name=SettheStartLimi

36、t:;extrude_dialog_start.Extrude_Value=0.0;extrude_dialog_start.ShowDialog();stringstart_value=extrude_dialog_start.Extrude_Value;extrude_dialog_end=newQuick_Extrude.Extrude_limits();extrude_dialog_end.Label_Name=SettheEndLimit:;extrude_dialog_end.Extrude_Value=1.0;extrude_dialog_end.ShowDialog();str

37、ingend_value=extrude_dialog_end.Extrude_Value;以上代碼從用戶自定義的對(duì)話框中獲取了拉伸操作位置的2個(gè)值,其余部分的修改與日志應(yīng)用程序范例相同。修改完Extrude.cs后,編譯鏈接項(xiàng)目,生成了Extrude.dll文件。步驟六、運(yùn)行程序啟動(dòng)NX7.5,選擇或者新建一個(gè)含有草圖特性的部件,在file-Execute-NXOpen或者Ctrl+u快捷命令,選擇生成的dll文件。運(yùn)行結(jié)果與日志應(yīng)用程序范例相同。2.5菜單運(yùn)行日志日志應(yīng)用程序不僅僅在日志管理器中運(yùn)行,和其他NX二次開發(fā)的應(yīng)用程序一樣,也可以通過菜單運(yùn)行。用戶只需要?jiǎng)?chuàng)建如圖11所示的文件夾結(jié)

38、構(gòu),設(shè)置環(huán)境變量UGII_VENDOR_DIR或者UGII_USER_DIR到指定的文件夾,在startup文件夾中放置菜單文件,腳本文件放置在application文件夾下。圖11菜單日志應(yīng)用程序結(jié)構(gòu)菜單文件my_journal.men在NX內(nèi)部操作UG_FILE_OPEN按鈕之后注冊(cè)了一個(gè)日志,該日志在當(dāng)前的顯示部件中創(chuàng)建了一個(gè)塊。菜單文件:my_journal.menVERSION120EDITUG_GATEWAY_MAIN_MENUBARAFTERUG_FILE_NEWBUTTONUG_FILE_OPENLABELOpen.ACTIONS/REPLACESTANDARDcreate_b

39、lock.csEND_OF_AFTER日志文件:create_block.cs/NX/JournalcreatedbylqzonMonOct2410:19:402011中國(guó)標(biāo)準(zhǔn)時(shí)間/usingSystem;usingNXOpen;publicclassNXJournalpublicstaticvoidMain(stringargs)SessiontheSession=Session.GetSession();PartworkPart=theSession.Parts.Work;PartdisplayPart=theSession.Parts.Display;/Menu:Insert-#Desi

40、gnFeature-#Block./NXOpen.Session.UndoMarkIdmarkId1;markId1=theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible,Start);NXOpen.Features.FeaturenullFeatures_Feature=null;if(!workPart.Preferences.Modeling.GetHistoryMode()thrownewException(CreateoreditofaFeaturewasrecordedinHistoryModebutplaybac

41、kisinHistory-FreeMode.);NXOpen.Features.BlockFeatureBuilderblockFeatureBuilder1;blockFeatureBuilder1=workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature);blockFeatureBuilder1.BooleanOption.Type=NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create;BodytargetBodies1=newBody1;Body

42、nullBody=null;targetBodies10=nullBody;blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1)theSession.SetUndoMarkName(markId1,BlockDialog);NXOpen.Session.UndoMarkIdmarkId2;markId2=theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible,Block);blockFeatureBuilder1.Type=NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths;Pointpoint1;point1=blockFeatureBuilder1.OriginPoint;blockFeatureBuilder1.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論