bluelover 发表于 2004-6-18 20:40:00

[求助]关于视口的问题

请问怎么获得图纸空间某个视口中显示的图线在模型空间的具体范围?

bluelover 发表于 2004-6-19 21:50:00

我试了一下,PViewport的center属性是它在图纸空间的坐标,而不是在模型空间的坐标。它的width和height属性也是乘以一个比例因子以后的值。


请问如何得到当前活动的视口所显示的图线在模型空间对应的范围?


希望高手指教,谢谢

bluelover 发表于 2004-6-21 08:37:00

PViewport被激活到MSpace以后,视图的中心点在AutoCAD中是可以读取的,在VBA中应该怎么做。


有没有哪位大侠写过类似的程序啊?

bluelover 发表于 2004-6-21 11:43:00

我知道怎么做了

andrea2004 发表于 2005-6-2 10:49:00

楼上的知道怎么做了,能不能说一下,偶也正碰到这个问题,谢谢了

bluelover 发表于 2005-6-2 11:36:00

下面的代码你可以参考一下:


                                                                               Dim DOC1 As AcadDocument 'the source dwg file


                                                                                       Dim xdataOut As Variant 'extends data of a pviewport<BR>                                                                                       Dim xtypeOut As Variant 'extends data type


                                                                                       DOC1.MSpace = True


                                                                                       DOC1.ActivePViewport.GetXData "", xtypeOut, xdataOut 'get extends data<BR>                                                                                                                                                                                                                                                                                                               <BR>                                                                                       h = xdataOut(7)'高度,至于范围的宽度你可以根据视口宽度和缩放比例计算出来<BR>                                                                                                <BR>                                                                                       If IsV04 Then'pntc就是范围的中心点坐标,isv04是我自定义的布尔类型的变量<BR>根据我的测试,中心点在04版本和04以前的版本中,它在扩展数据中的保存位置不一样                       


                                                                                                       pntc(0) = xdataOut(8): pntc(1) = xdataOut(9): pntc(2) = 0 'used in 2004 version<BR>                                                                                       Else<BR>                                                                                                                       pntc(0) = xdataOut(4)(0): pntc(1) = xdataOut(4)(1): pntc(2) = 0 'used in the early version<BR>                                                                                       End If


这个方法是我自己摸索出来的,希望对你有所帮助,但我不确定是否有更好的办法。
页: [1]
查看完整版本: [求助]关于视口的问题