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

        ?

        Femap計(jì)算報(bào)告快速生成方法1

        2023-07-07 10:00:36唐志廣
        關(guān)鍵詞:二次開發(fā)程序用戶

        唐志廣

        (大連中遠(yuǎn)海運(yùn)重工有限公司,遼寧大連 116113)

        0 引言

        Femap 是Siemens PLM Software 開發(fā)的有限元(Finite Element,F(xiàn)E)預(yù)處理和后處理軟件,主要用于工程仿真和分析,廣泛應(yīng)用于汽車、航天、航空、船舶、電子、機(jī)械制造等行業(yè)中[1]。Femap 軟件默認(rèn)安裝NX Nastran 解算器,并能與多種FE 分析解算器兼容,如ABAQUS、ANSYS、LS-DYNA等[2]。Femap 軟件不僅提供了許多強(qiáng)大的通用功能,還公開了眾多的應(yīng)用編程接口(Application Programming Interface,API),供用戶開發(fā)自定義的擴(kuò)展功能,以提高用戶工作效率[3]。

        Femap 軟件具有強(qiáng)大的后處理功能,便于使用者快速、有效地分析仿真結(jié)果。Femap 提供的后處理工具包括:表格、線圖、云圖、動(dòng)畫、用戶自定義報(bào)告等[4]。此外,F(xiàn)emap 提供通用的結(jié)果處理功能,可在分析結(jié)束后合并計(jì)算結(jié)果,為編寫項(xiàng)目計(jì)算報(bào)告提供了充分支持。

        在編寫項(xiàng)目計(jì)算報(bào)告時(shí),往往需要計(jì)算多種工況,此時(shí)需要將各工況的計(jì)算結(jié)果粘貼到計(jì)算報(bào)告中[5]。由于工況復(fù)雜,每份計(jì)算報(bào)告中需要粘貼的矢量圖、云圖的數(shù)量通常高達(dá)數(shù)百?gòu)垼羧客ㄟ^手工操作,不僅浪費(fèi)大量設(shè)計(jì)時(shí)間,還需要花費(fèi)很多精力來檢查正確性,非常繁瑣。針對(duì)上述問題,本文基于Femap 軟件提供的API,對(duì)計(jì)算報(bào)告所需圖表的自動(dòng)輸出功能進(jìn)行開發(fā),并將其應(yīng)用于設(shè)計(jì)實(shí)踐。

        1 Femap 的二次開發(fā)方法

        為方便二次開發(fā),F(xiàn)emap 軟件的API 允許用戶開發(fā)自定義的擴(kuò)展功能。Femap 軟件的API 可使用任何支持對(duì)象鏈接與嵌入/組合對(duì)象模型(Object Linking and Embedding/Component Object Model,OLE/COM)的編程語(yǔ)言進(jìn)行開發(fā),如C/C++、C#、Visual Basic、VBA 等[6]。對(duì)于用戶二次開發(fā)的應(yīng)用程序,F(xiàn)emap 軟件提供了多種交互方式,主要包括以下4 種:

        1)作為2 個(gè)獨(dú)立的應(yīng)用程序運(yùn)行(無交互)。

        2)將Femap 作為后臺(tái)服務(wù)運(yùn)行。

        3)將用戶應(yīng)用程序作為Femap 加載項(xiàng)運(yùn)行。

        4)將Femap 程序界面嵌入用戶應(yīng)用程序中。

        1.1 作為2 個(gè)獨(dú)立的應(yīng)用程序運(yùn)行(無交互)

        該方式是最簡(jiǎn)單的交互方式。由于Femap 和用戶二次開發(fā)的應(yīng)用程序都不需要真正了解對(duì)方的用戶界面,故不需要進(jìn)行額外的設(shè)置[7],只需要啟動(dòng)應(yīng)用程序,然后通過COM 接口獲取已經(jīng)運(yùn)行的Femap 應(yīng)用程序窗口。新的Femap 應(yīng)用程序默認(rèn)隱藏窗口界面,要將窗口顯示出來必須調(diào)用feAppVisible 函數(shù)。

        1.2 將Femap 作為后臺(tái)服務(wù)運(yùn)行

        若希望用戶二次開發(fā)的應(yīng)用程序界面成為用戶唯一可見的用戶界面,則在啟動(dòng)新的Femap程序后,不調(diào)用feAppVisible 函數(shù),此時(shí)僅有用戶二次開發(fā)的應(yīng)用程序界面可供交互。然而,通過API,用戶二次開發(fā)的應(yīng)用程序可訪問Femap 的任何接口。由于此交互方式不需要更新Femap 界面,故運(yùn)行速度較快。

        1.3 將用戶應(yīng)用程序作為Femap 加載項(xiàng)運(yùn)行

        在此交互方式下,用戶二次開發(fā)的應(yīng)用程序成為Femap 的一個(gè)加載項(xiàng)。用戶看到的整體界面和普通的Femap界面基本相同,僅僅多了一個(gè)浮動(dòng)面板,即用戶二次開發(fā)的圖形用戶界面(Graphical User Interface,GUI)。該交互模式將用戶二次開發(fā)的程序界面嵌入Femap 程序界面中,并與Femap 操作界面融為一體。

        1.4 將Femap 程序界面嵌入用戶應(yīng)用程序中

        將Femap 程序界面嵌入用戶應(yīng)用程序界面中,F(xiàn)emap 程序界面可整體顯示,也可部分顯示。若要關(guān)閉除視圖窗口外的其他Femap 窗體界面元素,只需要調(diào)用feAppEmbed 函數(shù)即可。

        綜上所述,F(xiàn)emap 軟件與用戶二次開發(fā)的應(yīng)用程序間有多種交互方式,具體采用何種方式,需要根據(jù)應(yīng)用場(chǎng)合而定。本文將用戶二次開發(fā)的程序嵌入Femap 用戶界面中,使其與Femap 軟件界面的風(fēng)格相統(tǒng)一。

        2 使用C++讀寫Word 文檔的方法

        要實(shí)現(xiàn)自動(dòng)生成計(jì)算報(bào)告,則需要通過程序讀寫Word 文檔。通過程序讀寫Word 文檔主要有以下2 種方式:1)直接使用Word 的COM 組件接口,見圖1;2)使用Word 操作控件,如Spire.Doc 等。第1 種方式常會(huì)由于各設(shè)計(jì)師電腦上安裝的Word版本不同而導(dǎo)致程序兼容性問題;第2 種方式往往會(huì)產(chǎn)生額外的費(fèi)用。本文的研究涉及插入文字和圖片等基本操作,主要通過改造開源庫(kù)DuckX 實(shí)現(xiàn)所需要的功能。由于DuckX 僅提供了在Word 文檔中插入文字的功能,需要增加在Word 文檔中插入圖片的功能。

        圖1 直接使用Word 的COM 組件接口

        Word 自2007 版本之后的文件為.doc 格式,使用壓縮軟件對(duì).doc 格式的文件進(jìn)行解壓操作,可得到一些文件和文件夾。其中,document.xml 文件包含了文檔的主要文本內(nèi)容,DuckX 通過該文件實(shí)現(xiàn)docx 文檔的文本讀寫功能。

        DuckX 在 Word 中插入文本只需要修改document.xml 即可,插入圖片相較插入文本更為復(fù)雜,主要包括如下步驟:

        1)在document.xml 中寫入圖片的大小、版式、位置等信息,設(shè)置圖片編號(hào)。

        2)在word/media 文件夾中插入一個(gè)實(shí)際的圖片文件。

        3)修改word/_rels/ document.xml.rels,添加一個(gè)記錄,將圖片編號(hào)與圖片文件關(guān)聯(lián)起來。

        為實(shí)現(xiàn)在Word文檔中插入圖片的功能,DuckX需要添加如下3 類代碼:1)Relationship 類代碼,用于管理word/_rels/document.xml.rels 文件;2)InlinePicture 類代碼,用于管理圖片對(duì)象;3)Run類代碼,用于插入圖片。

        3 編程與測(cè)試

        考慮到程序運(yùn)行速度以及開創(chuàng)性,本文基于Femap 軟件,采用C++語(yǔ)言進(jìn)行二次開發(fā)。二次開發(fā)的程序?qū)isual Studio 2019 社區(qū)版作為集成開發(fā)環(huán)境,程序界面見圖2。

        圖2 程序界面

        3.1 Du ckX 改造

        從GitHub 上下載DuckX,使用CMake 工具生成 Microsoft Visual Studio(VS)項(xiàng)目,添加Relationship 類、InlinePicture 類代碼,并在Run 類代碼中添加add_inline_picture 方法,隨后編譯為lib文件供后續(xù)使用。

        InLinePicture 類代碼的關(guān)鍵部分如下:

        3.2 連接Femap 并創(chuàng)建應(yīng)用程序?qū)ο?/h3>

        首先打開Visual Studio 軟件,創(chuàng)建一個(gè)微軟基礎(chǔ)類庫(kù)(Microsoft Foundation Classes,MFC)的對(duì)話框應(yīng)用,再?gòu)膄emap.tlb 導(dǎo)入所需要的接口。

        在對(duì)話框的頭文件中添加如下語(yǔ)句:

        #import "D:\Program Files\Siemens\Femap 2022.1\femap.tlb" named_guids rename("GetProp","feGetProp")

        在對(duì)話框頭文件中添加應(yīng)用程序?qū)ο蠊┖罄m(xù)使用:

        CComQIPtr pModel;

        在對(duì)話框的OnInitDialog()方法中對(duì)pModel 進(jìn)行初始化,為使代碼清晰易讀,此處省去了與異常判斷有關(guān)的部分代碼:

        CoInitialize( NULL );

        CLSID clsid;

        HRESULT hr = AfxGetClassIDFromString(L"femap.model",&clsid );

        IUnknown FAR* punk;

        hr = ::CoCreateInstance(clsid,NULL,CLSCTX_SERVER,IID_IUnknown,(void**)&punk);

        pModel = punk;

        pModel->feAppRegisterAddInPane(true,(int)m_hWnd,0,false,false,3,1);

        pModel->feAppVisible(true);

        3.3 在程序中處理消息

        當(dāng)Femap 程序關(guān)閉時(shí),應(yīng)能實(shí)現(xiàn)對(duì)話框自動(dòng)退出的功能。因此,二次開發(fā)程序應(yīng)能捕捉并響應(yīng)Femap 程序發(fā)出的退出消息。

        通過如下代碼在OnInitDialog( )方法中注冊(cè)Femap 消息:

        FE_EVENT_MESSAGE = RegisterWindow Message(L"FE_EVENT_MESSAGE");

        通過如下代碼重載對(duì)話框的WindowProc 函數(shù)處理消息:

        if (message == FE_EVENT_MESSAGE)

        if (wParam == femap::zEventCode::FEVENT_SHUTDOWN)

        if (lParam == 1)

        PostMessage(WM_CLOSE,0,0);

        3.4 核心代碼

        在程序界面中選中OutputSet、OutputVector、Group 與View,通過遍歷循環(huán),逐一將結(jié)果輸出到Word 文檔中。Word 需要使用的圖片來自Femap 生成的View,F(xiàn)emap 可以將View 顯示的內(nèi)容保存為圖片文件,也可將顯示內(nèi)容保存至剪貼板。由測(cè)試可知:先將View 顯示的內(nèi)容保存至剪貼板,再導(dǎo)入到Word 時(shí),程序運(yùn)行速度較快。

        二次開發(fā)程序的核心代碼如下:

        femap::IViewPtr view=pModel->feView;

        view->Get(viewID);

        pModel->feAppSetActiveView(viewID);

        pModel->feGroup->Active=groupID;

        view->OutputSet=outputSetID;

        view->ContourVector1V2=contourVector;

        view->Put(viewID);

        view->FitVisible(false);/pModel->feView Regenerate(0);

        pModel->feFilePictureCopy( );/

        std::string id=std::to_string(picIndex);

        std::string rid="rid"+id;

        std::string target="media/"+rid+".png";

        duckx::Run run=doc.paragraphs( ).insert_paragraph_after("").add_run("");

        duckx::InlinePicture pic=run.add_inline_picture(id,rid,wPicture,hPicture);

        pic.data_size=GetClipImageSize( );

        pic.pic_data=GetClipImageData( );

        doc.set_picture_relationship(pic);

        doc.paragraphs( ).insert_paragraph_after(pic_title).insert_paragraph_after("");

        代碼中涉及對(duì)圖片寬度和高度的計(jì)算。計(jì)算報(bào)告采用豎版A4 紙,由document.xml 可知:Word 中豎版A4紙的寬度為11 906 twip(1 twip=0.017 6 mm),高度為16 838 twip,上下頁(yè)邊距為1 440 twip,左右頁(yè)邊距為1 800 twip。

        在內(nèi)存中,圖片的單位是像素,需要先進(jìn)行單位換算,再根據(jù)頁(yè)面寬度和高度自動(dòng)調(diào)整圖片的大小。

        4最終效果

        在運(yùn)行二次開發(fā)的程序后,會(huì)自動(dòng)打開一個(gè)Femap 窗口,用戶應(yīng)用程序以浮動(dòng)面板的形式嵌入在Femap 窗口中。打開要導(dǎo)出計(jì)算報(bào)告的模型,點(diǎn)擊面板中左上角的提取模型信息按鈕,此時(shí)面板中會(huì)列出該模型中所有的條目。選擇要導(dǎo)出的條目,輸入報(bào)告的文件名,點(diǎn)擊面板右上角的導(dǎo)出Word按鈕,就可以自動(dòng)導(dǎo)出報(bào)告。此外,面板中還可以設(shè)定圖片標(biāo)題的生成方式,對(duì)圖片標(biāo)題進(jìn)行自定義。

        5 結(jié)論

        本文基于Femap 軟件提供的應(yīng)用編程接口,對(duì)計(jì)算報(bào)告所需圖表的自動(dòng)輸出功能進(jìn)行開發(fā),并將其應(yīng)用于設(shè)計(jì)實(shí)踐。研究表明:該自動(dòng)輸出功能可顯著提高設(shè)計(jì)效率。手動(dòng)操作需要1 天才能完成的報(bào)告,使用本文的二次開發(fā)程序僅需要5 min 即可完成。本文的研究成果可為Femap 軟件的二次開發(fā)提供一定參考。

        猜你喜歡
        二次開發(fā)程序用戶
        淺談基于Revit平臺(tái)的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        試論我國(guó)未決羈押程序的立法完善
        西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
        “程序猿”的生活什么樣
        英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        日本老熟女一区二区三区| 亚洲人交乣女bbw| 日韩人妻无码精品-专区| 国精无码欧精品亚洲一区| 亚洲国产精品国自产电影| 亚洲精品区二区三区蜜桃| 亚洲最大在线视频一区二区| 少妇人妻精品一区二区三区| 精品日韩欧美一区二区在线播放| 国产哟交泬泬视频在线播放| 午夜国产在线精彩自拍视频| 国产高颜值女主播在线| 亚洲欧美一区二区三区在线| 国产精品亚洲专区无码web | 日韩精品在线一二三四区| 亚洲精品www久久久久久| 久久久噜噜噜久久中文字幕色伊伊| 麻豆AV无码久久精品蜜桃久久| 91精品国产综合久久久蜜臀九色| 白白白在线视频免费播放| 少妇性荡欲视频| ZZIJZZIJ亚洲日本少妇| 国产av麻豆精品第一页| 色综合久久中文娱乐网| 国产无遮挡又黄又爽在线观看| 国产成人免费a在线视频| 精品在线亚洲一区二区三区| 欲香欲色天天天综合和网| 麻豆亚洲av永久无码精品久久| 日本韩国三级aⅴ在线观看 | 国产高跟黑色丝袜在线| 欧美精品在线一区| 色佬易精品视频免费在线观看| 国产成人精品优优av| 漂亮人妻被中出中文字幕久久 | 性色av无码久久一区二区三区| 精品熟女少妇免费久久| 亚洲美女主播内射在线| 天堂中文官网在线| 无码一区二区三区AV免费换脸 | 国产精品无码久久久久久久久作品|