Ønsker at kunne gemme som dxf File,
til (Autocad) eller ipt File til (Inventoer 6),lige til at importer.
Se
http://swiss.torry.net/cad.htm der kan gemme i dxf format.
Kan du se hvilken komponent der ville være bedst egnet,
da jeg ikke kender meget til Konverter dxf filer til autocad.
Jeg ønsker et stykke kode, der ved et tryk på en knap,
laver en dxf file.
procedure TForm1.Button1Click(Sender: TObject);
begin
............
............
end;
Når man kan gemme Image1.Picture som jpgFile,
så kan man vel også gemme den som dxf File til (Autocad) eller ipt File til (Inventoer 6),
lige til at importer.
Min Procedure herunder kan gemme Image1 som jpg file
procedure TfrmProfil.btnGemJpegClick(Sender: TObject);
var
jpgFile: TJpegImage;
begin
// Hvis der ikke er tegnet i Image1, saa...
// hmmm... ved ikke om det virker ??
if Image1.Picture.Bitmap = nil then
begin
ShowMessage( 'Der er ikke noget at gemme !');
Exit;
end;
// Vis gem-dialog. Afslut hvis bruger trykker "annuller".
if not SavePictureDialog1.Execute then Exit;
// brug altid try...finally obj.free
// efter var := obj.Create.
// Så er du sikker på at det bliver frigivet, selvom noget skulle
// gå galt undervejs !
// Opret et JPG-billede.
jpgFile := TJpegImage.Create;
try
// hvor meget skal der komprimeres.
jpgFile.CompressionQuality := 85;
// tildel bitmap fra image1.
jpgFile.Assign( Image1.Picture.Bitmap);
// lav bitmap om til jpeg format.
jpgFile.JPEGNeeded;
// comprimer billedet.
jpgFile.Compress;
// gem den på disk.
jpgFile.SaveToFile( SavePictureDialog1.FileName);
finally
jpgFile.Free;
end;
end;
Her er min koder der beregner og tegner vingeprofilet:
Se billede her: www.sunwind.dk/vingeprofil.jpg
Beregnes her: www.sunwind.dk/vingemenu.jpg her beregnes alle koordinaterne x,yop og yned.
Koderne herunder kunne vel også bruge direkt til konvertering?
Koderne der behandler koordinaterne er her:
procedure TfmProfilValg.RadioButton1Click(Sender: TObject);
var
n : Integer;
begin
if not (radius >1) or not (p >1) then begin
Showmessage('Der er ikke indtastet nogen talværdier for NACA 4415');
Form1.Profilvalg1Click(Sender);
end else begin
Memo1.Clear;
frmProfil.seZoom.Value:=0;
frmProfil.seVinkel.Value:=0;
Memo1.Font.Name:='courier new';
Memo1.Font.Size:=9;
for n:=1 to 18 do begin
Naca4415X[n]:= 0.00; Naca4415OP[n] := 0.00; Naca4415NED[n] := 0.00;
end;
for n:=1 to 18 do
Naca4415X[0] := 0.00; Naca4415OP[0] := 0.00; Naca4415NED[0] := 0.00;
Naca4415X[1] := 1.25; Naca4415OP[1] := 3.07; Naca4415NED[1] := -1.79;
Naca4415X[2] := 2.50; Naca4415OP[2] := 4.18; Naca4415NED[2] := -2.48;
Naca4415X[3] := 5.00; Naca4415OP[3] := 5.74; Naca4415NED[3] := -3.27;
Naca4415X[4] := 7.50; Naca4415OP[4] := 6.91; Naca4415NED[4] := -3.71;
Naca4415X[5] := 10.00; Naca4415OP[5] := 7.84; Naca4415NED[5] := -3.98;
Naca4415X[6] := 15.00; Naca4415OP[6] := 9.27; Naca4415NED[6] := -4.18;
Naca4415X[7] := 20.00; Naca4415OP[7] := 10.25; Naca4415NED[7] := -4.15;
Naca4415X[8] := 25.00; Naca4415OP[8] := 10.92; Naca4415NED[8] := -3.98;
Naca4415X[9] := 30.00; Naca4415OP[9] := 11.25; Naca4415NED[9] := -3.75;
Naca4415X[10] := 40.00; Naca4415OP[10] := 11.25; Naca4415NED[10] := -3.25;
Naca4415X[11] := 50.00; Naca4415OP[11] := 10.53; Naca4415NED[11] := -2.72;
Naca4415X[12] := 60.00; Naca4415OP[12] := 9.30; Naca4415NED[12] := -2.14;
Naca4415X[13] := 70.00; Naca4415OP[13] := 7.63; Naca4415NED[13] := -1.55;
Naca4415X[14] := 80.00; Naca4415OP[14] := 5.55; Naca4415NED[14] := -1.03;
Naca4415X[15] := 90.00; Naca4415OP[15] := 3.08; Naca4415NED[15] := -0.57;
Naca4415X[16] := 95.00; Naca4415OP[16] := 1.67; Naca4415NED[16] := -0.35;
Naca4415X[17] := 100.00; Naca4415OP[17] := 0.16; Naca4415NED[17] := -0.16;
Naca4415X[18] := 100.00; Naca4415OP[18] := 0.00; Naca4415NED[18] := -0.00;
Rkonstant:= serRadius.Value/100;
//Sektion[n]:= (Rkonstant/10)*radius;
//Memo1.Lines.Add('Rkonstant r/R: '+ FormatFloat('#0',Rkonstant));
Memo1.Lines.Add('VingeProfil Type NACA 4415 ');
Memo1.Lines.Add('VingeRadius '+ FormatFloat('#0',radius)+' mm');
Memo1.Lines.Add('Afstand fra vingerod '+ FormatFloat('#0',(Rkonstant)* radius)+' mm');
Memo1.Lines.Add('ProfilBredde '+ FormatFloat('#0.0',(5.6*radius)/(i*1.0*Rkonstant*(power(5,2))))+' mm');
Profilbredde[18]:= (5.6*radius)/(i*1.0*Rkonstant*(power(5,2)));
Profilbreddemaal:= FloatToStr(Profilbredde[18]);
//Showmessage(FloatToStr(Profilbredde[18]/10));
Memo1.Lines.Add(' ');
for n:=1 to 18 do
begin
//SektionBredde[n]:= (16*pi*power(5000,2))/(9*i*1.0*2500*(power(5,2)));
SektionBredde[n]:= (5.6*radius)/(i*1.0*Rkonstant*(power(5,2)));
X[n] := (SektionBredde[n] * Naca4415X[n]);
Yop[n] := (SektionBredde[n] * Naca4415OP[n]);
Yned[n]:= (SektionBredde[n] * Naca4415NED[n]);
sx:= Format('%8.1f',[X[n]/100]);
sYo:= Format('%8.1f',[Yop[n]/100]);
sYn:= Format('%8.1f',[Yned[n]/100]);
Memo1.Lines.Add('X[Hen]:'+sx+' Y[op]:'+sYo+' Y[Ned]:'+sYn);
Panel1.Caption:=(' Vingebredde: '+ FormatFloat('#,##0.00;;Zero', SektionBredde[n])+' mm.');
// Afstanden fra rod til NACA-profilet beregnes
Label3.Caption:=('Afstand fra vingerod '+ FormatFloat('#0',(Rkonstant)* radius)+' mm');
//Får Memo1 til øverste linje
Linescroll_Op;
end;
end;
end;
Håber du kan få nogle ideer ud af ovenstående materiale?
Og vil du hjælpe mig med, at få en konvertering til dxf fil, til at virke?
Har desværer ikke flerer end 30 Point tilbage. Men satser gerne dem på spørgsmålet her. Da jeg arbejder meget med Autocad og har meget brug for, at fra midt Delphi 6 program, at kunne konverter til dxf-file.
Med venlig hilsen
Monie Jacobsen
E-mail: mjs at nypost dot dk