Thomas,

I had the same idea, so I tried a shortcut method. I converted the mesh
data of a simple cube into STL and tried to load it using STLReader API (of
PythonOCC). I got NotDone failure, if I recall correctly. I will try to
port the code snippet to python and see if that helps.
--
Jayesh


On Wed, Nov 30, 2011 at 3:10 PM, Thomas Paviot <tpav...@gmail.com> wrote:

> 2011/11/30 Thomas Paviot <tpav...@gmail.com>
>
>> 2011/11/30 Jayesh Salvi <jayeshsa...@gmail.com>
>>
>>> Thomas,
>>>
>>> Is there a way to do this other way around? i.e. if I have mesh
>>> information how do I convert it to Solid.
>>>
>>
>> I think we should have a look at the STL Importer implemented in OCC.
>> They actually convert mesh information into solids.
>>
>>
>>> I think that's what Chris was asking too. I've tried to do it 
>>> (here<https://gist.github.com/1351019>),
>>> but the solids I create do not behave correctly in subsequent boolean
>>> operations on them.
>>>
>>> Any hint will be appreciated. Thanks.
>>> --
>>> Jayesh
>>>
>>>
>> Thomas
>>
>>
> Attached below a snippet of the OCC code from STL_Reader.cxx. The
> algorithm for mesh to TopoDS_Shape conversion can be ported to python.
>
> Thomas
>
>  ===
> void StlAPI_Reader::Read(TopoDS_Shape& aShape, const Standard_CString
> aFileName)
> {
>   OSD_Path aFile(aFileName);
>
>   Handle(StlMesh_Mesh) aSTLMesh = RWStl::ReadFile(aFile);
>   Standard_Integer NumberDomains = aSTLMesh->NbDomains();
>   Standard_Integer iND;
>   gp_XYZ p1, p2, p3;
>   TopoDS_Vertex Vertex1, Vertex2, Vertex3;
>   TopoDS_Face AktFace;
>   TopoDS_Wire AktWire;
>   BRepBuilderAPI_Sewing aSewingTool;
>   Standard_Real x1, y1, z1;
>   Standard_Real x2, y2, z2;
>   Standard_Real x3, y3, z3;
>
>   aSewingTool.Init(1.0e-06,Standard_True);
>
>   TopoDS_Compound aComp;
>   BRep_Builder BuildTool;
>   BuildTool.MakeCompound( aComp );
>
>   StlMesh_MeshExplorer aMExp (aSTLMesh);
>
>   for (iND=1;iND<=NumberDomains;iND++)
>   {
>     for (aMExp.InitTriangle (iND); aMExp.MoreTriangle ();
> aMExp.NextTriangle ())
>     {
>       aMExp.TriangleVertices (x1,y1,z1,x2,y2,z2,x3,y3,z3);
>       p1.SetCoord(x1,y1,z1);
>       p2.SetCoord(x2,y2,z2);
>       p3.SetCoord(x3,y3,z3);
>
>       if ((!(p1.IsEqual(p2,0.0))) && (!(p1.IsEqual(p3,0.0))))
>       {
>         Vertex1 = BRepBuilderAPI_MakeVertex(p1);
>         Vertex2 = BRepBuilderAPI_MakeVertex(p2);
>         Vertex3 = BRepBuilderAPI_MakeVertex(p3);
>
>         AktWire = BRepBuilderAPI_MakePolygon( Vertex1, Vertex2, Vertex3,
> Standard_True);
>
>         if( !AktWire.IsNull())
>         {
>           AktFace = BRepBuilderAPI_MakeFace( AktWire);
>           if(!AktFace.IsNull())
>             BuildTool.Add( aComp, AktFace );
>         }
>       }
>     }
>   }
>   aSTLMesh->Clear();
>
>   aSewingTool.Load( aComp );
>   aSewingTool.Perform();
>   aShape = aSewingTool.SewedShape();
>   if ( aShape.IsNull() )
>     aShape = aComp;
> }
>
>
> _______________________________________________
> Pythonocc-users mailing list
> Pythonocc-users@gna.org
> https://mail.gna.org/listinfo/pythonocc-users
>
>
_______________________________________________
Pythonocc-users mailing list
Pythonocc-users@gna.org
https://mail.gna.org/listinfo/pythonocc-users

Reply via email to