[求助]如何移动Hatch
本帖最后由 作者 于 2010-9-18 19:25:50 编辑 <br /><br /> <div>对于图形中类型为Autodesk.AutoCAD.DatabaseServices.Hatch 的对象,怎么移动它?Origin属性一直都是(0,0)。</div><div>是不是要重新获取Hatch的边界,然后在新的位置上重画Hatch?</div><div>有没有变通的办法直接移动Hatch啊?</div> TransfromBy不行? <div>如何获得Hatch的当前坐标?</div>如何用TransfromBy 移动Hatch到任意坐标啊?<div><font class="Apple-style-span" color="#555555" face="Arial, Helvetica, sans-serif" size="4"><br/></font></div> <p><font face="Verdana"> public static void Move(Entity ent, Point3d start, Point3d end)<br/> {<br/> ent.TransformBy(Matrix3d.Displacement(end - start));<br/> }</font></p> 那么Hatch的插入点/中心点怎么获取呢?<br/><div><strong>Origin</strong>属性一直都是(0,0)</div> Hatch的<strong>Origin</strong>属性并没有实现 那么怎么获取Hatch的插入点/中心点/定位点呢?<div>只要知道该Hatch中的一个点就可以了。</div><div>我要移动Hatch,但是无法获取Hatch的定位点。</div> 我自己的解决办法://p3dmin_newp3d为Hatch将要移动到的坐标 Extents3d ext3d = hatch.GeometricExtents; Point3d p3dmin = ext3d.MinPoint; hatch.TransformBy(Matrix3d.Displacement(p3dmin_newp3d - p3dmin));这样能解决问题,但是我感觉用GeometricExtents的MinPoint与MaxPoint并不能真是反映Hatch的实际位置,起码要用HatchLoop获取的边界的中心位置才对。另一个变通的办法是用GeometricExtents的MinPoint与MaxPoint,取其中点。无论如何,用MinPoint与MaxPoint都是那么不尽人意啊。
求更好的解决办法? <p>为什么一定要 获取Hatch的插入点/中心点/定位点呢?,不要这几个点就不能移动了?</p>
<p>参考cad的move命令,先提示一点用作移动的起点,再提示一点,这时是按这两个点的变换矩阵来移动图形的,</p>
<p> </p>
<p>这两个点可以是任意选取的,只要移动后是你要的效果就行</p> 我要移动大量的Hatch,在不与用户交流的情况下移动。<div>对于每一个需要移动的Hatch,移动的向量不一定一样。</div><div>这样就没法用cad的move命令了。</div>
页:
[1]
2