Dxf: как узнать, какие слои показать?

Я должен проанализировать файлы DXF, чтобы преобразовать его в изображения в.net.

Я использовал DxfLib ( https://github.com/mkernel/DXFLib).

У меня проблема со слоями: у меня есть 3 слоя, и мне нужно показать только один (я загрузил свой файл в какую-то программу просмотра dxf, и они показывают только один слой)

Я не знаю, как узнать, нужно ли показывать слой или нет. Я не нашел информацию в моем разобранном файле dxf.

Вы знаете, где я могу найти это? (возможно, это недостающий элемент из DxfLib)

РЕДАКТИРОВАТЬ: есть пример моего файла DXF: https://github.com/mkernel/DXFLib/files/286112/DIAMOND-R.zip

2 ответа

Решение

Файл DXF содержит таблицу LAYERS в разделе HEADER. Вот подробности о записи таблицы слоев:

http://www.autodesk.com/techpubs/autocad/acad2000/dxf/layer_dxf_04.htm

Вас интересует код группы 62:

Код группы 62

Как вы можете видеть, если цвет слоя отрицательный, слой выключен. Вот пример:

  0
LAYER
  5
242
330
2
100
AcDbSymbolTableRecord
100
AcDbLayerTableRecord
  2
LAYER2
 70
     0
 62
    -3
  6
Continuous
370
    -3
390
F
347
EE
348
0
  0
ENDTAB

Итак, когда вы обрабатываете сущность и изучаете значение слоя, ищите его в таблице LAYERS в разделе HEADER. Это начало этого раздела:

  0
TABLE
  2
LAYER

После обнаружения проверьте свойство цвета, и если оно будет отрицательным, слой будет отключен.

Я не знаю, какие функции есть у DXFLib для анализа раздела HEADERS файла DXF. Но я надеюсь, что эта деталь поможет вам!

Наконец я нашел решение!

Моя проблема состояла не в том, чтобы показать / скрыть слой, а в том, как обнаружить и скрыть нерелевантные объекты.

Я использую свойства DrawingExtendsLowerRight и DrawingExtendsUpperRight в разделе заголовка, чтобы узнать пределы моего чертежа. Я держу только элементы, которые находятся в пределах.

Другие вопросы по тегам