Тема: Работа с базой данных открытого чертежа
Здраствуте
не хватает знаний :cry:
помогите разобратся ) :)
открываю dxf файл с помощью кода :
Autodesk.AutoCAD.ApplicationServices.Document doc =
Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open(pathDXF, false);
Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument = doc;
далее, мне нужно в этом чертеже пробежатся по всем примитивам и проверить в них Xdata
Editor ed = doc.Editor;
Database Db = doc.Database;
using (Transaction acTrans = Db.TransactionManager.StartTransaction())
{
PromptSelectionResult PSR = ed.SelectAll();
if (PSR.Status == PromptStatus.OK)
{
SelectionSet acSSet = PSR.Value;
foreach (SelectedObject acSSObj in acSSet)
{
if (acSSObj != null)
{
Entity ent = acTrans.GetObject(acSSObj.ObjectId,
OpenMode.ForWrite) as Entity;
ResultBuffer rb = ent.XData;
if (rb != null)
{
foreach (TypedValue tv in rb)
{
ed.WriteMessage(
"\nTypedValue - type: {1}, value: {2}",
tv.TypeCode,
tv.Value
);
}
rb.Dispose();
}
}
}
}
acTrans.Commit();
}
но ничего не происходит
получается что у меня открыты 2 чертежа в автокаде
в первом я запускаю dll, а потом эта dll открывает мой dxf файл
если например после строки
Database Db = doc.Database;
добавить
ed.WriteMessage("Ура");
то сообщение выходит в первом чертеже, значит и
PromptSelectionResult PSR = ed.SelectAll();
выбирает все в первом чертеже
Как сделать выбор примитивов в DXF - файле ?
Догадываюсь что нужно переключатся между базами чертежей, но как это сделать не нашел. :(