2016-12-19 10 views
0

Мне нужно создать сплайн программно. Я сделал что-то вроде:Создание DXF Spline программно

0 
SECTION 
    2 
HEADER 
    9 
$ACADVER 
    1 
AC1006 
    0 
ENDSEC 
    0 
SECTION 
    2 
TABLES 
    0 
TABLE 
2 
LAYER 
    0 
LAYER 
2 
shape 
70 
64 
62 
250 
6 
CONTINUOUS 
0 
LAYER 
2 
holes 
70 
64 
62 
250 
6 
CONTINUOUS 
0 
ENDTAB 
0 
ENDSEC 
0 
SECTION 
2 
ENTITIES 
0 
SPLINE 
8 
shape 
100 
AcDbSpline 
210 
0 
220 
0 
230 
1 
70 
4 
71 
3 
72 
11 
73 
4 
74 
4 
42 
0.0000001 
43 
0.0000001 
44 
0.0000000001 
40 
0 
40 
0 
40 
0 
40 
0 
40 
1 
40 
1 
40 
1 
40 
2 
40 
2 
40 
2 
40 
2 
10 
0 
20 
0 
30 
0 
10 
100 
20 
50 
30 
0 
10 
40 
20 
40 
30 
0 
10 
15 
20 
23 
30 
0 
11 
0 
21 
0 
31 
0 
11 
200 
21 
200 
31 
0 
11 
80 
21 
80 
31 
0 
11 
432 
21 
234 
31 
0 
0 
ENDSEC 
0 
EOF 

Когда я пытаюсь открыть его в Autodesk TrueView, я получаю сообщение об ошибке:

Undefined group code 210 for object on line 54. Invalid or incomplete DXF input -- drawing discarded.

Где ошибка? Когда я копирую только раздел SPLINE в DXF, созданный AI, все работает нормально. Поэтому я думаю, что мне нужно добавить что-то в раздел заголовка или что-то в этом роде.

+0

Когда я пытаюсь открыть DXF в AutoCAD, он не работает в строке 42 (ошибка в таблице APPID) – Maxence

+0

@ Максация справа, просто измените AC1018 на AC1006 и повторите попытку. Это моя ошибка. Первоначальный файл имел «AC1006», и я попытался как-то его исправить. – alanmcknee

+0

AC1006 <=> AutoCAD R10. Не уверен, что сплайны были поддержаны в это время. Их ObjectBirthVersion - AC1012 (AutoCAD R13) – Maxence

ответ

3

Этот файл является версией DXF AC1006, которая старше DXF R12. Объекту SPLINE требуется, по меньшей мере, версия DXF AC1012 DXF R13/R14. Но с версией DXF AC1012 структура тегов файлов DXF изменяется (разделы ОБЪЕКТЫ и КЛАССЫ, SubClassMarkers ...), поэтому простое редактирование версии DXF не работает.

Смотрите также: http://ezdxf.readthedocs.io/en/latest/dxfinternals/filestructure.html#minimal-dxf-content

Также СПЛАЙН объект кажется недействительным, это не имеет ручку (5) и не владелец метки (330), и весь AcDbEntity подкласс отсутствует.

0

Возможно, вам потребуется назначить ручку SPLINE, так как вы указываете $ACADVER = AC1018 = AutoCAD 2004, где требуются ручки элементов.

Попробуйте добавить пару 5-кода непосредственно перед обозначением слоя, например, так, где AAAA является уникальным гекс-закодированы ручка:

  0 
SPLINE 
    5  <-- add these two lines 
AAAA <-- 
    8 
shape 
100 
AcDbSpline 
+0

Где я могу найти этот дескриптор? Мне нужно как-то объявить это? Когда я добавляю случайное число, например 3E, я получаю: > Недопустимый дескриптор базы данных 3E в строке 50. Недопустимый или неполный вход DXF - отбрасывание чертежа. – alanmcknee

+0

Кроме того, те же «базы DXF» (без ручки) прекрасно работают, когда я использую ARC, LINE и CIRCLE. У ELLIPSE и SPLINE нет. – alanmcknee

1

Ваш сплайн степени 3 при 11 узлах (0, 0 , 0,0,1,1,1,2,2,2,2) и 4 контрольные точки ((0,0), (100,50), (40,40), (15,23)). Это может быть проблемой преступника. Вы должны иметь 4 контрольных точки и 8 узлов или 7 контрольных точек и 11 узлов.

+0

Да, но перед этим появляется ошибка. Кроме того, как я уже говорил, этот SPLINE работал нормально, когда я переместил раздел SPLINE в DXF, созданный Adobe Illustrator. – alanmcknee