Visualization TKService TKV3d TKOpenGl TKOpenGles TKMeshVS TKIVtk TKD3DHost
ApplicationFramework TKCDF TKLCAF TKCAF TKBinL TKXmlL TKBin TKXml TKStdL TKStd TKTObj TKBinTObj TKXmlTObj TKVCAF
DataExchange TKXSBase TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP TKIGES TKXCAF TKXDEIGES TKXDESTEP TKSTL TKVRML TKXmlXCAF TKBinXCAF TKRWMesh
-Draw TKDraw TKTopTest TKOpenGlTest TKOpenGlesTest TKD3DHostTest TKViewerTest TKXSDRAW TKDCAF TKXDEDRAW TKTObjDRAW TKQADraw TKIVtkDraw DRAWEXE
+Draw TKDrawBase TKDraw TKTopTest TKOpenGlTest TKOpenGlesTest TKD3DHostTest TKViewerTest TKXSDRAW TKDCAF TKXDEDRAW TKTObjDRAW TKQADraw TKIVtkDraw DRAWEXE
n XSDRAWSTLVRML
r DrawResources
t TKDCAF
+t TKDrawBase
t TKDraw
t TKTObjDRAW
t TKTopTest
#include <stdio.h>
// memory management
#ifdef _WIN32
-extern Draw_Viewer dout;
+Standard_IMPORT Draw_Viewer dout;
#endif
#define Characters(IArg) (strspn (Arg[IArg], "0123456789.+-eE") != strlen (Arg[IArg]))
static TopoDS_Shape pickshape;
static Standard_Real upick,vpick;
#ifdef _WIN32
-extern Draw_Viewer dout;
+Standard_IMPORT Draw_Viewer dout;
#endif
//=======================================================================
Standard_Boolean isOn = Draw::ParseOnOffIterator (theArgsNb, theArgVec, theArgIter);
return toReverse ? !isOn : isOn;
}
+
+//=======================================================================
+//function : Set
+//purpose : point
+//=======================================================================
+void Draw::Set (const Standard_CString theName,
+ const gp_Pnt& thePoint)
+{
+ Draw_PntParams& aParams = PntParameters();
+ Handle(Draw_Point) aDrawPoint = new Draw_Point (thePoint, aParams.PntMarker, aParams.PntColor);
+ Draw::Set (theName, aDrawPoint);
+}
+
+//=======================================================================
+//function : Set
+//purpose : point
+//=======================================================================
+void Draw::Set (const Standard_CString theName,
+ const gp_Pnt2d& thePoint)
+{
+ Draw_PntParams& aParams = PntParameters();
+ Handle(Draw_Point) aDrawPoint = new Draw_Point (thePoint, aParams.PntMarker, aParams.PntColor);
+ Draw::Set (theName, aDrawPoint);
+}
+
+//=======================================================================
+//function : PntParameters
+//purpose :
+//=======================================================================
+Draw_PntParams& Draw::PntParameters()
+{
+ static Draw_PntParams aParams;
+ return aParams;
+}
#define _Draw_HeaderFile
#include <Draw_Interpretor.hxx>
+#include <Draw_PntParams.hxx>
+#include <Draw_Point.hxx>
#include <NCollection_Map.hxx>
#include <Quantity_ColorRGBA.hxx>
#include <Standard_Handle.hxx>
//! Sets a numeric variable.
Standard_EXPORT static void Set (const Standard_CString Name, const Standard_Real val);
+ //! Sets <G> in the variable <Name>. Overwrite the
+ //! variable if already set.
+ Standard_EXPORT static void Set (const Standard_CString Name, const gp_Pnt& G);
+
+ //! Sets <G> in the variable <Name>. Overwrite the
+ //! variable if already set.
+ Standard_EXPORT static void Set (const Standard_CString Name, const gp_Pnt2d& G);
+
+ //! Return global parameters for points.
+ Standard_EXPORT static Draw_PntParams& PntParameters();
+
//! Returns main DRAW interpretor.
Standard_EXPORT static Draw_Interpretor& GetInterpretor();
--- /dev/null
+// Copyright (c) 2021 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef Draw_PntParams_HeaderFile
+#define Draw_PntParams_HeaderFile
+
+#include <Draw_Color.hxx>
+#include <Draw_MarkerShape.hxx>
+
+//! Draw parameters for points.
+struct Draw_PntParams
+{
+public:
+ Draw_Color PntColor;
+ Draw_MarkerShape PntMarker;
+
+ Draw_PntParams()
+ : PntColor (Draw_rouge),
+ PntMarker (Draw_Plus)
+ {}
+
+};
+
+#endif
--- /dev/null
+// Created on: 1994-03-28
+// Created by: Remi LEQUETTE
+// Copyright (c) 1994-1999 Matra Datavision
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#include <Draw_Point.hxx>
+
+#include <Draw.hxx>
+#include <Draw_Color.hxx>
+#include <Draw_Display.hxx>
+#include <Draw_PntParams.hxx>
+#include <gp_Pnt.hxx>
+#include <gp_Pnt2d.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(Draw_Point, Draw_Drawable3D)
+
+//=======================================================================
+//function : Draw_Point
+//purpose :
+//=======================================================================
+Draw_Point::Draw_Point (const gp_Pnt& P,
+ const Draw_MarkerShape Shape,
+ const Draw_Color& Col)
+: myPoint(P),
+ is3D(Standard_True),
+ myShape(Shape),
+ myColor(Col)
+{
+ //
+}
+
+//=======================================================================
+//function : Draw_Point
+//purpose :
+//=======================================================================
+Draw_Point::Draw_Point (const gp_Pnt2d& P,
+ const Draw_MarkerShape Shape,
+ const Draw_Color& Col)
+: myPoint(P.X(),P.Y(),0.),
+ is3D(Standard_False),
+ myShape(Shape),
+ myColor(Col)
+{
+ //
+}
+
+//=======================================================================
+//function : Is3D
+//purpose :
+//=======================================================================
+Standard_Boolean Draw_Point::Is3D() const
+{
+ return is3D;
+}
+
+//=======================================================================
+//function : DrawOn
+//purpose :
+//=======================================================================
+void Draw_Point::DrawOn (Draw_Display& dis) const
+{
+ dis.SetColor(myColor);
+ if (is3D)
+ dis.DrawMarker(myPoint,myShape);
+ else
+ dis.DrawMarker(Point2d(),myShape);
+}
+
+//=======================================================================
+//function : Point
+//purpose :
+//=======================================================================
+void Draw_Point::Point (const gp_Pnt& P)
+{
+ myPoint = P;
+ is3D = Standard_True;
+}
+
+//=======================================================================
+//function : Point2d
+//purpose :
+//=======================================================================
+void Draw_Point::Point2d(const gp_Pnt2d& P)
+{
+ myPoint.SetCoord(P.X(),P.Y(),0);
+ is3D = Standard_False;
+}
+
+//=======================================================================
+//function : Copy
+//purpose :
+//=======================================================================
+Handle(Draw_Drawable3D) Draw_Point::Copy() const
+{
+ Handle(Draw_Point) P;
+ if (is3D)
+ P = new Draw_Point(myPoint,myShape,myColor);
+ else
+ P = new Draw_Point(Point2d(),myShape,myColor);
+
+ return P;
+}
+
+//=======================================================================
+//function : Dump
+//purpose :
+//=======================================================================
+void Draw_Point::Dump (Standard_OStream& S) const
+{
+#if !defined(_MSC_VER) && !defined(__sgi) && !defined(IRIX)
+ std::ios::fmtflags F = S.flags();
+ S.setf(std::ios::scientific,std::ios::floatfield);
+ S.precision(15);
+#else
+ long form = S.setf(std::ios::scientific);
+ std::streamsize prec = S.precision(15);
+#endif
+ if (is3D)
+ S << "Point : " << myPoint.X() << ", " << myPoint.Y() << ", " << myPoint.Z() <<std::endl;
+ else
+ S << "Point 2d : " << myPoint.X() << ", " << myPoint.Y() <<std::endl;
+#if !defined(_MSC_VER) && !defined(__sgi) && !defined(IRIX)
+ S.setf(F);
+#else
+ S.setf(form);
+ S.precision(prec);
+#endif
+}
+
+//=======================================================================
+//function : Save
+//purpose :
+//=======================================================================
+void Draw_Point::Save (Standard_OStream& theStream) const
+{
+#if !defined(_MSC_VER) && !defined(__sgi) && !defined(IRIX)
+ std::ios::fmtflags aFlags = theStream.flags();
+ theStream.setf (std::ios::scientific, std::ios::floatfield);
+ theStream.precision (15);
+#else
+ long aForm = theStream.setf (std::ios::scientific);
+ std::streamsize aPrec = theStream.precision (15);
+#endif
+ if (is3D)
+ {
+ theStream << "1 " << myPoint.X() << " " << myPoint.Y() << " " << myPoint.Z() << "\n";
+ }
+ else
+ {
+ theStream << "0 " << myPoint.X() << " " << myPoint.Y() << "\n";
+ }
+#if !defined(_MSC_VER) && !defined(__sgi) && !defined(IRIX)
+ theStream.setf (aFlags);
+#else
+ theStream.setf (aForm);
+ theStream.precision (aPrec);
+#endif
+}
+
+//=======================================================================
+//function : Restore
+//purpose :
+//=======================================================================
+Handle(Draw_Drawable3D) Draw_Point::Restore (Standard_IStream& theStream)
+{
+ const Draw_PntParams& aParams = Draw::PntParameters();
+ Standard_Integer is3d = 0;
+ theStream >> is3d;
+ Standard_Real x,y,z = 0.0;
+ if (is3d)
+ {
+ theStream >> x >> y >> z;
+ }
+ else
+ {
+ theStream >> x >> y;
+ }
+ Handle(Draw_Point) aDrawPoint;
+ if (is3d)
+ {
+ aDrawPoint = new Draw_Point (gp_Pnt (x, y, z), aParams.PntMarker, aParams.PntColor);
+ }
+ else
+ {
+ aDrawPoint = new Draw_Point (gp_Pnt2d (x, y), aParams.PntMarker, aParams.PntColor);
+ }
+ return aDrawPoint;
+}
+
+//=======================================================================
+//function : Whatis
+//purpose :
+//=======================================================================
+void Draw_Point::Whatis (Draw_Interpretor& S) const
+{
+ S << "point";
+}
--- /dev/null
+// Created on: 1994-03-28
+// Created by: Remi LEQUETTE
+// Copyright (c) 1994-1999 Matra Datavision
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
+//
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
+
+#ifndef _Draw_Point_HeaderFile
+#define _Draw_Point_HeaderFile
+
+#include <gp_Pnt.hxx>
+#include <Draw_MarkerShape.hxx>
+#include <Draw_Color.hxx>
+#include <Draw_Drawable3D.hxx>
+#include <Draw_Interpretor.hxx>
+
+class Draw_Color;
+class gp_Pnt2d;
+
+DEFINE_STANDARD_HANDLE(Draw_Point, Draw_Drawable3D)
+
+//! A drawable point.
+class Draw_Point : public Draw_Drawable3D
+{
+ DEFINE_STANDARD_RTTIEXT(Draw_Point, Draw_Drawable3D)
+ Draw_Drawable3D_FACTORY
+public:
+
+ Standard_EXPORT Draw_Point (const gp_Pnt& P, const Draw_MarkerShape Shape, const Draw_Color& Col);
+
+ Standard_EXPORT Draw_Point (const gp_Pnt2d& P, const Draw_MarkerShape Shape, const Draw_Color& Col);
+
+ Standard_EXPORT virtual void DrawOn (Draw_Display& dis) const Standard_OVERRIDE;
+
+ //! Is a 3D object. (Default True).
+ Standard_EXPORT virtual Standard_Boolean Is3D() const Standard_OVERRIDE;
+
+ gp_Pnt Point() const { return myPoint; }
+
+ Standard_EXPORT void Point (const gp_Pnt& P);
+
+ gp_Pnt2d Point2d() const { return gp_Pnt2d(myPoint.X(), myPoint.Y()); }
+
+ Standard_EXPORT void Point2d (const gp_Pnt2d& P);
+
+ void Color (const Draw_Color& theColor) { myColor = theColor; }
+
+ Draw_Color Color() const { return myColor; }
+
+ void Shape (const Draw_MarkerShape theS) { myShape = theS; }
+
+ Draw_MarkerShape Shape() const { return myShape; }
+
+ //! For variable copy.
+ Standard_EXPORT virtual Handle(Draw_Drawable3D) Copy() const Standard_OVERRIDE;
+
+ //! For variable dump.
+ Standard_EXPORT virtual void Dump (Standard_OStream& S) const Standard_OVERRIDE;
+
+ //! Save drawable into stream.
+ Standard_EXPORT virtual void Save (Standard_OStream& theStream) const Standard_OVERRIDE;
+
+ //! For variable whatis command.
+ Standard_EXPORT virtual void Whatis (Draw_Interpretor& I) const Standard_OVERRIDE;
+
+private:
+
+ gp_Pnt myPoint;
+ Standard_Boolean is3D;
+ Draw_MarkerShape myShape;
+ Draw_Color myColor;
+
+};
+
+#endif // _Draw_Point_HeaderFile
Draw_PInterp.hxx
Draw_PloadCommands.cxx
Draw_PluginMacro.hxx
+Draw_PntParams.hxx
+Draw_Point.cxx
+Draw_Point.hxx
Draw_Printer.cxx
Draw_Printer.hxx
Draw_ProgressIndicator.cxx
IMPLEMENT_STANDARD_RTTIEXT(DrawTrSurf_Curve, DrawTrSurf_Drawable)
Standard_Real DrawTrSurf_CurveLimit = 400;
-extern Standard_Boolean Draw_Bounds;
+Standard_IMPORT Standard_Boolean Draw_Bounds;
//=======================================================================
//function : DrawTrSurf_Curve
IMPLEMENT_STANDARD_RTTIEXT(DrawTrSurf_Curve2d, DrawTrSurf_Drawable)
static Standard_Real DrawTrSurf_CurveLimit = 400;
-extern Standard_Boolean Draw_Bounds;
+Standard_IMPORT Standard_Boolean Draw_Bounds;
//=======================================================================
//function : DrawTrSurf_Curve2d
#include <NCollection_IncAllocator.hxx>
#include <NCollection_LocalArray.hxx>
+//#ifdef DRAW
+#include <Draw.hxx>
+//#endif
// modified by NIZHNY-MKK Thu Nov 2 15:07:26 2000.BEGIN
static Standard_Boolean TestPassedSolutionWithNegativeState(const IntWalk_VectorOfWalkingData& wd,
// end of conditions.
{
+ //#ifdef DRAW
+ char* name = new char[100];
+ //#endif
+
Standard_Integer I = 0, N = 0, SaveN = 0;
Standard_Real aBornInf[2] = {}, aBornSup[2] = {}, aUVap[2] = {};
math_Vector BornInf(aBornInf,1,2), BornSup(aBornSup,1,2), UVap(aUVap,1,2);
previousd3d = Func.Direction3d();
previousd2d = Func.Direction2d();
CurrentLine->AddPoint(previousPoint);
+
+ //#ifdef DRAW
+ Standard_Integer aNbPoints = CurrentLine->NbPoints();
+ gp_Pnt aPnt = previousPoint.Value();
+ sprintf(name, "op%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt);
+ gp_Pnt2d aPnt2d = previousPoint.ValueOnSurface(false);
+ sprintf(name, "opp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt2d);
+ //#endif
+
// modified by NIZHNY-MKK Fri Oct 27 12:34:32 2000.BEGIN
if(movementdirectioninfo[I] !=0) {
if(movementdirectioninfo[I] < 0) {
CurrentLine->AddStatusLast(Standard_False);
//if (aStatus != IntWalk_ArretSurPointPrecedent)
CurrentLine->AddPoint(Psol);
+
+ //#ifdef DRAW
+ aNbPoints = CurrentLine->NbPoints();
+ aPnt = Psol.Value();
+ sprintf(name, "op%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt);
+ aPnt2d = Psol.ValueOnSurface(false);
+ sprintf(name, "opp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt2d);
+ //#endif
+
//Remove <SaveN> from <seqAlone>
for (Standard_Integer iseq = 1; iseq <= seqAlone.Length(); iseq++)
if (seqAlone(iseq) == SaveN)
Tgtend = Standard_True;
MakeWalkingPoint(1, UVap(1), UVap(2), Func, Psol);
CurrentLine->AddPoint(Psol);
+
+ //#ifdef DRAW
+ aNbPoints = CurrentLine->NbPoints();
+ aPnt = Psol.Value();
+ sprintf(name, "op%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt);
+ aPnt2d = Psol.ValueOnSurface(false);
+ sprintf(name, "opp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt2d);
+ //#endif
+
Rajout = Standard_True;
seqAlone.Append(lines.Length() + 1);
seqAjout.Append(lines.Length() + 1);
previousd3d = Func.Direction3d();
previousd2d = Func.Direction2d();
CurrentLine->AddPoint(previousPoint);
+
+ //#ifdef DRAW
+ aNbPoints = CurrentLine->NbPoints();
+ aPnt = previousPoint.Value();
+ sprintf(name, "op%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt);
+ aPnt2d = previousPoint.ValueOnSurface(false);
+ sprintf(name, "opp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt2d);
+ //#endif
}
else if (aStatus == IntWalk_PointConfondu)
{
#include <NCollection_IncAllocator.hxx>
+//#ifdef DRAW
+#include <Draw.hxx>
+//#endif
+
void IntWalk_IWalking::ComputeCloseLine(const TColStd_SequenceOfReal& Umult,
const TColStd_SequenceOfReal& Vmult,
const ThePOPIterator& Pnts1,
//
// ********************************************************************
{
+ //#ifdef DRAW
+ char* name = new char[100];
+ //#endif
+
Standard_Integer I = 0, N = 0,SaveN = 0;
Standard_Real aBornInf[2] = {}, aBornSup[2] = {}, aUVap[2] = {};
math_Vector BornInf(aBornInf,1,2), BornSup(aBornSup,1,2);
CurrentLine = new IntWalk_TheIWLine (new NCollection_IncAllocator());
CurrentLine->AddPoint(previousPoint);
+
+ //#ifdef DRAW
+ Standard_Integer aNbPoints = CurrentLine->NbPoints();
+ gp_Pnt aPnt = previousPoint.Value();
+ sprintf(name, "cp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt);
+ gp_Pnt2d aPnt2d = previousPoint.ValueOnSurface(false);
+ sprintf(name, "cpp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt2d);
+ //#endif
+
CurrentLine->SetTangentVector(previousd3d,1);
Tgtbeg = Standard_False;
Tgtend = Standard_False;
//if (aStatus != IntWalk_ArretSurPointPrecedent)
CurrentLine->AddPoint(Psol);
+ //#ifdef DRAW
+ aNbPoints = CurrentLine->NbPoints();
+ aPnt = Psol.Value();
+ sprintf(name, "cp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt);
+ aPnt2d = Psol.ValueOnSurface(false);
+ sprintf(name, "cpp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt2d);
+ //#endif
+
//Remove <SaveN> from <seqAlone> and, if it is first found point,
//from <seqAjout> too
if (IsValidEndPoint(I, SaveN))
{
if (aStatus == IntWalk_ArretSurPointPrecedent) {
CurrentLine->AddPoint(Psol);
+
+ //#ifdef DRAW
+ aNbPoints = CurrentLine->NbPoints();
+ aPnt = Psol.Value();
+ sprintf(name, "cp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt);
+ aPnt2d = Psol.ValueOnSurface(false);
+ sprintf(name, "cpp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt2d);
+ //#endif
+
OpenLine(0,Psol,Pnts1,Func,CurrentLine);
}
else {
IntSurf_PntOn2S newP;
newP.SetValue(Func.Point(),reversed,Uvap(1),Uvap(2));
CurrentLine->AddPoint(newP);
+
+ //#ifdef DRAW
+ aNbPoints = CurrentLine->NbPoints();
+ aPnt = newP.Value();
+ sprintf(name, "cp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt);
+ aPnt2d = newP.ValueOnSurface(false);
+ sprintf(name, "cpp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt2d);
+ //#endif
+
Rajout = Standard_True;
seqAlone.Append(lines.Length()+1);
seqAjout.Append(lines.Length()+1);
previousd3d = Func.Direction3d();
previousd2d = Func.Direction2d();
CurrentLine->AddPoint(previousPoint);
+
+ //#ifdef DRAW
+ aNbPoints = CurrentLine->NbPoints();
+ aPnt = previousPoint.Value();
+ sprintf(name, "cp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt);
+ aPnt2d = previousPoint.ValueOnSurface(false);
+ sprintf(name, "cpp%d_%d", I, aNbPoints);
+ Draw::Set(name, aPnt2d);
+ //#endif
}
else if (aStatus == IntWalk_PointConfondu)
{
;# Return list of toolkits
proc Draw:toolkits { } {
- set aResult [list TKDraw TKTopTest TKViewerTest TKXSDRAW TKDCAF TKXDEDRAW TKTObjDRAW TKQADraw]
+ set aResult [list TKDrawBase TKDraw TKTopTest TKViewerTest TKXSDRAW TKDCAF TKXDEDRAW TKTObjDRAW TKQADraw]
lappend aResult "TKOpenGlTest"
if { [info exists ::env(HAVE_GLES2)] && "$::env(HAVE_GLES2)" == "true" } {
TKernel
+TKDrawBase
TKG2d
TKGeomBase
TKG3d
--- /dev/null
+project(TKDrawBase)
+
+OCCT_INCLUDE_CMAKE_FILE (adm/cmake/occt_toolkit)
--- /dev/null
+TKernel
+TKG2d
+TKG3d
+TKMath
+TKService
+CSF_TclLibs
+CSF_TclTkLibs
+CSF_XwLibs
+CSF_gdi32
+CSF_advapi32
+CSF_user32
+CSF_shell32
+CSF_TBB
+CSF_objc
+CSF_Appkit
+CSF_IOKit
+CSF_ThreadLibs
--- /dev/null
+EXTERNLIB
+PACKAGES
TKG2d
TKGeomBase
TKBRep
+TKDrawBase
\ No newline at end of file