x,y的坐标不变,如何将元素移动到z轴为0的平面?
移动element的方法需要指定点,这个点的x和y要怎么从element中取出,在element中没找到类型为point3d的属性。
DTransform3d transOthers = DTransform3d.Identity; DPoint3d targetP = new DPoint3d(x, y,0); transOthers.Translation = targetP; ele.ApplyTransform(new TransformInfo(transOthers));
这个指定点实际上不是只将元素移动指定的点,而是一个平移量,例如您给一个(1,2,3)的话,是将元素沿+X移动1,沿+Y移动2,沿+Z移动3。对于不同的图形元素获取其几何数据的方法也不同,因为不同的图形元素包含的几何数据也不尽相同,例如线段是两个点,而圆的话,需要一个圆心点,半径,以及旋转矩阵。所以需要根据不同的元素通过不同的接口函数取确定这个平移量。
移动是写错了,只需要z的值就够了。通过DisplayableElement能取到GetSnapOrigin里面的z,然后可以直接移动element。
GetSnapOrigin只是获取到元素捕捉点的位置,您的元素是三维的还是平行于顶视图的二维的?如果是后者,你的这个方法是可以的。而如果是三维元素,是否需要考虑获得三维元素中最小的Z值?