Start Rhino from MS Visual Studio

rhino6

(Wilfriedseibt) #1

It´s a good thing interact with Rhino 5 over COM interface. Rhino 6 I cannot start.

Error Message from Visual Studio:
Es konnte kein Verweis auf “Rhinoceros 6 Type Library” hinzugefügt werden. ActiveX-Typbibliothek “C\Program Files\Rhino 6\System\Rhino.tlb” konnte nicht registriert werden.

Can you help me?
Wi


(Dale Fugier) #2

Hi @wilfriedseibt,

Can you provide some sample code that repeats the problem?

– Dale


(Wilfriedseibt) #3

Hi Dale,

thank you for your mail.

the problem is: How to automate Rhino 6, via COM, from a standalone VB.NET application.

In Rhino 5 all the programs worked fine, but in Rhino 6 I only can register the RhinoScript Type Library 6.0.

The Rhinoceros 6 Type Library indicates the error, you see in the screen shot. Thats why Rhino 6 doesn´t start.

Best greetings

Wilfried


(Dale Fugier) #4

Thanks @wilfriedseibt, looks like the information in the Registry is incorrect.

https://mcneel.myjetbrains.com/youtrack/issue/RH-44731

– Dale


(Wilfriedseibt) #5

Hi Dale,

thank you for the good advice. The registry is now o.k. (there was an other bug too: win32 for win64) and I cood register the Rhinoceros 6 Type Library and the RhinoScript Type Library 6.0.

But the Rhino.RhinoApplication doesn´t start:

Dim RhinoSitzung As Rhino.RhinoApplication = New Rhino.RhinoApplication With {.Visible = True, .ReleaseWithoutClosing = True}

System.InvalidCastException ist aufgetreten.

HResult=0x80004002

Nachricht = Das COM-Objekt des Typs “System.__ComObject” kann nicht in den Schnittstellentyp “Rhino.RhinoApplication” umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID “{9837542C-DC30-4EBE-BA30-B6EBDF471508}” aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).

In Rhino5 this works properly:

Dim RhinoSitzung As Rhino5x64.Rhino5x64Application = New Rhino5x64.Rhino5x64Application With {.Visible = True, .ReleaseWithoutClosing = True}

Now I wood know, what is the practice in Rhino 6 ?

Best greetings from Dresden

Wilfried


(Dale Fugier) #7

Hi @wilfriedseibt,

By hand-ediing the Registry, to fix the errors induced by the installer, I am able to get this to work:

Dim rhinoApp As Rhino.RhinoApplication
Try 
  rhinoApp = New Rhino.RhinoApplication With {.ReleaseWithoutClosing = True}
Catch ex As Exception
  Console.WriteLine(ex.Message)
  Return
End Try

' Wait until Rhino is initialized before calling into it
Const totalTime As Integer = 15 * 1000
dim waitingTime = 0
while (0 = rhinoApp.IsInitialized())
  Thread.Sleep(100)
  waitingTime = waitingTime + 100
  if (waitingTime > totalTime) Then
    Console.WriteLine("Rhino initialization failed")
    Return
  End If
End While

rhinoApp.Visible = 1

– Dale


(Wilfriedseibt) #8

Hi Dale,

have tried your code, but comes the same error-message:

Das COM-Objekt des Typs “System.__ComObject” kann nicht in den Schnittstellentyp “Rhino.RhinoApplication” umgewandelt werden.

Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID “{9837542C-DC30-4EBE-BA30-B6EBDF471508}” aufgrund des folgenden Fehlers nicht durchgeführt werden konnte:

Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).

-2147467262

Wilfried