[求助]如果取得下图的坐标点
<p></p><p></p><p>如上图,这是一个块,假设圆心的坐标是(0,0,0),而且也许它不是由一个圆组成,而是其它未知图元,现在要通过程序求得该块与X轴和Y轴上4个的交点的坐标,如上图四个白色点的坐标。</p> 在图中画了两根与X轴和Y轴重叠的线后,用IntersectWith命令获取交点的坐标,但对于图块,其返回值误差很大,而且没规律,行不通,请高手指点,谢谢。 本人插入块后,画了一根与X轴,一根与Y轴重叠的直线,求它们与块的交点,但是得到的坐标误差很大,而如果不是块的话就正确,希望能有高手提供更准确简捷的办法。谢谢! 你的程序写出来,再帮你改。 本帖最后由 作者 于 2008-10-25 23:41:56 编辑 <br /><br /> <p>说明:该块实际值分别应为</p><p>Px1=(-2,0,0)</p><p>Px2=(2,0,0)</p><p>Py1=(0,-2,0)</p><p>Py2=(0,2,0)</p><p>但程序得到的结果却各有2个交点,且Px2为(5.27,0,0)和Py2为(0,5.5488,0)</p><p>我程序如下:</p><p>Sub getxy()<br/>Dim Blk As AcadBlockReference<br/>Dim P1(0 To 2) As Double<br/>Dim Pa As Variant<br/>Dim Pb(0 To 2) As Double<br/>Dim Px1 As Variant<br/>Dim Px2 As Variant<br/>Dim Py1 As Variant<br/>Dim Py2 As Variant<br/>Dim Linet As AcadLine<br/>Dim blkname As String<br/>blkname = "d:\lks.dwg"</p><p>P1(0) = 0<br/>P1(1) = 0<br/>P1(2) = 0<br/>Pa = P1<br/>Pb(0) = 50 '块的高和宽均不会大于50,且块的原点在坐标(0,0,0)<br/>Pb(1) = 0<br/>Pb(2) = 0</p><p>Set Blk = ThisDrawing.ModelSpace.InsertBlock(Pa, blkname, 1, 1, 1, 0)<br/>Set Linet = ThisDrawing.ModelSpace.AddLine(Pa, Pb)<br/>Px2 = Blk.IntersectWith(Linet, acExtendNone)</p><p>Pb(0) = -50<br/>Linet.EndPoint = Pb<br/>Px1 = Blk.IntersectWith(Linet, acExtendNone)</p><p>Pb(0) = 0<br/>Pb(1) = -50<br/>Linet.EndPoint = Pb<br/>Py1 = Blk.IntersectWith(Linet, acExtendNone)</p><p>Pb(1) = 50<br/>Linet.EndPoint = Pb<br/>Py2 = Blk.IntersectWith(Linet, acExtendNone)</p><p>Linet.Delete<br/>Blk.Delete</p><p>End Sub<br/></p> <p>该块与X轴和Y轴上4个的交点的坐标,如上图四个白色点的坐标</p><p>该块代表什么意思?从你的图形看是圆,用圆方程和直线方程。</p><p>r^2=x^2+y^2</p><p>y=kx+b</p><p>求交点。</p><p>这四个点看起来好像是边界?</p><p>要是边界GetBoundingBox就简单。</p> <p></p><p>用GetBoundingBox区别还是很大的,原因就是上面的折线而得不到我想到的结果,我还有很多块不是由圆组成,也就是说在不知道是由什么图元组成的情况下,以0,0,0为中心,分别画一条X轴线和Y轴线(实际并不画出来,为了理解方便),求这个块与X轴线和Y轴线的交点座标,如上图红点的坐标。</p> <p>"也就是说在不知道是由什么图元组成的情况下,以0,0,0为中心"-------------这对编程就难了.</p><p>编程就是建立数学模型,"不知道是由什么图元"太难了.</p><p>一般编程思想是归纳图元的各种组合后,选择最简单的图元组合编程,找出规律后---建立数据模型.才有解/</p><p>对上述情况,用几何解如何??</p> 看来是没有好的办法了
页:
[1]