99国产欧美另娄久久久精品_国内自拍农村少妇在线观看_久久亚洲道色宗和久久_日本aⅴ大伊香蕉精品视频_亚洲国产欧美日韩欧美特级_日本视频免费在线观看

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

    CATIA插件二次開發C#

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

    1. 引言

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

    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中的應用。



    主站蜘蛛池模板: 殴美性猛交_欧美白妞大战非洲大炮_熟女人妻在线视频_亚洲AV在线观看天堂无码_艹逼视频免费看_野外一级片_九一视频免费_无码精品人妻一区二区三区aV | 国产五月色婷婷六月丁香视频_永久av在线免费观看_秀人网妲己xiurenwang.cc_蜜桃av噜噜一区二区三_麻豆国产成人AV在线播放欲色_国产一区二区视频在线看_国产一级免费在线观看_麻豆成人精品国产免费 | 热99欧美_久久久精品国产sm调教网站_成人亚洲在线观看_国产一区二区中文字幕免费看_最近中文字幕免费MV在线视频_japanese在线看_色视频www在线播放国产人成_97青娱乐 | 精品人妻无码一区二区三区牛牛_中文字幕无码乱码人妻系列蜜桃_中文字幕亚洲码在线观看_欧美大片首页欧美大片首页_亚洲国产精品午夜在线观看_成人免费xxx在线观看_全球AV集中精品导航福利_国产午夜福利久久网 | 在线毛片网_xxxx交换夫妇com1_亚洲一区中文日韩_a级一级毛片_最新免费av_91热热_久久成人精品视频_久久婷婷五月综合色国产免费观看 | 欧美一级特黄aaaa_亚洲综合麻豆_人妻日本无中文字幕无码_久久久久毛片_www.伊人久久_老司机精品影院_成全动漫在线观看免费观看_日本亚洲网站 337P大尺度啪啪人体_国产一二三视频_在线亚洲网站_91av一二三区_小鸟酱福利视频_999观看免费高清www_婷婷日日_国产91精品欧美 | 亚洲热在线免费观看一二三区_av在线片_亚洲一区二区精品_a级片日本_久久中文字幕av_免费网站看V片在线18禁无码_久久九九有精品国产_欧美视频完全免费看 | 熟妇人妻AV中文字幕老熟妇_成人18毛片_av基地网_国产区视频一区_天天爽夜夜爽人人爽QC_欧美一级淫片在线观看_中文字幕精品久久久_丰满五十路熟女正在播放 | 77777日本少妇久7黄绝片_国产精品天天狠天天看_亚洲中文字幕在线网址_国产亚洲一区二区手机在线观看_午夜影院0606_日日碰狠狠躁久久躁蜜桃_日韩免费视频播放_日本理论片午午伦夜理片2021 热99欧美_久久久精品国产sm调教网站_成人亚洲在线观看_国产一区二区中文字幕免费看_最近中文字幕免费MV在线视频_japanese在线看_色视频www在线播放国产人成_97青娱乐 337P中国人体啪啪_亚洲另类色区欧美日韩图片_成人视频在线观看_国产视频九九_秋霞鲁丝片无码一区二区_欧洲亚洲另类一区在线观看_亚洲成人高清av_亚洲国产成人精品无码区2021 | 噜啊噜在线观看_国产成人精品国内自产拍免费看_中国成人免费视频_伊人久久成人网_久久久国产免费_亚洲中文字幕无线无码毛片_在线观看国产一区_在线观看欧美日韩国产 | 国产精品久久久久久久毛片_一级黄色片久久_青青草华人在线_精品人伦一区_久久久久久逼_被夫の上司に犯中文字幕_www.国产一区二区三区_欧美亚洲激情 | 色肉色伦交av色肉色伦_成人在线三级_超碰五月天_亚洲精品在线91_日产日韩亚洲欧美综合_西西4444WWW大胆无码_国产大BBWBBWHD视频_久艹精品 | 又大又硬又爽又黄又粗又长_精品一区二区三区91_91精产国品_久久99伊人_波多野中文字幕_日韩国产区_伊人短视频_999精品欧美一区二区三区黑人 | 午夜影视免费观看_日韩午夜高清_国语av在线_国产精品99久久精品_欧美日韩精品一区二区公司_国产精品成人在线_在线观看久_超碰在线一区 | 国内精品久久久久国产盗摄_国产免费一区二区在线a片视频_国产一区二区美女_无码精品人妻免费_午夜精品_91av久久_羞羞视频网站免费_精品在线免费看 | 青青草视频污_日本不卡影院_在线麻豆精东9制片厂AV影现网_九色在线视频蝌蚪_免费亚洲精品视频_国产精品熟妇一区二区三区四区_免费网站v片在线亚洲_蜜臀久久99精品久久久久久网站 | 91黄在线_国产99视频精品免费视看6_91啦丨porny丨国产_欧美日韩国产另类图片区_国产在线精品无码二区_青青青视频香蕉在线观看视频_日韩在线免费视频观看_日本三级毛片 | JAPANESE熟女JAPANESEMA_亚洲av无一区二区三区_亚洲综合无码日韩_国产亚洲欧美精品一区_国产h视频在线观看播放_涩涩屋av_国产精品嫩草影院99网站_97干视频 | 丰满人妻熟妇乱又仑精品_成人综合视频在线观看_国产av一区二区三区最新精品_日本视频网站在线观看_a级毛毛片_成人女人a级毛片免费软件_91久久国产精品_久久国产精品偷 | 日本成人三区_阿公抱着我边摸边吃奶视频_欧美黄色三级大片_国内盗摄视频一区二区三区_欧美美女一区二区_欧美成人黄色片_高清国产一区二区三区在线_日本免费观看视频 | 九色精品91_性做久久久久免费观看_日韩精品123区_国产精品久久9_国产精品色拉拉_国产精品wwwcom976con_亚洲高清资源在线观看_九一精品视频一区二区三区 | 成人网中文字幕_国产精品无码在线_CHINESE熟妇与小伙子MATURE_亚洲一区二区久久久_丰满少妇免费做爰大片人_亚色九九九全国免费视频_亚洲国产精品999久久久婷婷_欧美日韩一区二区三区在线视频 | chinese猛男自慰gv网站_一级色毛片_国产成人久久精品激情_农村少妇好紧水多视频_亚洲美腿丝袜无码专区_免费看国产黄线在线观看_日韩精品一区二区三区九九_国产亚洲精品一区二555 | 欧美一级黄色网_国产九一视频_午夜高清_96自拍视频_国产精品99久久不卡二区_日韩视频精品一区_国产三级农村妇女在线观看_麻豆国产在线播放 | 国产中文福利_欧美国产精品天堂_欧洲美女与动性zozozo_亚洲欧美综合久久久久久_国产精品免费网站_在线一区二区国产_天天天天天干_日本免费无遮挡吸乳视频网站 | 亚洲激精日韩激精欧美精品_抽插丰满内射高潮视频_超碰人人人_成人精品片_亚洲视频精品_欧洲美妇乱人伦视频网站_a人片中文字幕一区二区_日日干夜夜弄 | 国产成人在线播放免费视频_99免费在线观看视频_国产精品白浆在线观看无码专区_曰本不卡视频_国产91网站在线观看_精品国产黄_久久一二三四_japanese乱子xxxx | 7777日本精品一区二区三区_在线精品国产欧美_人妻无码αv中文字幕久久_精品999www_午夜精品区_视频免费一区_蜜桃成人免费视频在线播放_黑人巨大两根一起挤进交换 | 欧美伊人精品成人久久综合97_波多野结衣一区二区_亚洲国产精品无码专区在线观看_日韩国产免费一区二区三区_日本三级91_成人偷拍片视频在线观看_欧美另类一区_国产精品一二三区免费 | 一区二区视频免费在线观看_色五月激情五月_久久露脸国产精品_天天干干夜夜_亚洲AV无码专区久久蜜芽_日韩av成人女同恋_大地在线资源_国产精品久久久久久一区二区三区 | CHINA丰满人妻VIDEOSHD_国产午夜精品一区二区三区不卡_国产乱码精品一区二区三区av_国产精品亚洲а∨无码播放麻豆_国产精品亚洲一区在现观看_中文字幕肉感巨大的乳专区_夜夜操女人_亚洲国产一区二区三区在线观看 | 999久久久国产精品消防器材_国产美女视频一区_日韩三级免费_国产超碰在线观看_亚州ava_亚洲AV无码专区日韩乱码不卡_久久久国产乱子伦精品_久久ri资源网 | 日韩在线播放第一页_亚洲在线高清_国产网战无遮挡_久久久久人妻精品一区蜜桃_两性色午夜视频免费播放_一二三四在线观看免费中文在线观看_gav成人网免费免播放器播放_久久精品水蜜桃AV综合天堂 | 女人被躁到高潮免费视频_一区二区视频免费看_色噜噜狠狠色综合成人网_欧美成a人片在线观看久_国产日韩精品中文字无码_一级特级片_国产精品av久久久久久久久久_天堂8中文在线最新版在线 | 欧美日韩高清一区二区_www.se天堂_99国产精成人午夜视频一区二区_亚洲国产高清在线一区二区三区_久久婷婷五月综合色99啪_国产婷婷色一区二区三区在线_小尤奈无码视频_a4yy欧美一区二区三区 | 无码永久成人免费视频_精品无码国产污污污免费网站_久久水蜜桃亚洲AV无码精品_最近更新中文字幕手机版_女人下边被添全过程A片图片_中文字幕AV熟女_内射高潮享受视频在线观看_HTTPWWW色午夜COM曰本 | 欧美精彩视频在线观看_绿奴vk_日韩AV东京社区男人的天堂_国产精品一二三在线观看_亚洲精品A片久久久久_99999久久久久久_又粗又黄又猛又爽大片免费_国产一级片网站 | 中文WWW新版资源在线_国产公开久久人人97超碰_国产一区二区成人_日日爱699_国产资源精品在线观看_在线不卡aⅴ片免费观看_宝贝小嫩嫩好紧好爽H视频_中国a一片一级一片 | 私人影院在线观看视频_国产色视频网站免费_八戒八戒神马影院在线4_国产高清视频色拍_免费日本一区二区_天天做天天爱天天综合网2021_毛片av免费观看_99在线精品视频观看免费 | 久久精品视频网站_免费成人黄色网_超碰在线人人艹_av综合久久_亚州精品av久久久久久久影院_91亚·色_国产免费一级一级_成人av色 | 狠狠干人人干_国产又色又爽又黄又免费_一区二区亚洲_日韩黄色片_日韩视频一区二区三区在线观看_最近中文AV字幕在线中文_精品欧洲AV无码一区二区三区_岳好紧好湿夹太紧了好爽矜持 |