![]() |
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. |
AW: OpenCascade
Zitat:
|
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:
prevStdOutputHandle und prevStdErrorHandle sind gleich Null,
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. und nur der Form halber mit GetStdHandle abgefragt. |
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 ![]() 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. |
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