Access Violation в TsgCADtoDXF.Create(..)
Posted: 12 Feb 2014, 17:10
Добрый день, коллеги.
Стоит задача слияния нескольких dxf-файлов в один.
Графика как таковая не интересует, просмотрщики и редакторы внешние.
Есть тестовое приложение с таким кодом:
В строке
нарываюсь на Access violation
Я уже видел на вашем форуме похожие топики, ответа для себя не нашел.
Кстати,
срабатывает, совмещенный рисунок отображается нормально.
В тоже время, код AddXRefClick из вашего GettingStarted при добавлении в него ExpObj работает без ошибок и dxf
создается корректно.
Чисто визуально, разница выражается в начале вашей процедуры:
Я что-то делаю неправильно. Всвязи с этим, несколько вопросов:
1) С TsgCADdxfImage бессмысленно работать без LoadFromFile? т.е
2) Программное наполнение и манипуляция с элементами вновь создаваемого dxf ведется только через TsgDXFExport?
3) Пожалуйста, посоветуйте оптимальный путь решения задачи создания НОВОГО dxf-файла из нескольких других.
Например, некоторые слои из исходных документов будут формировать конечный файл.
Спасибо.
Стоит задача слияния нескольких dxf-файлов в один.
Графика как таковая не интересует, просмотрщики и редакторы внешние.
Есть тестовое приложение с таким кодом:
Code: Select all
procedure TFrmMain.sxfMergeAsAddScaledDxf;
var
Pos1, Scale1: TFPoint;
Pos2, Scale2: TFPoint;
TargetPath : String;
ExpObj : TsgCADtoDXF;
begin
if not luFileNameIsValid(edTarget.Text) then begin
frmMemoLog('Target file name is not valid');
exit;
end;
TargetPath := glbPathApp + ExtractFileName(edTarget.Text) + '.dxf';
dxfResetImage(FDxfTarget);
Pos1.X := 10.0;
Pos1.Y := 10.0;
Scale1.X := 1;
Scale1.Y := 1;
Scale2.X := 1;
Scale2.Y := 1;
Pos2.X := -10.0;
Pos2.Y := -10.0;
FDxfTarget.AddScaledDXF(FDxfSource1, 'XREF1', Pos1, Scale1, 0);
FDxfTarget.AddScaledDXF(FDxfSource2, 'XREF2', Pos2, Scale2, 0);
FDxfTarget.GetExtents();
ImgTarget.Picture.Assign(FDxfTarget);
ExpObj := TsgCADtoDXF.Create(FDxfTarget);
try
ExpObj.SaveToFile(TargetPath);
finally
ExpObj.Free();
end;
end;
В строке
Code: Select all
ExpObj := TsgCADtoDXF.Create(FDxfTarget);
Я уже видел на вашем форуме похожие топики, ответа для себя не нашел.
Кстати,
Code: Select all
ImgTarget.Picture.Assign(FDxfTarget);
В тоже время, код AddXRefClick из вашего GettingStarted при добавлении в него ExpObj работает без ошибок и dxf
создается корректно.
Чисто визуально, разница выражается в начале вашей процедуры:
Code: Select all
vCADContainer.LoadFromFile('Entities.dxf'); // Base file
1) С TsgCADdxfImage бессмысленно работать без LoadFromFile? т.е
2) Программное наполнение и манипуляция с элементами вновь создаваемого dxf ведется только через TsgDXFExport?
3) Пожалуйста, посоветуйте оптимальный путь решения задачи создания НОВОГО dxf-файла из нескольких других.
Например, некоторые слои из исходных документов будут формировать конечный файл.
Спасибо.