免费国产网站_秋霞午夜一区二区三区视频_99热在线看_日韩精品久久一区二区_午夜看一级毛片_天天鲁在视频在线观看

  • 您的位置:首頁 > 新聞動態 > 技術文章

    CATIA插件二次開發C#

    2018/6/22??????點擊:

    1. 引言

    由于項目中要使用WONGLOVE數據手套,近搜集整理了一些關于CATIA二次開發的資料,網絡的相關資料比較有限,因此剛開始遇到了不少問題,通過分析一些示例,以及結合CATIA的宏錄制功能生成的代碼,才算是對CATIA的開發方式有所了解?,F總結一下學習中遇到的相關問題及解決辦法,以共享各位小朋友。

    2. CATIA簡介

    CATIA(Computer Aided Three Dimensional Interactive Application)是法國達索公司的產品開發旗艦解決方案。作為PLM協同解決方案的一個重要組成部分,它可以幫助制造廠商設計他們未來的產品,并支持從項目前階段、具體的設計、分析、模擬、組裝到維護在內的全部工業設計流程。通過使企業能夠重用產品設計知識,縮短開發周期,CATIA解決方案加快企業對市場的需求的反應。CATIA比較廣泛的用于汽車、航空航天、輪船、軍工、儀器儀表、建筑工程、電氣管道、通信等方方面面(來源-百度百科-CATIA)。

    3. CATIA開發模式

    CATIA提供了AutomationAPI組件和組件應用架構(CAA,Component Application Architecture)兩種開發模式。

    3.1 Automation組件

    Automation API具備與任何OLE所兼容的平臺進行通訊能力,自動化(Automation)組件使用VBScript作為編輯工具。通過宏錄制功能(Macro Record),可以記錄用戶的操作過程并自動生成VBScript代碼。這種方式比較簡單,在CATIA環境就中可完成。

    3.2 組件應用架構(CAA)

    CAA采用組件對象模型(COM)和對象的連接和嵌入(OLE)技術,COM作為一種軟件架構具備了更好的模塊獨立性、可擴展性,使CAA的程序設計更加容易且趨于標準化,使程序的代碼更加簡潔明了。在CATIA運行的情況下,外部進程可以通過訪問COM組件實現對CATIA的操作,如創建、修改CATIA環境和幾何形體的數據、尺寸等。

    4. 為什么采用C#作為開發語言

    VBScript腳本方法過于簡單,無法實現CATIA的某些功能,如碰撞檢測功能,且無法與現有項目進行集成。CAA/C++模式是*復雜的開發模式,其可以實現幾乎所有的CATIA功能,但是其過于復雜,需要一定的學習時間,無法很快進行功能實現。因此這兩種實現方式都不是很適合。由于CATIA提供了COM支持,因此我們可以通過.Net平臺引入COM組件進行開發,其有如下優勢: 
    1. 由于項目本身采用的是CSharp語言,因此能夠很好的集成到項目中,并且能夠滿足項目需求。 
    2. 學習成本較低,通過對宏生成代碼進行少許改造即可在.Net平臺中運行。 
    3. 可以將通用操作進行封裝,方便今后項目的開發,降低開發成本。

    5. 準備開發

    5.1 所需軟件

    • CATIA V5 R20
    • Visual Studio 2010

    5.2 引入類庫

    在正確安裝CATIA之后即可在項目中引用CATIA COM類庫,其類庫名稱均以CATIA V5開頭。在引用為類庫后,我們即可進行開發工作。 


    5.3 開發示例

    該示例演示了如何連接CATIA,并生成一個新的Product。

    namespace CATIATest
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 連接CATIA
                Application Catia =(Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Catia.Application");
                // 獲取當前活動ProductDocument
                ProductDocument pd = (ProductDocument)Catia.ActiveDocument;
                // 創建一個ID為newProduct的Product
                pd.Product.Products.AddNewProduct("newProduct");
            }
        }
    }

    【注意】在調試之前請確保CATIA已經運行,否則無法連接到CATIA,程序無法運行。

    6. 開發中使用到的操作總結

    6.1 加載CATIA文件

    public void AddNewComponent(string filePath)
    {
        object[] files = new object[1] { filePath };
        this.ActiveProductDocument.Product.Products.AddComponentsFromFiles(files, "All");
    }

    6.2 向當前Product中添加Part

    // 向當前Product中添加一個指定長度的圓柱體
    public void CreateCylinder(string name, double length)
    {
        // 添加一個新零件
        Product product = this.ActiveProductDocument.Product.Products.AddNewComponent("Part", name);
        // 繪制圓
        Part part = ((PartDocument)this._catia.Documents.Item(name + ".CATPart")).Part;
        Sketch sketch = (part.Bodies.GetItem("零件幾何體") as Body).Sketches.Add(
            (Reference)part.OriginElements.PlaneXY);
        sketch.SetAbsoluteAxisData(new object[] { 0, 0, 0, 1, 0, 0, 0, 1, 0 });
        part.InWorkObject = sketch;
        Factory2D factory = sketch.OpenEdition();
        Axis2D axis = (Axis2D)sketch.GeometricElements.GetItem("絕對軸");
        (axis.GetItem("橫向") as Line2D).ReportName = 1;
        (axis.GetItem("縱向") as Line2D).ReportName = 2;
        Circle2D circle = factory.CreateClosedCircle(0, 0, 5);
        circle.CenterPoint = (Point2D)axis.GetItem("原點");
        circle.ReportName = 3;
        sketch.CloseEdition();
        part.Update();
        // 繪制圓柱
        (part.ShapeFactory as ShapeFactory).AddNewPad(sketch, length);
        part.Update();
    }

    6.3 查找Product

    // 根據產品名稱獲取指定Product
    public Product GetProduct(string productId)
    {
        return (Product)this.ActiveProductDocument.Product.Products.GetItem(productId);
    }

    6.4 移除Product

    protected void RemoveProduct(Product product)
    {
        Selection selection = this.ActiveProductDocument.Selection;
        selection.Clear();
        selection.Add(product);
        selection.Delete();
    }

    6.5 碰撞檢測

    // 檢測兩個產品間是否存在沖突
    public bool ConflictCheck(Product product1, Product product2)
    {
        Groups groups = this.ActiveProductDocument.Product.GetTechnologicalObject("Groups") as Groups;
        Group first = groups.Add();
        Group second = groups.Add();
        first.AddExplicit(product1);
        second.AddExplicit(product2);
        Clash clash = (this.ActiveProductDocument.Product.GetTechnologicalObject("Clashes") as Clashes).Add();
        clash.ComputationType = CatClashComputationType.catClashComputationTypeBetweenTwo;
        clash.InterferenceType = CatClashInterferenceType.catClashInterferenceTypeContact;
        clash.FirstGroup = first;
        clash.SecondGroup = second;
        clash.Compute();
        Conflicts conflicts = clash.Conflicts;
        groups.Remove(first.get_Name());
        groups.Remove(second.get_Name());
        return conflicts.Count != 0;
    }

    6.6 自動調整視圖

    protected void AdapteAllView()
    {
        this._catia.ActiveWindow.ActiveViewer.Reframe();
    }

    7. 其他功能探索

    一般來說,對于CATIA中能夠手工解決的問題均應能夠通過編程的方式處理,我們可以通過以下三種途徑獲取編程幫助以及Sample。

    1. V5 Automation API 手冊(推薦)
    2. CATIA 宏錄制功能
    3. Baidu 以及 Google

    方式一:在安裝好CATIA后,再其安裝目錄中%Install Root%\Dassault Systemes\B20\intel_a\code\bin中已經包含了V5 Automation API .chm幫助文檔。該文檔中包含了全部的可用API及類繼承結構,同時提供了豐富的代碼示例供讀者參考。 

    方式二:通過啟用CATIA的宏錄制功能,可以獲得所有操作的VBScript代碼,我們可以參考該代碼進行CSharp代碼的開發。下圖通過CATIA錄制了一個繪制圓柱的過程,右側窗口內顯示的即為生成的VBScript代碼。 

    8. WONGLOVE數據手套在CATIA中使用

    按照上面的方法, 各位小朋友應該能和我們一樣實現WONGLOVE數據手套在CATIA中的應用。



    主站蜘蛛池模板: 看特级黄色片_动漫精品久久久_国产成人综合在线_国产精品白丝娇喘喷水_极品尤物一区_百性阁综合另类 | 91免费在线播放_日本久久久久久免费网络_午夜久久久_性色爽爱_a天堂最新地址_在线观看欧美激情 | 黑人好猛厉害爽受不了好大撑_一区在线免费视频_亚洲视频一区在线_91挑色_国产偷抇久久精品A片图片_免费国产黄网站在线看 | 欧美黑人成人www在线观看_91污版_日韩一区二区三区免费看_中国丰满少妇xxxxx高潮_美日韩中文字幕_免费无码成人片在线观看 | 国产成人久久精品流白浆_国产精品美女久久久久久久网站_欧美日韩国产色综合一二三四_2020日本不卡一区二区视频_亚洲人视频在线_久久久影院一区二区三区 | 久久综合欧美_日本逼逼_九一传媒在线观看_亚洲日韩乱码久久久久久_蜜臀社区_人人玩人人添人人澡 | 风韵少妇性饥渴推油按摩视频_日韩中文字幕在线一区_成人免费大片黄在线观看com_7777女女免费女淫网站_国产成人无码WWW免费视频在线_国精区二区三区 | 99v久久综合狠狠综合久久_国产精品点击进入在线影院高清_色欲色香天天天综合网WWW_欧美首页_97精品久久久_亚洲精品美女视频 | 公天天吃我奶躁我_少妇淫片a特黄_久久日本片精品aaaaa国产_波多野结衣一区二区三区高清AV_一级毛片免费高清中文字幕久久网_在线视频播放大全 | 国产91精品无码麻豆_草草草在线_国产揄拍国产精品_久久成人精品无人区_av免费入口_国产三级九九久久久久三级 | 51国产午夜精品免费视频_午夜青青草_一级黄片毛片_亚洲第一视频在线播放_黄色国产_成人自拍网站 | 91久久人澡人人添人人双人_日日日日操_国产初高中生真实在线视频_在线免费观看av片_欧美成人精品_国产AⅤ精品一区二区三区久久 | 四虎视频在线精品免费网址_青草青草久热国产精品_免费在线亚洲_www一片黄_最色www_国产女上位疯狂榨精合集 | 樱花草无码专区日本_2021年亚洲精品无码久_特级精品毛片免费观看_日本人又黄又爽又大又色_天天干天天日_天天操天天操 | 国产美女视频网站免费_操出白浆av_日本饥渴人妻欲求不满_亚洲欧美日韩在线免费观看_日日大香人伊一本线久_中文字幕乱码免费视频 | 日韩欧美中文字幕在线观看_午夜国产一区二区_亚洲国产不卡_一个人看的视频免费观看www_日韩欧美亚_亚洲国产精品精华夜999 国产精品国产精品九九_男生操女生视频在线观看_粉嫩一区二区三区在线看_国产无遮挡又黄又爽不要VIP网站_台湾一区二区三区_四虎影院免费看 | 亚洲日韩中文字幕无码一区_久久久久综合网_日韩中文字幕网站_夜夜爽浪潮av99_九九久久精品国产免费看小说_催眠教师~淫辱の教室 又爽又猛又粗国产免费_夜夜躁狠狠躁_欧美三极_无码成人片在线播放_高清一区二区三区视频_欧美久久久久久久久久伊人 | 久久精品日韩精品_中文无码亚洲精品制服丝袜_国产成人高清精品_樱桃视频大全免费高清版_无码AV天天AV天天爽_国产内射性高潮对白 久久成人高清_人人射视频_性av一区_欧洲人免费视频网站在线_欧美亚洲精品一区二区_亚洲欧美视频图片 | 国产成人免费看一级大黄_亚洲卡1卡2卡三卡4卡5卡6卡_日本三级中文字幕在线观看_www久久久com_免费av黄色片_啪啪毛片 | 亚洲中文字幕在线观看_可以免费在线观看av的网站_国产裸体裸美女无遮挡网站_人妻夜夜爽天天爽三区丁香花_欧美第一页码_上流社会在线看 久久免费观看午夜成人网站_国产高清一区二区_久久久网站免费_99re久久精品国产_国产色网_久久99精品久久久久久不卡 | 黄色成年人在线观看_最新毛片网_国产无线乱码新区_最新av在线_噜噜噜噜噜久久久久久91_chinese国产hdsex18一19 | 成人免费无遮挡无码黄漫视频_国产三区在线看_a级毛片大全_国产精品久久免费观看spa_聚宝盆短剧免费观看_91影音先锋 | 日韩欧美国产精品一区二区三区_99热精这里只有精品_国产96av_一区二区三区免费播放_亚洲欧美日韩中文在线制服_亚州综合 | 黄色一级播放_久久91精品国产91久久小草_美女黄网站免费福利视频_欧美亚洲综合网_久久人与动人物a级毛片_欧美视频网站在线观看 | 日韩视频精品_国产综合内射日韩久_让少妇高潮无乱码高清在线观看_国产精品影院在线_扒开双腿疯狂进出爽爽爽视频_中文字幕亚洲在线 | 国产精品无码久久久久久久久久_国产a做爰全过程片_四虎影院最新的网址_免费一级a毛片_国产天美传媒性色AV出轨_三上悠亚av资源站 | 国产人妖一区二区_亚洲第一成年免费网站_成人国产在线_网色视频_无码欧美人XXXXXBBBBB_无码va在线观看 啄木鸟在线观看_天堂AV无码大芭蕉伊人AV_人妻出轨无码中文一区二区_成人免费视频7777777_日韩欧美一区二区视频_亚洲欧洲在线一区 | 国产精品国产三级国产专区53_欧美精品黑人粗大免费_日本一区二区在线免费_日韩一区二区三区在线看_欧美日韩激情亚洲国产_91周晓琳系列在线观看第10部 | 久久综合精品一区_精品亚洲一区二区三区四区五区_国产亚洲人成无码网在线观看_国产乱淫av免费观看_久久久噜噜噜久噜久久综合_日韩三级av | 天天色天天拍_久久精品亚洲欧美日韩精品中文字幕_伊人久久久综合_又黄又大又色又爽又刺激的视频在线观看_国产成人无码免费视频97_日本丰满人妻XXXXXHD | 国产亚洲精品美女久久久M_免费多国毛片在线播放_成人免费高清二区三区视频不卡_97超碰影视_尤物tv在线进入_btav福利片 | 图片区小说区AV区_av在线高清观看_中国一级毛片免费高清_九九精品在线观看视频_日韩国产精_777婷婷天堂综合区色吧 | 女十八毛片_国产精品视频免费在线观看_内射中出日韩无国产剧情_日韩一区二区三区在线视频观看_免费国产黄网站在线播放_成人高潮视频 | 日韩欧美国产成人一区二区_黑人性受xxxx黑人xyx性爽_xxxxx免费视频_一区二区三区免费中文视频_久久黄色一级片_又爽又黄无遮拦成人网站 91av在线免费_日韩三区视频_久久丫精品_视频一区视频二区欧美_久久免费看片_永久免费观看午夜成人网站 | 欧美一区二区一级片A_欧美成人aaaaaaaa免费_欧美视频国产视频_大陆国语对白国产av片_韩国av一区二区三区在线观看_福利视频一 | 欧洲精品色_私人毛片免费高清影视院_精品日韩欧美一区二区三区_国产欧美日本亚洲精品一5区_国产精品自在线拍国产手机版_www.亚洲免费 | 日本疯狂爆乳xxxx_国产在线视频一区二区三区98_青青久视频_国产农村乱色xxxx_完全免费在线视频_亚洲精品99久久久久中文字幕 | 国产精品国产三级国产专区53_欧美精品黑人粗大免费_日本一区二区在线免费_日韩一区二区三区在线看_欧美日韩激情亚洲国产_91周晓琳系列在线观看第10部 | 一区二区三区免费网站_国产偷国产偷亚洲清高网站_亚洲性夜夜综合久久7777_91cao在线_亚洲精品av一二三区无码_激情小说av | 高清久久久_天天拍夜夜添久久精品_国产在线在线_日日碰狠狠躁久久躁96AVV_欧美va天堂va视频va在线_www.琪琪色 | 亚洲最新视频在线观看_中文人妻无码一区二区三区在线_91激情小视频_神马久久桃花_三级超碰_色www免费视频 |