This example works if you have installed vtk in your system, but it is not 
possible to re-size the cone using the boxWidget. I have disabled the line 
of AddObserver because it gives an error (Exception in thread "main" 
java.lang.NoSuchMethodError: invoke). What I am doing wrong?

The source of the example written in java is 
here<http://www.cmake.org/Wiki/VTK/Examples/Java/Miscellaneous/Cone6>

(ns example
  (:use [clojure reflect pprint])
  (:import (javax.swing JFrame JPanel SwingUtilities)))

(clojure.lang.RT/loadLibrary "vtkCommonJava")
(clojure.lang.RT/loadLibrary "vtkWidgetsJava")

(def boxWidget  (vtk.vtkBoxWidget.))

(def myCallback
  (proxy [clojure.lang.IFn] []
    (invoke []
      (let [t (vtk.vtkTransform.)]
        (.GetTransform t)
        (-> boxWidget .GetProp3D (.SetUserTransform t))))))

(defn main []
  (let [cone       (vtk.vtkConeSource.)
        coneMapper (vtk.vtkPolyDataMapper.)
        coneActor  (vtk.vtkActor.)
        ren        (vtk.vtkRenderer.)
        renWin     (vtk.vtkRenderWindow.)
        iren       (vtk.vtkRenderWindowInteractor.)
        style      (vtk.vtkInteractorStyleTrackballCamera.)
        t          (vtk.vtkTransform.)]

    (doto cone
      (.SetHeight 3.0)
      (.SetRadius 1.0)
      (.SetResolution 10))
    (doto coneMapper
      (.SetInputConnection (.GetOutputPort cone)))
    (doto coneActor
      (.SetMapper coneMapper))
    (doto ren
      (.GradientBackgroundOn)
      (.SetBackground 0.5 0.6 0.8)
      (.AddActor coneActor)
      (.ResetCamera))
    (doto renWin
      (.AddRenderer ren)
      (.SetSize 300 300))
    (doto iren
      (.SetRenderWindow renWin)
      (.SetInteractorStyle style))
    (doto boxWidget
      (.SetInteractor iren)
      (.SetPlaceFactor 1.25)
      (.SetProp3D coneActor)
      (.PlaceWidget)
      ;; (.AddObserver "interactionEvent" myCallback "invoke") ;; Exception 
in thread "main" java.lang.NoSuchMethodError: invoke!!
      (.On))
    (doto iren
      (.Initialize)
      (.Start))))

(example/main)

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to