亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        引言

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

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

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

        1.1 查找指定對象

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

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

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

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

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

        圖1 INTECAD程序定制圖幅界面

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

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

        2.2 建立VB交互式人機界面

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

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

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

        2.3.1 主控制程序

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

        圖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 選擇標題欄和代號欄子程序

        首先從注冊表中取出主程序存入的標題欄和代號欄名稱,賦值給變量并清空數(shù)據(jù)。定義子函數(shù), 以標題欄和代號欄名稱為變量。第一步通過API函數(shù)FindWindow查找“定制圖幅”窗口,再通過類名找到標題欄代號欄組合框控件,利用消息函數(shù)SendMessage發(fā)送組合框字符串查找消息CB_FINDSTRING來獲得標題欄和代號欄在組合框中的位置序號,再發(fā)送組合框選擇消息CB_SETCURSEL通過剛才獲取的序號選擇選項。最后找到“確定(Y)”按鈕,通過消息函數(shù)PostMessage 發(fā)送按下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 結(jié)語

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

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

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

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

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

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

        猜你喜歡
        二次開發(fā)圖紙程序
        淺談汽車線束產(chǎn)品圖紙管理
        淺談基于Revit平臺的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        看圖紙
        當代工人(2019年20期)2019-12-13 08:26:11
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        試論我國未決羈押程序的立法完善
        西門子Easy Screen對倒棱機床界面二次開發(fā)
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        創(chuàng)衛(wèi)暗訪程序有待改進
        酒店室內(nèi)裝修圖紙深化設(shè)計淺析
        河南科技(2014年12期)2014-02-27 14:10:44
        99久久亚洲精品日本无码| 涩涩国产在线不卡无码| 国产成人亚洲合色婷婷| 亚洲男人免费视频网站| 欧美专区在线| 亚洲啪啪AⅤ一区二区三区| 永久免费观看的黄网站在线| 欧美成人秋霞久久aa片| 国产精品免费久久久久影院仙踪林 | 老女老肥熟女一区二区| 国产日韩精品suv| 18成人片黄网站www| 亚洲区偷拍自拍29p| 中文字幕精品人妻丝袜| 成 人色 网 站 欧美大片在线观看 | 亚洲Av无码专区尤物| 能看的网站中文字幕不卡av| 白白色发布会在线观看免费| 中文字幕乱码一区av久久不卡| 国模精品无码一区二区二区| 亚洲国产精品第一区二区三区| 国产乱精品女同自线免费| 亚洲va中文字幕| 夜夜爽无码一区二区三区| 高清国产精品一区二区| 成年av动漫网站18禁| 老司机在线精品视频网站| 国产精品乱子伦一区二区三区 | 日韩精品有码中文字幕| 久久精品国产亚洲夜色av网站| 免费国产裸体美女视频全黄| 中文乱码字幕高清在线观看| 亚洲av调教捆绑一区二区三区| 国产精品久久成人网站 | 欧美乱人伦中文字幕在线不卡| 国产丝袜一区丝袜高跟美腿| 午夜精品射精入后重之免费观看| 日日摸夜夜添夜夜添无码免费视频 | 久久九九av久精品日产一区免费| 国产一级内射视频在线观看| 9lporm自拍视频区|