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:
Как вы можете видеть, если цвет слоя отрицательный, слой выключен. Вот пример:
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 в разделе заголовка, чтобы узнать пределы моего чертежа. Я держу только элементы, которые находятся в пределах.