Определить вычитание объектов (Subtract)
Определить вычитание объектов (Subtract)
Здравствуйте!
Имеется чертеж DWG(или DXF), в котором 2 региона: прямоугольник и круг, круг вычтен из прямоугольника с помощью метода "Вычитание" (Subtract). Вопрос: как, с использованием CADImport .Net, определить что круг вычтен из прямоугольника?
П.С. с перечислением всех Entities входящих в объект (регион) проблем нет.
Имеется чертеж DWG(или DXF), в котором 2 региона: прямоугольник и круг, круг вычтен из прямоугольника с помощью метода "Вычитание" (Subtract). Вопрос: как, с использованием CADImport .Net, определить что круг вычтен из прямоугольника?
П.С. с перечислением всех Entities входящих в объект (регион) проблем нет.
Re: Определить вычитание объектов (Subtract)
Здравствуйте.
Результатом вычитания областей в Автокаде является составная область. Если не ошибаюсь определить что вычитание было произведено у вас не получится даже в Автокаде. Пожалуйста обратите внимание также что в текущей версии CAD Import .NET области не поддерживаются.
Александр.
Результатом вычитания областей в Автокаде является составная область. Если не ошибаюсь определить что вычитание было произведено у вас не получится даже в Автокаде. Пожалуйста обратите внимание также что в текущей версии CAD Import .NET области не поддерживаются.
Александр.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support
Chat support on Skype: cadsofttools.support
Re: Определить вычитание объектов (Subtract)
Автокад ведь отрисовывает прямоугольник с дыркой в центре, значит как-то он это определяет.support wrote:Здравствуйте.
Результатом вычитания областей в Автокаде является составная область. Если не ошибаюсь определить что вычитание было произведено у вас не получится даже в Автокаде. Пожалуйста обратите внимание также что в текущей версии CAD Import .NET области не поддерживаются.
Александр.
Очень даже не плохо поддерживаются... Версия 7.2.7.26044
Ниже пример, сделанный на скорую руку для Автокадовского файлика из предыдущего поста:
Code: Select all
private void button1_Click(object sender, EventArgs e)
{
CADImage cadImage = CADImage.CreateImageByExtension("temp1.dwg");
cadImage.LoadFromFile("temp1.dwg");
richTextBox1.AppendText(foreachEntities(cadImage.Converter.Entities,""));
}
private string foreachEntities(CADEntityCollection ent,string tabstr)
{
if (ent == null) { return null; }
string retstr = "";
for (int i = 0; i < ent.Count; i++)
{
retstr = retstr + tabstr + ent[i].EntType.ToString() + (ent[i].Entities == null ? "\n" : "\n" + tabstr + "{\n") + foreachEntities(ent[i].Entities, tabstr + " ") + (ent[i].Entities == null ? "" : tabstr + "}\n\n");
}
return retstr;
}
Code: Select all
Region
{
Ellipse
Line
Line
Line
Line
}
п.с. как вариант можно, конечно, по вложенным замкнутым контурам определять вычитание объектов.
Re: Определить вычитание объектов (Subtract)
Здравствуйте.
Александр.
Прямоугольник с отверстием в центре это составная область. Файл не содержит информации получена ли область вычитанием, но содержит информацию о геометрии области.Автокад ведь отрисовывает прямоугольник с дыркой в центре, значит как-то он это определяет.
Действительно CAD Import .NET содержит примитив CADRegion для импорта областей. Вы получите набор примитивов образующих его границы. Но вот отрисовываться область будет как набор этих составляющих примитивов. Кроме того экспорта областей вы также не получите. Поэтому вернее сказать что поддержка областей не полная (только импорт).Очень даже не плохо поддерживаются... Версия 7.2.7.26044
Ниже пример, сделанный на скорую руку для Автокадовского файлика из предыдущего поста:
...
Видно, что регион состоит из 4х линий и одного эллипса.
Александр.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support
Chat support on Skype: cadsofttools.support