Здравствуйте, Уважаемые форумчане.
Совсем заблудился я в этой иерархии. "кто кому Рабинович?" - совсем непонятно стало.
хочу выделить (предварительный выбор) и из выбранного разобрать блоки "в одну сторону", а полилинии "в другую сторону".
для сокращения using и прочие не принципиальные, в данном вопросе, места буду сокращать
начинается всё стандартно:
public void getAllBlocksByName()
{
Document document;
Editor editor;
Database database;
List<BlockReference> listOfBlocks = new List<BlockReference>(); // для блоков
List<Polyline> listOfPolylines = new List<Polyline>(); // для полилиний
using (Transaction transaction = database.TransactionManager.StartTransaction())
{
PromptSelectionResult promptSelectionResult = editor.SelectImplied();
SelectionSet selectionSet;
ObjectId[] idArrayEmpty = new ObjectId[0];
editor.SetImpliedSelection(idArrayEmpty);
promptSelectionResult = editor.GetSelection();
if (promptSelectionResult.Status == PromptStatus.OK)
{
selectionSet = promptSelectionResult.Value;
Application.ShowAlertDialog("Number of objects selected: " + selectionSet.Count.ToString());
foreach (SelectedObject selectionSetObject in selectionSet)
{
if (selectionSetObject != null)
{
Entity entity = transaction.GetObject(selectionSetObject.ObjectId, OpenMode.ForRead) as Entity;
if (entity is BlockReference) { // здесь мне говорят да
Application.ShowAlertDialog("Object is a BlockReference " + entity.ToString());
// output: "Object is a BlockReference Autodesk.AutoCAD.DatabaseServices.Blockreference"
listOfBlocks.Add(entity); // а здесь мне говорят нет: нельзя entity привести к Blockreference
}
чего-то я уже ничего не понимаю...
как мне проверить, что есть что в выделенном и разобрать по полочкам??
зачем постоянно "перекладывать" из одного объекта в другой?
нельзя разве получить так, чтобы это была коллекция, итерируя которую сразу понимаешь, что это полилиния, это блок такой-то, это блок такой-то. я понимаю, что entity - сущность, но дальше то что...