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

基于VB API和Auto CAD的圖紙批量換圖框軟件開發

2014-05-05 08:50:32李軍,焦志強,高立程
機械管理開發 2014年2期
關鍵詞:二次開發圖紙程序

引言

隨著產品數據管理系統(PDM)的引入,為了便于今后的產品設計,豐富本地PDM的數據資源,需要將原先設計的產品圖紙輸入到本地零部件數據資源庫,而在輸入之前需要刪除每張圖紙中標題欄和代號欄的內容并更換PDM專用標題欄和代號欄。為了避免重復性勞動,提高輸入效率,有必要編寫專用的軟件來代替手工的操作。通過Visual Basic對AutoCAD進行二次開發,成功編寫了適合本公司的圖紙批量換圖框軟件。

1 基于Visual Basic調用API函數的AutoCAD二次開發原理概述

Windows應用程序接口,即API (Application programming interface),是一組用C語言編寫的函數庫,由操作系統調用來控制Windows的各個部件外觀和行為。Win32 API就是Windows32位平臺提供的應用程序編程接口。在Visual Basic中,可以像調用普通過程一樣調用API中的函數,實現所需要的操作。

1.1 查找指定對象

Windows環境中有很多對象,諸如窗口、組合框、文本框等,可以通過API函數以不同的形式對這些對象進行操作。為此,必須以某種方法對這些對象進行標識,并把它們以參數的形式傳送給函數。Windows用一個32位的整數對各種對象進行標識,稱之為句柄。VB可以調用API函數FindWindow和FindWindowEx通過窗口標題和類名來查找指定對象,并返回句柄。

1.2 給指定對象發送消息

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

2 針對圖紙自動換圖框軟件的AutoCAD的二次開發

本公司的AutoCAD軟件集成了INTECAD程序,更換圖框時只需通過組合框選擇需要的標題欄和代號欄即可,如下頁圖1所示。本程序的基本原理是當標題欄dwg文件打開時,執行更換標題欄命令會刪除原有標題欄中的數據,隨后利用VB調用API消息函數SendMessage控制AUTOCAD選擇指定的標題欄和代號欄,達到更換圖框的目的。

圖1 INTECAD程序定制圖幅界面

2.1 本軟件程序設計的流程

本軟件的主要功能是打開AUTOCAD圖紙,刪除每張圖紙中標題欄和代號欄的內容并更換PDM專用標題欄和代號欄,程序流程圖見圖2。

2.2 建立VB交互式人機界面

通過VB編程將本軟件的各種數據信息,通過對話框的形式完全體現出來,建立人機交互界面,如圖3所示。

2.3 軟件功能結構

圖紙自動換圖框軟件主要由主控制程序、選擇標題欄和代號欄子程序組成。

2.3.1 主控制程序

主控制程序實現的功能是循環打開文件列表框中的AUTOCAD圖紙,判斷圖紙為零件還是部件,根據選項判斷是否進行刪除標題欄和代號欄操作,利用注冊表將標題欄和代號欄名稱傳送給選擇標題欄和代號欄子程序,給AUTOCAD發送打開定制圖幅命令,執行后見圖1,再通過調用選擇標題欄和代號欄子程序達到更換指定圖框的目的。具體代碼如下:

圖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

'利用注冊表傳遞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 選擇標題欄和代號欄子程序

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

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) '找到標題欄

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

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

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)) '找到標題欄位置序號

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

Loop

SendMessage ahwnd6, CB_SETCURSEL, a, 0 '選擇第a個選項

SendMessage ahwnd8, CB_SETCURSEL, b, 0 '選擇第b個選項

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

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

End If

DoEvents

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

If ahwnd10 Then

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

PostMessage ahwnd11, WM_KEYDOWN, vbKeyY, 0

End If

Loop

End

End Function

3 結語

本應用程序是在VB API和AutoCAD相結合的基礎上,實現了批量刪除圖紙中標題欄和代號欄的內容并更換圖框的功能,把原本商品化、通用化的AutoCAD系統用戶化、本地化。本文主要介紹了利用VB API作為開發工具的二次開發方法和關鍵問題,為開發其他適合用戶特定需要的專業化軟件提供了一種手段,同時也對致力于AUTOCAD二次開發的人員具有一定得參考價值。

[1] 劉炳文,李鳳華.Visual Basic 6.0 Win32 API程序設計[M].北京:清華大學出版社,2001.

[2] 張晉西.Visual Basic與AutoCAD二次開發[M].北京:清華大學出版社,2002.

[3] 尚雅玲.基于VB API的Pro/E二次開發探討[J].現代機械,2009(4):46-47.

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

[5] 羅彬,劉獨玉.基于VB調用Windows API函數的參數傳遞研究[J].計算機應用,2001(8):264-266.

猜你喜歡
二次開發圖紙程序
淺談汽車線束產品圖紙管理
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
看圖紙
當代工人(2019年20期)2019-12-13 08:26:11
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
西門子Easy Screen對倒棱機床界面二次開發
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
酒店室內裝修圖紙深化設計淺析
河南科技(2014年12期)2014-02-27 14:10:44
主站蜘蛛池模板: 中文字幕永久在线观看| 国产精品久线在线观看| 欧美福利在线| 欧美福利在线观看| 久久人妻系列无码一区| 国产幂在线无码精品| 国产aaaaa一级毛片| 99re在线观看视频| 国产精品午夜电影| 91丝袜美腿高跟国产极品老师| 国语少妇高潮| 久久夜夜视频| 日本一区二区三区精品国产| 麻豆精品国产自产在线| 免费一极毛片| 538国产在线| 最新国产在线| 久久香蕉国产线看精品| 日本午夜三级| 亚洲天堂自拍| 在线观看免费国产| 不卡无码网| 国模沟沟一区二区三区| 韩日午夜在线资源一区二区| 在线国产三级| 爽爽影院十八禁在线观看| 成人国产免费| 免费观看三级毛片| 亚洲美女久久| 99久久人妻精品免费二区| 无码免费视频| 666精品国产精品亚洲| 91在线精品免费免费播放| 国产精品jizz在线观看软件| 欧美中出一区二区| 99视频免费观看| 国产日韩欧美黄色片免费观看| 啦啦啦网站在线观看a毛片| 国产成人91精品免费网址在线| 91精品视频网站| 无码精品国产dvd在线观看9久| 亚洲一区二区在线无码| 亚洲欧美另类视频| 福利视频99| 国产原创自拍不卡第一页| 中文字幕在线播放不卡| 国产成人高精品免费视频| 国产美女免费| 亚洲av综合网| 91麻豆国产视频| 人妻少妇乱子伦精品无码专区毛片| 国产欧美日韩视频怡春院| 九九这里只有精品视频| 男女男免费视频网站国产| 日韩无码真实干出血视频| 久久精品国产999大香线焦| 久久久精品久久久久三级| 大学生久久香蕉国产线观看| 色妞www精品视频一级下载| 婷婷开心中文字幕| 国产91特黄特色A级毛片| 日韩a在线观看免费观看| 国产91小视频在线观看| 久久婷婷五月综合色一区二区| 国产呦精品一区二区三区网站| 国产午夜精品一区二区三区软件| 伊人丁香五月天久久综合| 亚洲大学生视频在线播放 | 成人国产精品视频频| 色婷婷亚洲十月十月色天| 久久国产成人精品国产成人亚洲| 欧美成人日韩| 青草免费在线观看| 欧美日韩国产一级| 国产亚洲欧美在线中文bt天堂 | 国产精品第5页| 久久毛片网| 在线观看免费国产| 69国产精品视频免费| 国产精品男人的天堂| 国产av色站网站| 日韩免费成人|