明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3816|回复: 12

[求助]如何移动Hatch

  [复制链接]
发表于 2010-9-18 12:06:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-9-18 19:25:50 编辑

对于图形中类型为Autodesk.AutoCAD.DatabaseServices.Hatch 的对象,怎么移动它?Origin属性一直都是(0,0)。
是不是要重新获取Hatch的边界,然后在新的位置上重画Hatch?
有没有变通的办法直接移动Hatch啊?
发表于 2010-9-18 16:34:00 | 显示全部楼层
TransfromBy不行?
 楼主| 发表于 2010-9-18 18:20:00 | 显示全部楼层
如何获得Hatch的当前坐标?
如何用TransfromBy 移动Hatch到任意坐标啊?

发表于 2010-9-19 07:44:00 | 显示全部楼层

        public static void Move(Entity ent, Point3d start, Point3d end)
        {
            ent.TransformBy(Matrix3d.Displacement(end - start));
        }

 楼主| 发表于 2010-9-19 10:43:00 | 显示全部楼层
那么Hatch的插入点/中心点怎么获取呢?
Origin属性一直都是(0,0)
发表于 2010-9-19 11:48:00 | 显示全部楼层
Hatch的Origin属性并没有实现
 楼主| 发表于 2010-9-19 11:54:00 | 显示全部楼层
那么怎么获取Hatch的插入点/中心点/定位点呢?
只要知道该Hatch中的一个点就可以了。
我要移动Hatch,但是无法获取Hatch的定位点。
 楼主| 发表于 2010-9-19 12:26:00 | 显示全部楼层
我自己的解决办法:
  1. //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都是那么不尽人意啊。
求更好的解决办法?
发表于 2010-9-19 13:25:00 | 显示全部楼层

为什么一定要 获取Hatch的插入点/中心点/定位点呢?,不要这几个点就不能移动了?

参考cad的move命令,先提示一点用作移动的起点,再提示一点,这时是按这两个点的变换矩阵来移动图形的,

 

这两个点可以是任意选取的,只要移动后是你要的效果就行

 楼主| 发表于 2010-9-19 16:37:00 | 显示全部楼层
我要移动大量的Hatch,在不与用户交流的情况下移动。
对于每一个需要移动的Hatch,移动的向量不一定一样。
这样就没法用cad的move命令了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-22 02:55 , Processed in 0.166221 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表