Сохранить деталь в формате .stl

Автор Djunce, 14.02.21, 12:39:56

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Djunce

14.02.21, 12:39:56 Последнее редактирование: 14.02.21, 14:21:41 от Djunce Причина: Пересохранены файлы в 5.11
Здравствуйте, можно ли как-нибудь подогнать программное сохранение .stl файла к такому же результату, как и после сохранения вручную?
В первом случае - качество и размер файла как надо, во втором случае качество ниже, в третьем качество подходит, но размер файла сильно увеличивается.

Настройки.jpg
Круги.jpg

1. Сохранение вручную "линейное отклонение = 0.01, угловое отклонение = 1"
(размер stl файла 61 мб)

Сохранение программно:
pAdditionFormatParam:=ksAdditionFormatParam(Document3D.AdditionFormatParam);
pAdditionFormatParam.Init();
pAdditionFormatParam.format:=6;
pAdditionFormatParam.formatBinary:=true;

2.
pAdditionFormatParam.step:=0.01;
pAdditionFormatParam.angle:=1;
(размер stl файла 8 мб)

3.
pAdditionFormatParam.step:=0.0001;
(размер stl файла 755 мб)


Круг.m3d
WormGear.m3d

Djunce

14.02.21, 12:58:05 #1 Последнее редактирование: 14.02.21, 14:39:04 от Djunce Причина: Добавлены исходники
Весь код:
uses
  System.Win.ComObj, ksConstTLB, ksTLB, ksAPI7, LDefin3D;

procedure TForm1.SaveAsStl(s, s2, s3: string);
var
kompas: KompasObject;
Document3D: ksDocument3D;
pAdditionFormatParam: ksAdditionFormatParam;
begin
kompas:=KompasObject(CreateOleObject('Kompas.Application.5'));
Document3D:=ksDocument3D(kompas.Document3D());
Document3D.Open(s+s2+s3,FALSE);
kompas.Visible:=true;

pAdditionFormatParam:=ksAdditionFormatParam(Document3D.AdditionFormatParam);
pAdditionFormatParam.Init();
pAdditionFormatParam.format:=6;
pAdditionFormatParam.formatBinary:=true;
pAdditionFormatParam.step:=0.01;
pAdditionFormatParam.angle:=1;

Document3D.SaveAsToAdditionFormat(WideString(s+s2+'.stl'),pAdditionFormatParam);
Document3D.Close();
kompas.Quit();
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 SaveAsStl(GetCurrentDir+'\','Круг', '.m3d');
end;

SaveAsStl.zip