【ABD v8i C#】错误元素

STFLinearMemberList myMemberList = new STFLinearMemberList();
STFLinearMember myMember;
Point3d pPt, qPt;
STFSectionList sectionList = new STFSectionList();
STFSection section;
STFMaterialList materialList = new STFMaterialList();
STFMaterial material;
material = materialList.AsSTFMaterial;
material.SetName("Concrete");
material.SetGrade("4000 psi");

section = sectionList.AsSTFSection;

section.SetName(SectionName);

myMember = myMemberList.AsSTFLinearMember;
myMember.SetPQPoints(pPt, qPt);
myMember.SetSTFSection(section);
myMember.SetSTFMaterial(material);
myMember.SetPlacementPoint(5);
myMember.SetCrossSectionReflection(true);
myMember.CreateTFFormRecipeList();
myMember.Save(false);
long id = myMember.GetUniqueId().Low;
return id;

我创建了一个梁元素,在我电脑上面使用可以创建成功,但是换另外一个电脑就报错错误元素,有时候会报错无效的OLEVERB结构 ,请问这是什么原因啊?

Parents
  • 可否将详细信息中的内容以文字形式复制到这里?截屏中看不全后面显示的信息。



  • 有两个地方报这个错误,第一个地方是没有弹窗的,只能通过trycatch捕获到错误信息,第二个就是上面的这个弹窗

    {System.Runtime.InteropServices.COMException (0x80040C21): 错误元素   在 Bentley.Interop.MicroStationDGN.ModelReference.AddElement(Element Element)   在 JYX_LouTi_CS.DrawBody.Dynamics(Point3d& point3d, View View, MsdDrawingMode DrawMode) 位置 D:\code\NETProjects\JYX_LouTi_CS\PublicClass\DrawBody.cs:行号 480}

    System.Runtime.InteropServices.COMException (0x80040C21): 错误元素
    在 Bentley.Interop.MicroStationDGN.Application.CreateArcElement3(Element Template, Point3d& StartPoint, Point3d& PointOnCurve, Point3d& EndPoint)
    在 Louti_foundation_reinforcement_cs.Zhi_Gou_Zhi_Rebar.create_line_arc(List`1& chainable_element_list, Point3d& p1, Point3d p2, Point3d p3, Double r)
    在 Louti_foundation_reinforcement_cs.Zhi_Gou_Zhi_Rebar.create_rebar()
    在 Louti_foundation_reinforcement_cs.Tiban_Reinforcement.create_rebar()
    在 JYX_LouTi_CS.TibanClass.get_tiban_rebar(Boolean is_3d)
    在 JYX_LouTi_CS.TibanClass.get_tiban_butonggangjin(List`1& dangengshu_list, List`1& tiban_butong_shangbu_fenbujin, List`1& tiban_butong_xiabu_fenbujin, List`1& tiban_butong_shangbu_fenbujin_shang, List`1& tiban_butong_shangbu_fenbujin_xia, List`1& tiban_butong_xiabu_zongjin, List`1& tiban_butong_shangbu_zongjin_shang, List`1& tiban_butong_shangbu_zongjin_xia)
    在 JYX_LouTi_CS.gongchengliangShujuxiangPeizhi.create_tiban_biaozhong_text_elem(List`1 biaotou_list, TextStyle text_style_tssdeng, Double wenzi_gaodu, Double biaoge_single_row_height, List`1 biaotou_kuan, Double& zhongbu_biaogao, List`1& zongzhongliang_list, List`1& zongtiji_list)
    在 JYX_LouTi_CS.gongchengliangShujuxiangPeizhi.biaoge_cell(List`1 biaotou_list, String[] zongji, String yuyan)
    在 JYX_LouTi_CS.gongchengliangShujuxiangPeizhi.button_shuchuzhi_gangjinbiao_Click(Object sender, EventArgs e)
    在 System.Windows.Forms.Control.OnClick(EventArgs e)
    在 System.Windows.Forms.Button.OnClick(EventArgs e)
    在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    在 System.Windows.Forms.Control.WndProc(Message& m)
    在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
    在 System.Windows.Forms.Button.WndProc(Message& m)
    在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

  • 在这个错误报告开头,我看到 在JYX_LouTi_CS.DrawBody.Dynamics中调用AddElement。您这个Dynamics是用来动态显示元素的吗?如果是的话,在这个动态函数中是严禁调用AddElement往模型中添加元素的,因为这个动态函数会随着您鼠标的移动而被反复调用无数次,这样会往模型中添加无数多个元素从而造成软件崩溃的。



  • 我并没有在动态显示的时候调用AddElement,我大概的思路是这样的,我在动态显示的时候,调用STFLinearMemberList创建了一个梁的Element,然后返回这个ID值

    然后我通过这个ID值创建了一个Element对象,然后将这个ID的Element给删掉了

    然后我在动态显示里面对ELement进行了Redraw的操作,只有在点击的时候做了AddELement的操作

Reply Children
No Data