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结构 ,请问这是什么原因啊?
可否将详细信息中的内容以文字形式复制到这里?截屏中看不全后面显示的信息。
有两个地方报这个错误,第一个地方是没有弹窗的,只能通过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的操作
我觉得有可能是我先添加梁元素,然后在删除梁元素,导致的内存不足之类的问题,但是我不知道通过STFLinearMemberList这个怎么去创建一个不绘制在图纸上面的ELement,我只能先绘制到图纸上,然后通过id取到这个Element,然后在删除这个Element的方法得到这个Element对象