• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于CATIA二次開(kāi)發(fā)的產(chǎn)品BOM屬性自動(dòng)提取

    2012-05-08 04:41:46劉圣郝泳濤
    電腦知識(shí)與技術(shù) 2012年7期
    關(guān)鍵詞:二次開(kāi)發(fā)

    劉圣 郝泳濤

    摘要:該文介紹了CATIA三維設(shè)計(jì)軟件及其二次開(kāi)發(fā)接口中常用的重要對(duì)象及相關(guān)函數(shù),針對(duì)了樹(shù)形產(chǎn)品結(jié)構(gòu)給出了常用的操作與處理方法,并利用相關(guān)對(duì)象和方法實(shí)現(xiàn)對(duì)產(chǎn)品文件的屬性提取和BOM表統(tǒng)計(jì)生成程序。

    關(guān)鍵詞:CATIA;二次開(kāi)發(fā);bom表;屬性提取

    中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)07-1550-03

    Product Attribute Extraction Based on CATIA Re-developing Technology

    LIU Sheng,HAO Yong-tao

    (CAD Research Center of Tongji University, Shanghai 201804, China)

    Abstract: CATIA 3D design software and important objects and related functions in its re-developing interface is introduced in this paper. Common operations and methods dealing with product construction organized in tree pattern are also mentioned. Using the related objects and functions we implement a BOM attribute extraction program.

    Key words:CATIA; re-developing; BOM; attribute extraction

    1 CATIA三維軟件簡(jiǎn)介

    隨著計(jì)算機(jī)輔助設(shè)計(jì)(CAD)技術(shù)的發(fā)展,三維輔助設(shè)計(jì)軟件在產(chǎn)品設(shè)計(jì)領(lǐng)域的應(yīng)用越來(lái)越廣泛。CATIA全稱(chēng)Computer Aided Tri-dimensional Interface Application,是法國(guó)Dassault公司開(kāi)發(fā)的一款CAD/CAM/CAE于一體的三維設(shè)計(jì)軟件,廣泛應(yīng)用于機(jī)械設(shè)計(jì)、汽車(chē)、航空航天、船舶、電子等各種行業(yè)中。

    高度模塊化的CATIA軟件能夠滿足客戶(hù)在產(chǎn)品開(kāi)發(fā)活動(dòng)中的需要,包括風(fēng)格和草圖設(shè)計(jì)、機(jī)械零件設(shè)計(jì)、裝配設(shè)計(jì)、曲線曲面設(shè)計(jì)、工程圖自動(dòng)生成及產(chǎn)品分析和模擬。CATIA產(chǎn)品基于開(kāi)放式可擴(kuò)展的架構(gòu),其知識(shí)工程模塊通過(guò)使企業(yè)能夠重用產(chǎn)品設(shè)計(jì)知識(shí),縮短開(kāi)發(fā)周期,CATIA解決方案加快企業(yè)對(duì)市場(chǎng)的需求的反應(yīng)。CATIA軟件自V5版后從工作站平臺(tái)移植到個(gè)人計(jì)算機(jī),可以運(yùn)行于Windows NT平臺(tái),極大地拓寬了其應(yīng)用范圍與使用的層面。

    2 CATIA二次開(kāi)發(fā)簡(jiǎn)介

    成熟的CAD/CAM軟件為了滿足不同用戶(hù)的在實(shí)際應(yīng)用中的不同需求,便于用戶(hù)構(gòu)建適合自身產(chǎn)品開(kāi)發(fā)的流程,以及自動(dòng)化繁瑣重復(fù)的設(shè)計(jì)步驟,一般都具有供用戶(hù)進(jìn)行二次開(kāi)發(fā)的接口。CATIA提供多種方式的二次開(kāi)發(fā)接口,以便用戶(hù)能靈活地利用并重組CATIA已有的功能,獲取CATIA文件及內(nèi)部的數(shù)據(jù),并與外部的信息管理系統(tǒng)或?qū)I(yè)的PDM系統(tǒng)通信。

    3 CATIA二次開(kāi)發(fā)中的關(guān)鍵對(duì)象

    CATIA提供的二次開(kāi)發(fā)接口是一個(gè)COM服務(wù)器,利用VB中的對(duì)象作為客戶(hù)端與CATIA進(jìn)程進(jìn)行進(jìn)程間的通信,操作CATIA進(jìn)程中的函數(shù),訪問(wèn)其中的數(shù)據(jù)。而VB提供的一組具有相關(guān)關(guān)系的對(duì)象形成了一個(gè)抽象層,使得用戶(hù)可以在不了解COM底層通信方式的情況下方便地對(duì)CATIA進(jìn)程進(jìn)行操作。

    CATIA.Application對(duì)象:該對(duì)象實(shí)例是系統(tǒng)中CATIA進(jìn)程的代表,所有其他的對(duì)象都依賴(lài)于該對(duì)象的相關(guān)方法返回。在CATIA進(jìn)程已經(jīng)啟動(dòng)的情況下,CATIA.Application對(duì)象的實(shí)例可以以“CATIA.Application”字符串調(diào)用全局工廠函數(shù)GetObject獲得,可以將獲得的對(duì)象付給一個(gè)變量Set CATIA = GetObject("CATIA.Application")。當(dāng)CATIA進(jìn)程沒(méi)有啟動(dòng)時(shí),可以調(diào)用全局工廠函數(shù)CreateObject函數(shù)帶“CATIA.Application”字符串獲得,并把其賦給變量Set CATIA = CreateObject("CATIA.Application")。最終,獲得的CATIA.Application對(duì)象存在CATIA變量中。

    Document對(duì)象:Document類(lèi)的對(duì)象代表進(jìn)程中打開(kāi)的CATIA文檔,Document類(lèi)是其他文檔類(lèi)的基類(lèi),從CATIA.Application對(duì)象的ActiveDocument方法獲得當(dāng)前激活的文檔,本次主要使用的到其子類(lèi)ProductDocument的對(duì)象,并將其賦值給一個(gè)變量以便以后使用。Set productDocument = CATIA.ActiveDocument。后續(xù)的對(duì)象都要從該P(yáng)roductDocument對(duì)象中獲取。

    Product對(duì)象:該類(lèi)型的對(duì)象代表產(chǎn)品文檔中的一個(gè)產(chǎn)品節(jié)點(diǎn)。CATIA產(chǎn)品文檔將一系列產(chǎn)品通過(guò)裝配組織成一個(gè)產(chǎn)品樹(shù),每個(gè)產(chǎn)品節(jié)點(diǎn)可以有零到多個(gè)子節(jié)點(diǎn),除了根節(jié)點(diǎn)以外每個(gè)產(chǎn)品節(jié)點(diǎn)都只有一個(gè)父節(jié)點(diǎn)。每個(gè)產(chǎn)品文檔有唯一的根節(jié)點(diǎn),且該根節(jié)點(diǎn)不能更換。對(duì)于裝配進(jìn)產(chǎn)品的零件,CATIA會(huì)生成一個(gè)簡(jiǎn)單的產(chǎn)品節(jié)點(diǎn)對(duì)其包裝,使之成為一致的產(chǎn)品樹(shù)。每個(gè)產(chǎn)品節(jié)點(diǎn)可以有若干屬性,本程序主要對(duì)這些屬性進(jìn)行提取與統(tǒng)計(jì)。對(duì)于已經(jīng)獲得的產(chǎn)品節(jié)點(diǎn),可以通過(guò)調(diào)用其Products方法獲得其子節(jié)點(diǎn)的集合對(duì)象,該對(duì)象是一個(gè)集合對(duì)象,可以用For Each型的循環(huán)方便地遍歷其中每一個(gè)Product對(duì)象,如圖1。

    圖1按照樹(shù)型組織的產(chǎn)品節(jié)點(diǎn)

    Parameter對(duì)象:Parameter類(lèi)型的對(duì)象代表節(jié)點(diǎn)中包含的屬性,一個(gè)屬性是一個(gè)鍵值對(duì),這些鍵值對(duì)代表產(chǎn)品文件中的自定義屬性,可以通過(guò)Product對(duì)象的Parameters方法獲得Parameter的集合,獲得集合后可以用集合對(duì)象的item方法傳入屬性鍵字符串,獲得屬性值的引用,并通過(guò)屬性值的ValueAsString方法轉(zhuǎn)化為方便與控件顯示和存儲(chǔ)的字符串。

    4程序設(shè)計(jì)總體思路和關(guān)鍵技術(shù)

    本程序所要操作的是產(chǎn)品文件中的產(chǎn)品樹(shù),各種零件文件在建立后就添加了自定義屬性,并通過(guò)裝配引入到產(chǎn)品文件中。為了便于管理,通常會(huì)在根產(chǎn)品節(jié)點(diǎn)下面建立若干子產(chǎn)品節(jié)點(diǎn),并將零件分類(lèi)裝配到各個(gè)子產(chǎn)品節(jié)點(diǎn)中。同理,可以再子產(chǎn)品節(jié)點(diǎn)下在建立子產(chǎn)品節(jié)點(diǎn),對(duì)節(jié)點(diǎn)內(nèi)的裝配零件進(jìn)行分類(lèi)。在提取過(guò)程中程序要處理任意層數(shù)的產(chǎn)品節(jié)點(diǎn),并要在訪問(wèn)過(guò)程中統(tǒng)計(jì)相同零件的個(gè)數(shù),據(jù)此本程序利用了以下方法來(lái)實(shí)現(xiàn)提取BOM的目的。

    4.1基于遞歸訪問(wèn)策略的提取方法

    當(dāng)訪問(wèn)到一個(gè)節(jié)點(diǎn),先判斷其是否一個(gè)終端節(jié)點(diǎn),,若是終端節(jié)點(diǎn),則對(duì)其進(jìn)行提取屬性的操作,若是中間節(jié)點(diǎn),則遞歸地調(diào)用該過(guò)程,由此達(dá)到處理任意層數(shù)產(chǎn)品樹(shù)的目的。

    Sub traversal_recursive(rootProduct)

    Set oProducts = rootProduct.Products

    If is_leaf(rootProduct) Then

    Call extract_single_bom(rootProduct)

    Else

    For Each subProduct In oProducts

    Call traversal_recursive(subProduct)

    Next subProduct

    End If

    End Sub

    4.2終端節(jié)點(diǎn)的判斷方式

    零件的屬性都定義在終端節(jié)點(diǎn)中,終端節(jié)點(diǎn)是通過(guò)裝配導(dǎo)入到產(chǎn)品樹(shù)的,由于終端節(jié)點(diǎn)是一個(gè)對(duì)零件的簡(jiǎn)單包裝的產(chǎn)品節(jié)點(diǎn),該節(jié)點(diǎn)必定沒(méi)有子節(jié)點(diǎn),故本程序以此作為判斷終端節(jié)點(diǎn)的條件。

    Function is_leaf(oProduct) As Boolean

    Set oProducts = oProduct.Products

    is_leaf = (oProducts.Count = 0)

    End Function

    4.3提取一個(gè)終端節(jié)點(diǎn)中的屬性

    提取并統(tǒng)計(jì)單個(gè)零件的BOM信息的工作由一個(gè)函數(shù)extract_single_bom完成,首先通過(guò)參數(shù)的Parameters方法獲得要提取的屬性對(duì)的集合。其中選取出類(lèi)型參數(shù),與預(yù)先在界面上選取的類(lèi)型比較,若不是則不提取該節(jié)點(diǎn)中的屬性。在統(tǒng)計(jì)過(guò)程中,建立以零件編號(hào)為鍵值,網(wǎng)格中顯示的行號(hào)作為值的hash表全局變量,提取屬性時(shí)提取出零件編號(hào),在建立的hash表中檢索。若已經(jīng)在表中存在,則認(rèn)為是已經(jīng)出現(xiàn)過(guò)類(lèi)型的零件,可以從對(duì)應(yīng)的值取出行號(hào),將對(duì)應(yīng)單元格的值加一;若獲在表中沒(méi)有,則將當(dāng)前行值加一,并將鍵值對(duì)添加到hash表中,以便后續(xù)重復(fù)元素統(tǒng)計(jì)修改對(duì)應(yīng)行的值。

    Sub extract_single_bom(oProduct)

    Set oParas = oProduct.Parameters

    If Fil = True Then

    Set oParaDesigner = oParas.item("類(lèi)型")

    typeStr = oParaDesigner.ValueAsString

    If typeStr <> filStr Then

    GoTo fun_end

    End If

    End If

    Set oParaDesigner = oParas.item("零件編號(hào)")

    pno = oParaDesigner.ValueAsString

    if Exists(c, subProductName + pno) Then

    Grid1.Row = CInt(c.item(subProductName + pno))

    Grid1.Col = 2

    Grid1.Text = CStr(CInt(Grid1.Text) + 1)

    Else

    i = i + 1

    c.Add CStr(i), oProduct.PartNumber + pno

    Grid1.Row = i

    Grid1.Col = 0

    Set oParaDesigner = oParas.item("件號(hào)")

    Grid1.Row = i

    Grid1.Col = 1

    jianhao = oParaDesigner.ValueAsString

    Grid1.Text = jianhao

    If Exists(c1, jianhao) Then

    errStr = errStr + "件號(hào)" + jianhao + "存在重復(fù)" + vbCrLf

    Else

    c1.Add "", jianhao

    End If

    Set oParaDesigner = oParas.item("名稱(chēng)")

    Grid1.Row = i

    Grid1.Col = 5

    Grid1.Text = oParaDesigner.ValueAsString

    End If

    fun_end:

    End Sub

    程序運(yùn)行結(jié)果如圖2。

    圖2運(yùn)行結(jié)果

    5結(jié)束語(yǔ)

    本文在行為流概念的基礎(chǔ)上,提出一種基于行為流知識(shí)庫(kù)的功能-結(jié)構(gòu)智能映射框架,該框架可在較高層次實(shí)現(xiàn)設(shè)計(jì)知識(shí)重用。此外,該框架可用于開(kāi)發(fā)計(jì)算機(jī)輔助設(shè)計(jì)工具,用來(lái)輔助設(shè)計(jì)者進(jìn)行新產(chǎn)品概念設(shè)計(jì)。

    參考文獻(xiàn):

    [1]胡挺,吳立軍. CATIA二次開(kāi)發(fā)技術(shù)基礎(chǔ)[M].北京:電子工業(yè)出版社,2006.

    [2]龍峰,樊留群. CATIA V5二次開(kāi)發(fā)技術(shù)探討[J].淮陰工學(xué)院學(xué)報(bào),2005(5):21-23.

    [3]袁其源,雷玉勇.基于專(zhuān)家系統(tǒng)的CATIA二次技術(shù)[J].機(jī)械與電子,2007,9(6).

    [4]韓文靜,郝泳濤.基于知識(shí)的產(chǎn)品功能分解迭代模型[J].電腦知識(shí)與技術(shù),2009,5(30).

    [5]周桂生,陸文龍. CATIA二次開(kāi)發(fā)技術(shù)與應(yīng)用[J].機(jī)械設(shè)計(jì)與制造,2010,1(6).

    猜你喜歡
    二次開(kāi)發(fā)
    淺談基于Revit平臺(tái)的二次開(kāi)發(fā)
    甘肅科技(2020年20期)2020-04-13 00:30:02
    西門(mén)子Operate高級(jí)編程的旋轉(zhuǎn)坐標(biāo)系二次開(kāi)發(fā)
    淺談Mastercam后處理器的二次開(kāi)發(fā)
    模具制造(2019年3期)2019-06-06 02:11:02
    基于C#的AutoCAD建筑構(gòu)件庫(kù)二次開(kāi)發(fā)
    江西建材(2018年2期)2018-04-14 08:01:14
    西門(mén)子Easy Screen對(duì)倒棱機(jī)床界面二次開(kāi)發(fā)
    基于全站儀二次開(kāi)發(fā)的覆冰厚度測(cè)量與實(shí)現(xiàn)
    Micaps3.2 版本二次開(kāi)發(fā)入門(mén)淺析
    西藏科技(2015年12期)2015-09-26 12:13:51
    基于VB的ANSYS二次開(kāi)發(fā)在變壓器抗短路性能分析中的應(yīng)用
    基于CATIA的橡皮囊成形毛料展開(kāi)的二次開(kāi)發(fā)
    ANSYS Workbench二次開(kāi)發(fā)在汽車(chē)穩(wěn)定桿CAE分析中的應(yīng)用
    正蓝旗| 永昌县| 洪泽县| 大庆市| 商河县| 东辽县| 高陵县| 祁阳县| 桃园县| 喀喇| 广西| 陇川县| 鹤峰县| 开封市| 科技| 张家界市| 疏勒县| 墨玉县| 新蔡县| 南充市| 会昌县| 大方县| 喀什市| 临漳县| 嘉禾县| 海安县| 房产| 贵溪市| 望城县| 云南省| 洛宁县| 平罗县| 定远县| 二连浩特市| 清原| 东乡| 郸城县| 福鼎市| 泗水县| 东光县| 中牟县|