aegisfang 发表于 2008-10-6 10:27:00

[求助]在vba中怎样实现对多线段上的点进行编辑

<p>在vba中怎样实现对多线段上的点进行编辑,例如加点、删点</p><p>能实现对所选的两个点之间自动进行加点</p><p>谢谢各位高手!</p>

Orcagna 发表于 2008-10-13 16:58:00

<p>我的想法是不管加点,还是删点,都是删除掉原本的线,再重新画上新的线,</p><p>加点的话,两种做作法,</p><p>一、是选两个点起来,自动在两点之间补上一个点,</p><p>你先用getPoint方法,取到输入点,然后用两点距离公式((x1-x2)^2+(y1-y2)^2)^0.5 </p><p>小于1 就是该点,再把两点之间增加新的点就可以了(x1+x2)/2,(y1+y2)/2</p><p>二、是比较方便的,用getpoint方法,取得输入的点后,</p><p>然后和你的连续线的每一段做垂直交点距离的计算,小于1就是该点。</p><p>计算交点公式:a1x+b1y=c1,a2x+b2y=c2</p><p>'△ &lt;&gt; 0 为相容<br/>'△ = △x=△y 为相依<br/>'△ = 0 and △x &lt;&gt; 0 And △y&lt;&gt;0 为矛盾</p><p><br/>Delta = a1 * b2 - b1 * a2<br/>DeltaX = c1 * b2 - b1 * c2<br/>DeltaY = a1 * c2 - c1 * a2</p><p>'求解<br/>'△:Delta △x:DeltaX △y:DeltaY<br/>'x=△x/△,y=△y/△</p><p>删点</p><p>删点直接用getPoint方法,取到输入点,</p><p>然后用两点距离公式((x1-x2)^2+(y1-y2)^2)^0.5 </p><p>小于1 就是该点。</p><p>然后重新画上没有该点的线就可以了。</p><p>---------</p><p>详细建议看一下,斜率、二元一次方程式求解的资料。</p>

sailorcwx 发表于 2008-10-13 19:46:00

<p>增点用AddVertex</p><p>删点你把两个点合并成一个点就可以了</p>

aegisfang 发表于 2008-10-15 10:07:00

那怎样获取一条多线段上当前所选择的几个点的信息呢?如坐标信息、当前点的节点数、将点加入选择集?

Orcagna 发表于 2008-10-15 14:26:00

<p>GetEntity方法可以让使用者选线,<br/>看ObjectName&nbsp;是不是为 "AcDbPolyline" 可以知道是否为聚合线,<br/>座标可以从Coordinates取出,<br/>点的状态,可以自己另外宣告结构来存放。<br/></p>
页: [1]
查看完整版本: [求助]在vba中怎样实现对多线段上的点进行编辑