public void PerformOperation(MapObject mo) { var current = Extractor(mo.BoundingBox); var target = Extractor(_alignBox); var value = target - current; var translate = Creator(value); var transform = new UnitTranslate(translate); mo.Transform(transform, _transformFlags); }
public void Transform() { if (_document.Selection.IsEmpty() || _document.Selection.InFaceSelection) return; var box = _document.Selection.GetSelectionBoundingBox(); using (var td = new TransformDialog(box)) { if (td.ShowDialog() != DialogResult.OK) return; var value = td.TransformValue; IUnitTransformation transform = null; switch (td.TransformType) { case TransformType.Rotate: var mov = Matrix.Translation(-box.Center); // Move to zero var rot = Matrix.Rotation(Quaternion.EulerAngles(value * DMath.PI / 180)); // Do rotation var fin = Matrix.Translation(box.Center); // Move to final origin transform = new UnitMatrixMult(fin * rot * mov); break; case TransformType.Translate: transform = new UnitTranslate(value); break; case TransformType.Scale: transform = new UnitScale(value, box.Center); break; } if (transform == null) return; var selected = _document.Selection.GetSelectedParents(); _document.PerformAction("Transform selection", new Edit(selected, new TransformEditOperation(transform, _document.Map.GetTransformFlags()))); } }