Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   OpenCascade (https://www.delphipraxis.net/189736-opencascade.html)

Fritzew 20. Jul 2016 10:41

AW: OpenCascade
 
Also wir setzen OpenCascade als Volumen Generator ein.
Wir machen Tools für Holzbearbeitung bis hin zur Maschinenansteuerung.
Wir erzeugen Parameterisierte Volumen wodurch jederzeit etwas geändert werden kann.
es gibt also verschiedene primitive und bearbeiten die dann so nach dem Schema
Quader Länge / Breite Höhe erzeugen. Dann kommen die Bearbeitungen dran. Abschneiden an Ebenen, abrunden / fasen, Öffnungen einschneiden etc.
Das Ergebnis holen wir uns dann von Opencascade in verschiedenen Formaten für Rendering Zeichnungen etc.
Funktioniert klasse. Das einzige was stört ist die Geschwindigkeit von Opencascade im Vergleich zb zum ACIS Kern oder ähnlichem.
Mit der V7.0 von OCC ist das allerdings etwas besser geworden da die Boolschen Funktionen und auch der Mesher / Hiddenline Generator jetzt auch multi-thread unterstützen.

Auch benutzen wir den Step Import recht häufig für Verbindungsmittel etc.

Jens01 20. Jul 2016 11:50

AW: OpenCascade
 
Zitat:

Wir machen Tools für Holzbearbeitung bis hin zur Maschinenansteuerung.
Wer seid Ihr denn? IMOS?

Raible 28. Jul 2016 08:45

AW: OpenCascade
 
Ich habe nun eine Lösung für das Problem gefunden.

Beim Laden der Wrapper DLL werden auch diverse OCC DLL
geladen und Initialisiert.
Dabei werden Daten an StdErr ausgegeben.
In einem VCL Programm sind die Standardausgaben aber
nicht vorhanden.
Der Aufruf aus einem Delphi Konsolenprogramm
funktioniert hingegen ohne Probleme.

Als Lösung binde ich die DLL nun dynamisch ein, und setze
vorher aber die Standardausgaben.

Delphi-Quellcode:
unit OCCWrapper;

interface
uses
  System.Classes,
  WinApi.Windows;

const
  LibName = 'OCCWrapper.dll';

var
  prevStdOutputHandle : NativeUInt;
  prevStdErrorHandle : NativeUInt;

  OCCLibHnd: THandle;
  StdFileStream: TFileStream;

implementation

initialization
  prevStdOutputHandle := GetStdHandle(STD_OUTPUT_HANDLE);
  prevStdErrorHandle := GetStdHandle(STD_ERROR_HANDLE );

  StdFileStream := TFileStream.Create('C:\Temp\output.log', fmCreate);

  SetStdHandle(STD_OUTPUT_HANDLE, StdFileStream.Handle);
  SetStdHandle(STD_ERROR_HANDLE , StdFileStream.Handle);

  OCCLibHnd := LoadLibrary(LibName);

finalization
  FreeLibrary(OCCLibHnd);
  OCCLibHnd := 0;

  SetStdHandle(STD_OUTPUT_HANDLE, prevStdOutputHandle);
  SetStdHandle(STD_ERROR_HANDLE , prevStdErrorHandle );

  StdFileStream.Free;
  StdFileStream:=nil;
end.
prevStdOutputHandle und prevStdErrorHandle sind gleich Null,
und nur der Form halber mit GetStdHandle abgefragt.

schand99 29. Jul 2016 07:59

AW: OpenCascade
 
Ich will jetzt nicht Werbung machen.
Im Betrieb nutzen wir seit Jahren eine (gekaufte) 3D-Cad Komponente. Mit der kann man enorm viel Tipparbeit einsparen.
Guck mal da http://www.eastwindsoft.com/de/index.htm
Ist aber eine ActiveX, mit den typischen Vor- und Nachteilen. Und sie strauchelt beim Export von STEP-Dateien, wenn zu viele "Entities" enthalten sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz