【OBD开发,c#语言】是否能调用OBD中的API命令创建弧形结构

把其他软件的模型导入OBD中,由于算法设计问题,一部分弧形梁及弧型墙等弧形结构无法直接生成,能否直接调用OBD现有API命令直接生成相应弧形构建?如果有,在哪里可以找到,如果没有,采用那些方式可以解决上述问题?

Parents Reply Children
  • 符老师,关于STF的API中, STFLinearMemberListClass中的setpath函数猜测是与路径相关,但测试很多次,参数表达不清楚,运行错误,请问该怎么办,以此你们这是否与此部分相关的文档?

  • 测试环境 OBD Update8,Com下的TFBrepList内存释放貌似有问题,就算强制垃圾回收,也可能导致OBD崩溃,c++下的free函数又未封装。

    如果以下代码改为设置两点来放置梁对象的话,是不会崩溃的,所以,大概率要使用C++来实现。

    STFLinearMemberList sTFLinearMemberList = new STFLinearMemberList();
    sTFLinearMemberList.Init("");
    STFLinearMember geo = sTFLinearMemberList.AsSTFLinearMember;
    
    Bentley.Interop.TFCom.TFCatalogList datagroup = new Bentley.Interop.TFCom.TFCatalogList();
    datagroup.Init();
    var temp = datagroup.AsTFCatalog.GetCatalogItemByNames("Steel Beam", "轻钢搁架");
    geo.InitFromCatalogItem(temp.GetNode(0, "").AsTFCatalogItem, "");
    geo.SetSectionName("HM400X300");
    
    Bentley.Interop.MicroStationDGN.Application msUSTN = Bentley.MstnPlatformNET.InteropServices.Utilities.ComApp;
    ModelReference molRef = msUSTN.ActiveModelReference;
    
    //id为圆弧实例的elementid
    var ele = molRef.GetElementByID(ref id);
    TFBrepListClass tFBrepListClass = new TFBrepListClass();
    tFBrepListClass.InitFromElement(ele, molRef, "");
    geo.SetPath(tFBrepListClass.GetNode(0, ""), "");
    
    geo.CreateTFFormRecipeList("");
    Bentley.Interop.MicroStationDGN.Element elm = geo.GetMSElementDescrWritten(molRef, true, "");
    GC.Collect();//TFBrepList内存释放有问题,不强制回收的话,第二次执行代码必定崩溃