999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VB API和Auto CAD的圖紙批量換圖框軟件開(kāi)發(fā)

2014-05-05 08:50:32李軍,焦志強(qiáng),高立程
機(jī)械管理開(kāi)發(fā) 2014年2期
關(guān)鍵詞:二次開(kāi)發(fā)圖紙程序

引言

隨著產(chǎn)品數(shù)據(jù)管理系統(tǒng)(PDM)的引入,為了便于今后的產(chǎn)品設(shè)計(jì),豐富本地PDM的數(shù)據(jù)資源,需要將原先設(shè)計(jì)的產(chǎn)品圖紙輸入到本地零部件數(shù)據(jù)資源庫(kù),而在輸入之前需要?jiǎng)h除每張圖紙中標(biāo)題欄和代號(hào)欄的內(nèi)容并更換PDM專(zhuān)用標(biāo)題欄和代號(hào)欄。為了避免重復(fù)性勞動(dòng),提高輸入效率,有必要編寫(xiě)專(zhuān)用的軟件來(lái)代替手工的操作。通過(guò)Visual Basic對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā),成功編寫(xiě)了適合本公司的圖紙批量換圖框軟件。

1 基于Visual Basic調(diào)用API函數(shù)的AutoCAD二次開(kāi)發(fā)原理概述

Windows應(yīng)用程序接口,即API (Application programming interface),是一組用C語(yǔ)言編寫(xiě)的函數(shù)庫(kù),由操作系統(tǒng)調(diào)用來(lái)控制Windows的各個(gè)部件外觀和行為。Win32 API就是Windows32位平臺(tái)提供的應(yīng)用程序編程接口。在Visual Basic中,可以像調(diào)用普通過(guò)程一樣調(diào)用API中的函數(shù),實(shí)現(xiàn)所需要的操作。

1.1 查找指定對(duì)象

Windows環(huán)境中有很多對(duì)象,諸如窗口、組合框、文本框等,可以通過(guò)API函數(shù)以不同的形式對(duì)這些對(duì)象進(jìn)行操作。為此,必須以某種方法對(duì)這些對(duì)象進(jìn)行標(biāo)識(shí),并把它們以參數(shù)的形式傳送給函數(shù)。Windows用一個(gè)32位的整數(shù)對(duì)各種對(duì)象進(jìn)行標(biāo)識(shí),稱(chēng)之為句柄。VB可以調(diào)用API函數(shù)FindWindow和FindWindowEx通過(guò)窗口標(biāo)題和類(lèi)名來(lái)查找指定對(duì)象,并返回句柄。

1.2 給指定對(duì)象發(fā)送消息

在得到指定對(duì)象的句柄之后,可以通過(guò)消息函數(shù)SendMessage和PostMessage給指定對(duì)象發(fā)送消息。SendMessage函數(shù)有4個(gè)參數(shù),其中第一個(gè)參數(shù)(hwnd)是接收消息的窗口,即指定對(duì)象的句柄,第二個(gè)參數(shù)(wMsg)是消息編號(hào)(標(biāo)識(shí)符),第三、四個(gè)參數(shù)是消息的第一、第二個(gè)參數(shù)。后兩個(gè)參數(shù)wParam和lParam并不固定,隨對(duì)象和所發(fā)送的消息而不同。

2 針對(duì)圖紙自動(dòng)換圖框軟件的AutoCAD的二次開(kāi)發(fā)

本公司的AutoCAD軟件集成了INTECAD程序,更換圖框時(shí)只需通過(guò)組合框選擇需要的標(biāo)題欄和代號(hào)欄即可,如下頁(yè)圖1所示。本程序的基本原理是當(dāng)標(biāo)題欄dwg文件打開(kāi)時(shí),執(zhí)行更換標(biāo)題欄命令會(huì)刪除原有標(biāo)題欄中的數(shù)據(jù),隨后利用VB調(diào)用API消息函數(shù)SendMessage控制AUTOCAD選擇指定的標(biāo)題欄和代號(hào)欄,達(dá)到更換圖框的目的。

圖1 INTECAD程序定制圖幅界面

2.1 本軟件程序設(shè)計(jì)的流程

本軟件的主要功能是打開(kāi)AUTOCAD圖紙,刪除每張圖紙中標(biāo)題欄和代號(hào)欄的內(nèi)容并更換PDM專(zhuān)用標(biāo)題欄和代號(hào)欄,程序流程圖見(jiàn)圖2。

2.2 建立VB交互式人機(jī)界面

通過(guò)VB編程將本軟件的各種數(shù)據(jù)信息,通過(guò)對(duì)話框的形式完全體現(xiàn)出來(lái),建立人機(jī)交互界面,如圖3所示。

2.3 軟件功能結(jié)構(gòu)

圖紙自動(dòng)換圖框軟件主要由主控制程序、選擇標(biāo)題欄和代號(hào)欄子程序組成。

2.3.1 主控制程序

主控制程序?qū)崿F(xiàn)的功能是循環(huán)打開(kāi)文件列表框中的AUTOCAD圖紙,判斷圖紙為零件還是部件,根據(jù)選項(xiàng)判斷是否進(jìn)行刪除標(biāo)題欄和代號(hào)欄操作,利用注冊(cè)表將標(biāo)題欄和代號(hào)欄名稱(chēng)傳送給選擇標(biāo)題欄和代號(hào)欄子程序,給AUTOCAD發(fā)送打開(kāi)定制圖幅命令,執(zhí)行后見(jiàn)圖1,再通過(guò)調(diào)用選擇標(biāo)題欄和代號(hào)欄子程序達(dá)到更換指定圖框的目的。具體代碼如下:

圖2 程序流程圖

圖3 程序主界面

For I = 0 To File1.ListCount - 1

Set acaddoc = acadapp.Documents.Open(astr &File1.List(I))

'利用文件名判斷圖紙為零件還是部件

Number = Split(File1.List(I), ".")

numbercount = UBound(Number)

If InStr(Number(numbercount - 1), "00") > 0 Then

headstr = headtext2

codestr = codetext2

Else

headstr = headtext1

codestr = codetext1

End If

'利用注冊(cè)表傳遞headstr和codestr

SaveSetting "通信小程序", "自定義通訊", "通訊1",headstr

SaveSetting "通信小程序", "自定義通訊", "通訊2",codestr

If Option1.Value = True Then

Call openhead(headbpath, headb)

Shell (App.Path & "headb.exe")

acaddoc.SendCommand ("tf" & vbCr)

acadapp.Documents(1).Close

End If

Shell (App.Path & "headpdm.exe")

acaddoc.SendCommand ("tf" & vbCr)

acaddoc.SendCommand ("qsave" & vbCr)

acaddoc.SendCommand ("close" & vbCr)

Set acaddoc = Nothing

Next I

2.3.2 選擇標(biāo)題欄和代號(hào)欄子程序

首先從注冊(cè)表中取出主程序存入的標(biāo)題欄和代號(hào)欄名稱(chēng),賦值給變量并清空數(shù)據(jù)。定義子函數(shù), 以標(biāo)題欄和代號(hào)欄名稱(chēng)為變量。第一步通過(guò)API函數(shù)FindWindow查找“定制圖幅”窗口,再通過(guò)類(lèi)名找到標(biāo)題欄代號(hào)欄組合框控件,利用消息函數(shù)SendMessage發(fā)送組合框字符串查找消息CB_FINDSTRING來(lái)獲得標(biāo)題欄和代號(hào)欄在組合框中的位置序號(hào),再發(fā)送組合框選擇消息CB_SETCURSEL通過(guò)剛才獲取的序號(hào)選擇選項(xiàng)。最后找到“確定(Y)”按鈕,通過(guò)消息函數(shù)PostMessage 發(fā)送按下Y鍵的消息,完成選擇標(biāo)題欄和代號(hào)欄操作。具體代碼如下:

headtext = GetSetting("通信小程序", "自定義通訊","通訊1")

codetext = GetSetting("通信小程序", "自定義通訊","通訊2")

DeleteSetting "通信小程序", "自定義通訊", "通訊1"

DeleteSetting "通信小程序", "自定義通訊", "通訊2"

Private Function pdm(ByVal headtext As String,ByVal codetext As String)

alsAnsi = StrConv(headtext, vbFromUnicode)

blsAnsi = StrConv(codetext, vbFromUnicode)

Dim starttime,count As Single

starttime = Timer

Do Until ahwnd11 Or count > 10

count = Timer - starttime

Sleep (50)

ahwnd1 = FindWindow(vbNullString, "定制圖幅")

ahwnd2 = FindWindowEx(ahwnd1, 0, "ComboBox",vbNullString)

ahwnd3 = FindWindow Ex(ahwnd1, ahwnd2,"ComboBox", vbNullString)

ahwnd4 = FindWindow Ex(ahwnd1, ahwnd3,"ComboBox", vbNullString)

ahwnd5 = Find Window Ex(ahwnd1, ahwnd4,"ComboBox", vbNullString)

ahwnd6 = FindWindow Ex(ahwnd1, ahwnd5,"ComboBox", vbNullString) '找到標(biāo)題欄

ahwnd7 = FindWindow Ex(ahwnd1, ahwnd6,"ComboBox", vbNullString)

ahwnd8 = FindWindow Ex(ahwnd1, ahwnd7,"ComboBox", vbNullString) '找到代號(hào)欄

If ahwnd6 And ahwnd8 Then

Do Until (a <> -1 And b <> -1) Or count > 10

count = Timer - starttime

a = SendMessage(ahwnd6, CB_FINDSTRING, -1,ByVal StrPtr(alsAnsi)) '找到標(biāo)題欄位置序號(hào)

b = SendMessage(ahwnd8, CB_FINDSTRING, -1,ByVal StrPtr(blsAnsi)) '找到代號(hào)欄位置序號(hào)

Loop

SendMessage ahwnd6, CB_SETCURSEL, a, 0 '選擇第a個(gè)選項(xiàng)

SendMessage ahwnd8, CB_SETCURSEL, b, 0 '選擇第b個(gè)選項(xiàng)

ahwnd9 = FindWindowEx(ahwnd1, 0, vbNullString,"確定(&Y)") '找確定鍵

PostMessage ahwnd9, WM_KEYDOWN, vbKeyY, 0'按下確定鍵

End If

DoEvents

ahwnd10 = FindWindow(vbNullString, "填寫(xiě)欄框")

If ahwnd10 Then

ahwnd11 = Find Window Ex(ahwnd10, 0,vbNullString, "確定(&Y)")

PostMessage ahwnd11, WM_KEYDOWN, vbKeyY, 0

End If

Loop

End

End Function

3 結(jié)語(yǔ)

本應(yīng)用程序是在VB API和AutoCAD相結(jié)合的基礎(chǔ)上,實(shí)現(xiàn)了批量刪除圖紙中標(biāo)題欄和代號(hào)欄的內(nèi)容并更換圖框的功能,把原本商品化、通用化的AutoCAD系統(tǒng)用戶(hù)化、本地化。本文主要介紹了利用VB API作為開(kāi)發(fā)工具的二次開(kāi)發(fā)方法和關(guān)鍵問(wèn)題,為開(kāi)發(fā)其他適合用戶(hù)特定需要的專(zhuān)業(yè)化軟件提供了一種手段,同時(shí)也對(duì)致力于AUTOCAD二次開(kāi)發(fā)的人員具有一定得參考價(jià)值。

[1] 劉炳文,李鳳華.Visual Basic 6.0 Win32 API程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2001.

[2] 張晉西.Visual Basic與AutoCAD二次開(kāi)發(fā)[M].北京:清華大學(xué)出版社,2002.

[3] 尚雅玲.基于VB API的Pro/E二次開(kāi)發(fā)探討[J].現(xiàn)代機(jī)械,2009(4):46-47.

[4] 高山,楊卓,張濤.Visual Basic中操作指針的技術(shù)及應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2009(24):5 722-5 725.

[5] 羅彬,劉獨(dú)玉.基于VB調(diào)用Windows API函數(shù)的參數(shù)傳遞研究[J].計(jì)算機(jī)應(yīng)用,2001(8):264-266.

猜你喜歡
二次開(kāi)發(fā)圖紙程序
淺談汽車(chē)線束產(chǎn)品圖紙管理
淺談基于Revit平臺(tái)的二次開(kāi)發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
看圖紙
淺談Mastercam后處理器的二次開(kāi)發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
試論我國(guó)未決羈押程序的立法完善
西門(mén)子Easy Screen對(duì)倒棱機(jī)床界面二次開(kāi)發(fā)
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
酒店室內(nèi)裝修圖紙深化設(shè)計(jì)淺析
河南科技(2014年12期)2014-02-27 14:10:44
主站蜘蛛池模板: 91青青草视频在线观看的| 亚洲日韩精品无码专区97| 精品综合久久久久久97超人该| 亚洲福利一区二区三区| 亚洲精品中文字幕午夜| 亚洲男人天堂2020| 日韩精品久久久久久久电影蜜臀| 久久中文字幕av不卡一区二区| 国产国产人免费视频成18| 黄色网址手机国内免费在线观看| 91国语视频| 三上悠亚精品二区在线观看| 九九这里只有精品视频| 亚洲青涩在线| 亚洲av无码成人专区| 精品少妇人妻av无码久久| 欧美色视频日本| 福利在线不卡| 在线精品亚洲国产| 亚洲一区免费看| 国产特级毛片| 欧美一区国产| 亚洲美女视频一区| 亚洲一级毛片在线观播放| 99re在线观看视频| 欧美精品另类| 无码中文字幕乱码免费2| 99国产精品国产高清一区二区| 久久夜色精品国产嚕嚕亚洲av| 久久免费看片| 99在线观看视频免费| 亚洲首页国产精品丝袜| 欧美色亚洲| 久久国产乱子| 国产精品网址在线观看你懂的| 58av国产精品| 日本a级免费| 久久黄色免费电影| 乱人伦视频中文字幕在线| 亚洲熟女中文字幕男人总站| 九九热精品免费视频| 国产午夜精品一区二区三| 奇米影视狠狠精品7777| 综合人妻久久一区二区精品| 国产精品9| 日本高清有码人妻| 99久久国产综合精品女同| 成·人免费午夜无码视频在线观看| 国产激情在线视频| 9久久伊人精品综合| 国产免费人成视频网| 影音先锋亚洲无码| 亚洲国产欧美国产综合久久| 99久久亚洲综合精品TS| 中文字幕不卡免费高清视频| 国产成人综合久久精品尤物| www.youjizz.com久久| 亚洲一区二区约美女探花| 青草国产在线视频| 国产一区二区三区免费观看| 成人综合久久综合| 国产免费高清无需播放器| 欧美精品成人一区二区视频一| 天天干天天色综合网| 国产精品久久久久鬼色| 国产综合日韩另类一区二区| 在线a网站| 国产综合日韩另类一区二区| 亚洲国产精品久久久久秋霞影院| 91黄视频在线观看| 伊人色婷婷| 日本欧美成人免费| 麻豆精品久久久久久久99蜜桃| 成人免费一区二区三区| 日韩成人在线视频| 中文字幕av无码不卡免费| 免费国产福利| 欧美高清三区| 久久国产成人精品国产成人亚洲| 好吊色妇女免费视频免费| 97人妻精品专区久久久久| 国产微拍一区|