Code:
using System ;
using Autodesk.AutoCAD.Runtime ;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Colors;
using Autodesk.AutoCAD.EditorInput;
//using Autodesk.AutoCAD.Interop;
//using Autodesk.AutoCAD.Interop.Common;[assembly: CommandClass(typeof(ClassLibrary.Class))]
namespace ClassLibrary
{
/// <summary>
/// Summary description for Class.
/// </summary>
public class Class
{
public Class()
{
//
// TODO: Add constructor logic here
//
}
[CommandMethod("VariaBlock")]
public void ScaleBlock()
{
Database db = HostApplicationServices.WorkingDatabase;
Transaction myT = db.TransactionManager.StartTransaction();
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
try
{
PromptSelectionOptions BlockOption = new PromptSelectionOptions();
BlockOption.SingleOnly = false;
BlockOption.MessageForAdding = "Blöcke zeigen";
TypedValue[] filList = new TypedValue[1];
filList[0] = new TypedValue((int)DxfCode.Start, "INSERT");
SelectionFilter filter = new SelectionFilter(filList);
PromptSelectionResult BlockResult = null;
//user selection will pick only Appname ents
BlockResult = ed.GetSelection(BlockOption, filter);
//Do nothing if selection is unsuccessful
if (BlockResult.Status == PromptStatus.OK)
{
Autodesk.AutoCAD.EditorInput.SelectionSet SS = BlockResult.Value;
ObjectId[] idArray;
idArray = SS.GetObjectIds();
//collect all BlockRefenences SS array
foreach (ObjectId objId in idArray)
{
//besser Entity tmpBlock statt DBObject tmpBlock
Entity tmpBlock = (Entity)myT.GetObject(objId, OpenMode.ForWrite);
BlockReference tmpShowedBlock = (BlockReference)tmpBlock;
if (tmpShowedBlock != null)
{
ed.WriteMessage("Test");
//Was ist daran denn so FALSCH!!!!
tmpShowedBlock.ScaleFactors = new Scale3d(10.0);
}
}
}
// WIE WÄRS MIT EINEM ABSCHLIESSENDEN COMMIT !?!
myT.Commit();
}
finally
{
myT.Dispose();
}
}
}
}