using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
[assembly: CommandClass(typeof(Matrix3dOper.MyCommands))]
namespace Matrix3dOper
{
public class MyCommands
{
[CommandMethod("TestMat")]
public void TestMat()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
if (doc == null) return;
Editor ed = doc.Editor;
Matrix3d mat = ed.CurrentUserCoordinateSystem;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++)
ed.WriteMessage("UCS[{0}][{1}]={2,-12:N6}\t", i, j, mat[i, j]);
ed.WriteMessage("\n");
}
//////////////////////////////////////////////////////////////////////////
// Присвоение типа 'mat[i,j] = значение' недопустимо,
// т.к. доступ к элементу только для чтения
// Для возможности модификации элементов вместо Matrix3d
// следует использовать Matrix3dBuilder
//////////////////////////////////////////////////////////////////////////
Matrix3dBuilder matb = new Matrix3dBuilder(mat);
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
// Формируем единичную диагональную матрицу
matb[i, j] = (i == j) ? 1.0 : 0.0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++)
ed.WriteMessage("matb[{0}][{1}]={2,-12:N6}\t", i, j, matb[i, j]);
ed.WriteMessage("\n");
}
}
}
}