我在winform上做了一个视口,但是在视口中显示的图形不完整,而且我是前视图,现在得到的是右视图,是得到的矩阵有问题吗?如图:,只显示了下半身。
我的代码如下
DMatrix3d dma; StandardView stand;
ViewFlags myViewFlags = ViewInformation.GetDefaultFlags(); string aaa = ViewInformation.GetStandardViewName(StandardView.Front); ViewInformation.GetStandardViewByName(out dma, out stand, aaa);
DRange3d elemRng; m_elem.CalcElementRange(out elemRng); DPoint3d myOrg = elemRng.Low; DVector3d myRng = DPoint3d.Subtract(elemRng.High, elemRng.Low); Rectangle myRect = new Rectangle(Location, Size);
DisplayElemHandle(BytesToIntptr(m_elem.ElementHandle), myViewFlags, myRect, dma, myOrg, myRng);
你是参考的如下帖子写得代码吧?
https://communities.bentley.com/communities/other_communities/chinafirst/f/microstation-projectwise/167309/msce-c-wpf-winform-microstation-cell
请注意在该贴的代码中我将ViewFalgs中的camera设置为了False。你查一下你的视图是否相机功能被打开了?打开了的话,会造成图形一些错位。
符老师,是用的那个代码,我将代码在中的camera设置为true,并且将microstationd的相机打开,还是只能显示半身,而我将其设置为轴测的时候,轴测视图依旧是一个平面的,没有三维效果,轴测图如下:
可能我上个帖子没有说清楚。我的意思是,无论在代码中还是在Mstn软件中都要将Camera关闭(OFF),因为一旦相机打开,范围就不是一个立方体而是一个棱柱体了,情况会变得很复杂。
在将相机关闭的前提下,您可以先测试一下顶视图是否能正确保证范围。另外还可以更换其他的一个元素(比如简单的一个圆)来测试。曾经遇到过元素范围不正确的情况出现过,你也可以在代码中将你取到的元素范围值打印出来,然后手工绘制该范围到模型中看是否和你的图形的范围是匹配的。
还有一个技巧能检验每个元素的范围值是否正确,那就是键入SET RANGE命令并回车,更新视图后则所有元素的范围都会显示出来。要关闭这个范围显示,可再次执行SET RANGE并更新视图。
好的,谢谢符老师