AutoCAD 2012 Enu x64 SP2
Windows 7 x64 Rus SP1
Имеется следующий код "Hello, World!":
/* © Андрей Бушман, 2014
* Commands.cs
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
#if AUTOCAD
using cad = Autodesk.AutoCAD.ApplicationServices.Application;
using Ap = Autodesk.AutoCAD.ApplicationServices;
using Db = Autodesk.AutoCAD.DatabaseServices;
using Ed = Autodesk.AutoCAD.EditorInput;
using Gm = Autodesk.AutoCAD.Geometry;
using Rt = Autodesk.AutoCAD.Runtime;
using Hs = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices;
using Us = Autodesk.AutoCAD.DatabaseServices.SymbolUtilityServices;
#endif
[assembly: Rt.CommandClass(typeof(Bushman.CAD.Samples.LayoutSample.Commands))]
namespace Bushman.CAD.Samples.LayoutSample {
public sealed class Commands {
[Rt.CommandMethod("test", Rt.CommandFlags.Modal)]
public void Test() {
Ap.Document doc = cad.DocumentManager.MdiActiveDocument;
if (null == doc)
return;
using (doc.LockDocument()) {
Ed.Editor ed = doc.Editor;
Db.Database db = doc.Database;
Db.LayoutManager lm = Db.LayoutManager.Current;
String layout_name = "My_Layout";
if (!lm.GetLayoutId(layout_name).IsNull) {
ed.WriteMessage("Лист \"{0}\" уже существует. Операция прервана.\n",
layout_name);
return;
}
Db.ObjectId layout_id = lm.CreateLayout(layout_name);
using (Db.Transaction tr = db.TransactionManager.StartTransaction()) {
Db.Layout layout = tr.GetObject(layout_id, Db.OpenMode.ForWrite)
as Db.Layout;
layout.Initialize();
lm.CurrentLayout = layout_name;
tr.Commit();
}
}
}
}
}
Если запускаю его в новом чертеже, созданном на основе шаблона acadiso.dwt, то после выполнения команды audit никаких ошибок не найдено.
Однако имеется некий пользовательский файл (переданный мне для тестирования), в котором по завершению работы команды test, команда audit находит две ошибки:
Command: audit
Fix any errors detected? [Yes/No] <N>:
Auditing Header
Auditing Tables
Auditing Entities Pass 1
Pass 1 300 objects auditedAcDbViewport(76A60)
Paperspace vport layer Not "0" "0"
AcDbViewport(76A60) was not repaired.
Auditing Entities Pass 2
Pass 2 300 objects auditedAcDbViewport(76A60)
Paperspace vport layer Not "0" "0"
AcDbViewport(76A60) was not repaired.
Auditing Blocks
2 Blocks audited
Total errors found 2 fixed 0
Erased 0 objects
До запуска команды test в этом чертеже аудит ошибок не находит. Файл прикреплён ниже и содержит прокси-графику. Recovery находит и исправляет в файле одну ошибку, не выявленную аудитом (как я понял - объекты СПДС GraphiCS), однако после test по прежнему аудит находит две ошибки.
У кого какие идеи по поводу причины такого поведения?
Спасибо.