Ruby vtk bindings


#1

I’m wanting to use ruby with VTK (http://public.kitware.com/VTK/).
Currently I’m getting errors compiling the ruby bindings
(http://www.gfd-dennou.org/arch/ruby/products/ruby-vtk/):

g++ -fPIC -Wall -g -O2 -fPIC -I. -I/usr/lib/ruby/1.8/i486-linux
-I/usr/lib/ruby/1.8/i486-linux -I. -DHAVE_VTKCONFIGURE_H
-I/usr/include/vtk -c vtkTk.cxx
In file included from vtkTk.cxx:1399:
/usr/include/vtk/vtkTk.h:26:16: error: tk.h: No such file or directory
vtkTk.cxx:343: warning: â??swig_type_info*
SWIG_TypeDynamicCast(swig_type_info*, void**)â?? defined but not used
vtkTk.cxx:366: warning: â??const char* SWIG_TypePrettyName(const
swig_type_info*)â?? defined but not used
vtkTk.cxx:492: warning: â??char* SWIG_PackVoidPtr(char*, void*, const
char*, size_t)â?? defined but not used
vtkTk.cxx:503: warning: â??const char* SWIG_UnpackVoidPtr(const char*,
void**, const char*)â?? defined but not used
vtkTk.cxx:516: warning: â??char* SWIG_PackDataName(char*, void*, size_t,
const char*, size_t)â?? defined but not used
vtkTk.cxx:531: warning: â??const char* SWIG_UnpackDataName(const char*,
void*, size_t, const char*)â?? defined but not used
vtkTk.cxx:595: warning: â??swig_type_info* SWIG_TypeQuery(const char*)â??
defined but not used
vtkTk.cxx:601: warning: â??void SWIG_TypeClientData(swig_type_info*,
void*)â?? defined but not used
vtkTk.cxx:611: warning: â??void SWIG_PropagateClientData(swig_type_info*)â??
defined but not used
vtkTk.cxx:693: warning: â??VALUE SWIG_Ruby_NewPointerObj(void*,
swig_type_info*, int)â?? defined but not used
vtkTk.cxx:719: warning: â??VALUE SWIG_Ruby_NewClassInstance(VALUE,
swig_type_info*)â?? defined but not used
vtkTk.cxx:798: warning: â??VALUE SWIG_Ruby_NewPackedObj(void*, int,
swig_type_info*)â?? defined but not used
vtkTk.cxx:810: warning: â??void SWIG_Ruby_ConvertPacked(VALUE, void*, int,
swig_type_info*, int)â?? defined but not used
vtkTk.cxx:855: warning: â??void SWIG_AsVal(VALUE, int*)â?? defined but not
used
make: *** [vtkTk.o] Error 1

The big mess of warnings is also somewhat worrisome, but I’d just like
it to compile first. I’m running Ubuntu (Breezy) with all the latest
updates. I installed vtk and tk through apt. I also made sure tk.h was
on my system:
$ find /usr/include -name tk.h
/usr/include/tcl8.4/tk-private/generic/tk.h
/usr/include/tcl8.4/tk.h

I don’t have much experience compiling my own libraries from scratch so
I’m not quite sure what I’m doing wrong.

Also it seems the ruby bindings are somewhat old and not much is
happening with them. Is there a gem out there or better documentation?

Thanks for the help!

-----Jay A.


#2

removed_email_address@domain.invalid wrote:

I’m wanting to use ruby with VTK (http://public.kitware.com/VTK/).

Also it seems the ruby bindings are somewhat old and not much is
happening with them. Is there a gem out there or better documentation?

Thanks for the help!

-----Jay A.

The ruby-vtk works with VTK-4.4 but not VTK-5.0+
Simple ruby programs work, but those that require interactive use

  • similar to Python’s TkIntermodule were not working.
    They would require some ruby code to implement that module.

Even with that ruby-vtk, it is an alpha quality.
There is no .gem package yet.
The tar.gz was as easy as reading the instructions in that package.

To get a ruby interface for VTK-5.0 would require implementing a swig
interface.
That is quite a lot of work to get that implemented.

best regards,
Gerald


#3

Hmm… vtk-4.4 seems to be the default for ubuntu. Following the
install instructions again for ruby-vtk I still get the compile error.
Any ideas on why I might be having trouble compiling? Thanks!

-----Jay


#4

removed_email_address@domain.invalid wrote:

Hmm… vtk-4.4 seems to be the default for ubuntu. Following the
install instructions again for ruby-vtk I still get the compile error.
Any ideas on why I might be having trouble compiling? Thanks!

-----Jay

I used the tcl8.4.11 and tk8.4.11 src, which put all the headers in
/usr/include/
tcl.h tclDecls.h tclPlatDecls.h
tk.h tkDecls.h tkPlatDecls.h

You need to put those headers where the Makefile finds them.
Perhaps link the headers to /usr/include or use/local/include
OR alter the Makefile generated to include the directories in
which the headers are located.

regards,
Gerald


#5

From: removed_email_address@domain.invalid
Subject: ruby vtk bindings
Date: Mon, 27 Feb 2006 04:06:23 +0900
Message-ID: removed_email_address@domain.invalid

Also it seems the ruby bindings are somewhat old and not much is
happening with them. Is there a gem out there or better documentation?

Although I know this is NOT an answer which you want,
Ruby/Tk can control VTK with its Tcl-wrapper. :slight_smile:
For example, if you want to use a VTK-Tcl-script,

require ‘tk’

VTK_TCLLIB = ‘/usr/local/lib/vtk/tcl’
VTK_EXAMPLE = ‘/usr/local/src/VTK/VTK/Examples/GUI/Tcl’
VTK_DATA = ‘/usr/local/src/VTK/VTKData’

Tk::AUTO_PATH.lappend(VTK_TCLLIB)

TkPackage.require(‘vtk’)
TkPackage.require(‘vtkinteraction’)
Tk.tk_call(‘set’, ‘::VTK_DATA_ROOT’, VTK_DATA)

Tk.load_tclscript(File.join(VTK_EXAMPLE, ‘ImagePlaneWidget.tcl’))

Tk.mainloop