免费国产网站_秋霞午夜一区二区三区视频_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中的應用。



    主站蜘蛛池模板: 人妻丰满av无码中文字幕_亚洲精品一区二区三区无码夜色_久久男人AV资源网站无码软件_色综合999_久久人体视频_欧美亚洲综合色 | 亚洲免费视频成人_小荡货你夹的老师好紧_真实国产普通话对白乱子子伦视频_牛和人交VIDE欧美XX00186_四虎国产免费_国产成人午夜 | 精品国产AⅤ无码一区二区_日本成年免费网站_久久精品视频7_国产午夜无码精品免费看_中文有码亚洲制服av片_国产精品亚洲日韩欧美色窝窝 | 亚洲优女在线_日本黄色动漫视频_精品1区2区3区4区产品乱码9_日本在线不卡免费_午夜在线网站_四虎av影院 | 九一免费版网_亚洲不卡中文字幕无码_成人精品喷水视频www_日本一区二区三区精品视频_第四色在线视频_91啦丨国产 | 国产天堂_久久久久青草线蕉综合超碰_一女被多男玩喷潮3p免费视频_亚洲一区二区在线观看视频_8x8×拨牐拨牐永久免费视频_精品亚洲成人 | 亚洲欧美视频网站_久久久久久精_国产在线中文_久久夜色精品国产欧美乱文字幕无码_高潮抽搐潮喷毛片在线播放_九九九热视频 | 国产ā片在线观看免费观看_欧美韩日视频_水蜜桃无码视频在线观看_日日噜噜噜夜夜爽爽狠狠视频_亚洲精品卡2卡3卡4卡乱码_不卡av免费看 | 青青草精品在线视频_国产熟女视频_日本久久久久久久久久久久_我看午夜视频_xx另类性欧美_精品国产一区二区三区高潮视 | 女人19水真多免费毛片_久久久久久久久亚洲_啊轻点灬大ji巴太粗太长了日本_色老头XXXX_国产黄色一级片_久久aa 999久久久欧美日韩黑人_欧美亚色_狠狠色图片_japanhd性美女_国产精品国精产品一二_在线观看所有av | 欧美在线视频a_国产无遮挡裸体免费视频在线观看_中文字幕1区_老师你怎么会在这第2季在线观看_67194成是人免费无码_最近免费中文mv在线字幕 | 疾速追杀4在线观看完整免费高清_国产精品拍国产拍拍偷剧情_超碰911_日本肉体xxxx裸体137大胆_欧美牲交A欧美牲交AⅤ免费真_看了又看第二部免费观看 | 久久伊人操_精品视频在线播放_谍战剧《惊弦》免费观看_天堂网www在线_a猛片免费_久久久亚洲综合 古典武侠第一页久久777_91美女片黄在线观看_亚洲日产精品一二三四区_人妻少妇无码精品视频区_亚洲天堂国产视频_欧美日韩一区视频 | 黑人一区二区三区四区五区_www.久久久久_无码aⅴ精品一区二区三区_伊人久久综合成人网_国产最新在线_手机看片日韩人妻少妇 | 亚洲一av_少妇的丰满人妻HD高清_老师喂我乳我脱她胸罩_国产成人自产拍免费视频_中日韩三级视频_国产精品1区二区 | free性ⅴideo另类重口_黄色毛片免费视频_麻豆精品二区_果冻tv在线免费观看_日韩精品人妻无码久久影院_丰满人妻妇伦又伦精品国产 | 91在线视频在线观看_国产午夜毛片v一区二区三区_惊弦45集全免费看_极品人妻少妇一区二区三区_欧美黄色视屏_免费看国产操逼视频 | 日韩欧美精品一区二区_国产精品视频资源_伊人久久综合热线大杳蕉_18禁成人无遮羞网站免费_亚洲AV无码AV在线影院_丰满熟妇另类激情 | www99re最新地址获取_成人深夜福利在线观看_四虎影视院_777777农村一级毛片_白丝jk自慰高潮_日本一二三视频 | 国产成人高清亚洲明星一区_一个人看的免费视频www动漫?_日本曰又深又爽免费视频_国外成人免费视频_亚洲久在线_99热99干 | 欧洲色情三级欧美三级视频_国产成人无码av在线播放不卡_大地资源中文在线观看免费_午夜天堂AV天堂久久久_私人家庭影院在线_www.日韩在线 | 欧美日韩1区2区3区_欧美精品一区二区三区涩爱蜜_99爱在线视频这里只有精品_特级做a爱片免费69_成人内射国产免费观看_另类三区 | 中文日产幕无线码一区二区_久久久久一区二区三区四区五区_成年人精品视频在线观看_色就是色欧美亚洲_偷窥中国老太XXXX_日本免费一区二区三区最新vr | 日韩在线播放av_亚洲第一看片_日产久久久_福利姬在线观看_大片免费观看视频播放器_91精品www | 99国产精品人妻噜啊噜_亚洲毛毛片_亚洲精品中文综合第一页_国产精品美女一区二区在线观看_欧美高清在线精品一区_99久久精品国产一区二区蜜芽 | 中文字幕日韩无_精品在线视频一区二区_免费在线看a_一个人看的www在线视频播放_日韩啊v在线_久精品视频在线观看 | 蜜臀av片_国产有码在线观看_国产在线高清网址导航_av自拍一区_久久国产精品99久久久久久牛牛_久久精品国产麻豆 | 隐龙老爸风华绝代短剧免费观看_自拍偷拍视频在线观看_欧州一区二区_成人污污www网站免费丝瓜_成年人免费看_欧美性性性性性色大片免费的 | 精品五夜婷香蕉国产线看观看_国产小伙和50岁熟女59P_手机福利在线视频_一区免费视频_亚洲第一国产视频_久久久不卡网国产精品一区二区 | 欧美日韩在线视频一区_日韩城人视频_久久精品国产亚洲an天堂_棈品国产乱码久久久久久影片_成人免费观看av_日本精品久久久一区二区三区 | s久久亚洲综合色_中文字幕在线综合_亚洲人AV永久一区二区三区久久_成人欧美一区二区三区在线播放_日韩大片中文字幕_国产一级全黄 | 成人综合网站_2019狠狠干_国产精品一区二区欧美视频_久久99久久_成人中文_国产欧美日韩综合视频专区 | 国产香蕉国产精品偷在线_国产亚洲欧美精品永久_www.九九九九_人人澡人人澡人人澡澡_欧美黄色一级片免费看_两个奶被揉到高潮视频 99成人精品日韩激情网站_www.影院_噜噜噜久久亚洲精品国产品91_九久久久久_久久人91精品久久久久久不卡_久久久久久久久久久网 | 久草久草久草久草_亚洲日韩国产一本视频_蜜桃一级网站._中文字幕av一区二区三区佐山爱_成A∨人片在线观看无码_美女在线一区二区 欧美日韩亚洲国产_久久99精品久久久久婷婷暖91_av青青_国产精品看高国产精品不卡_国产青青在线视频_亚洲av永久无码天堂网 | 日本www.色_在线观看免费视频日韩_91av看片_亚洲午夜精品久久久_久久亚洲风情_亚洲色大成网站www尤物 | 中国女人内谢69XXXXXA片_欧美疯狂xxxx大交乱88av_日韩中文综合_国产成人愉拍精品久久_亚洲在线视频免费观看_色综合夜夜嗨亚洲一二区 | yy480午夜久久_亚洲熟妇丰满大屁股熟妇_精品视频久久久_在线观看免费中文字幕_国内无码av不卡一区二区_久色婷婷 | 按摩高潮A片一区二区三区_人人妻人人爽人人澡AV_日韩欧美网_日韩激情一区二区三区_欧美成人一区二区三区高清_日本伦理片大全 | 看毛片看毛片_亚洲午夜精品久久久久久浪潮_欧美在线www_中年好声音3粤语免费观看_久久久久久久久久久视频_高清在线视频 | 精品亚洲国产成人蜜臀av_国产无人区码卡二卡三卡_老司机色视频_日本精品一区二区三区在线视频_无码人妻AV一区二区三区蜜臀_中文字幕久操 | 波多野结衣中文在线_丰满多毛少妇做爰视频爽爽和R_91精品毛片_国产精品对白久久久久粗_蜜桃影片在线播放网站免费观看_疯狂做受ⅩⅩⅩⅩ高潮高清视频 |