Could you update moi.idl?
 1-7  8-26

Previous
Next
 From:  Dave Morrill (DMORRILL)
2715.8 In reply to 2715.2 
Michael,

I haven't had much luck with your suggestion of using OleView to get moi.idl updates directly from the code. I downloaded the package that you linked to in your response, but it pops up an error saying that it could not find IVIEWERS.DLL. Googling the error reveals that this is a known problem, tough luck, no known solution. Further googling reveals that there is an OleView MFC sample program included with VS 2008. I downloaded and built it, but no joy with this version of the code either, although I get a different (but related) error message when I try to view the type lib for moi_lib.dll.

Any suggestions?

BTW, although I haven't worked on it for a couple of months, the docs are about 70% done and I decided that although I probably won't have time to get it to 100%, what I have finished is actually pretty useful and could probably be released in its current state. Before doing that, I thought I would try to update the doc with the new interfaces I suspect you added in the August 8 beta update, since even if I don't comment the API, the raw API will still show up in the document without comments...

- Dave Morrill
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
2715.9 In reply to 2715.8 
Hi Dave,
This works for me. If you install the Microsoft platform SDK and install it, the oleview is there and it views the moi_lib.dll
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Dave Morrill (DMORRILL)
2715.10 In reply to 2715.9 
BurrMan,

Maybe I'm cursed. I already had the platform SDK installed, so I hunted around in there and found oleview.exe, and ran it. Similar result. The program runs, but complains that:

DllRegisterServer in IVIEWERS.DLL failed.

OLEViewer will operate correctly without this DLL, however you will not be able to use the interface viewers.

Thanks for the suggestion though. Maybe you wouldn't mind extracting the moi.idl and attaching it to a forum append? I've just finished getting the Javascript doc for the Jun-23 beta ready to go, but I'd like to update it to the Aug-08 beta level before releasing it. Thanks...

- Dave Morrill
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2715.11 In reply to 2715.8 
Hi Dave, no problem the one for the Aug-8-2009 beta is attached here.

- Michael

EDIT: removed attachment from here, moi.idl has a download link on the scripting page here: http://moi3d.com/wiki/Scripting

EDITED: 20 May 2010 by MICHAEL GIBSON

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2715.12 In reply to 2715.10 
Hi Dave, also if you want to get oleview working, possibly this download will do the trick:

http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=5233b70d-d9b2-4cb5-aeb6-45664be858b6&displaylang=en

That seems to have an installer so it should have the dependent DLLs included in there I would think.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Dave Morrill (DMORRILL)
2715.13 In reply to 2715.12 
Michael,

Thanks for the moi.idl file!

I just found out what the problem was with oleview.exe...duh! Under Vista/Windows 7 you need to run it as administrator (otherwise the RegisterDllServer call fails). I love cryptic error messages! I was getting the same errors on my laptop running Windows 7 RTM,so I began fiddling with it again, and running as administrator did the trick...

- Dave Morrill
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Dave Morrill (DMORRILL)
2715.14 In reply to 2715.12 
Michael,

This is the result of my automated analysis of the changes from the Jun_23 beta to the Aug_08 beta:

Deleted method: GeomObject.getHighAccuracyBoundingBox

Added method: BoundingBox.clear
Added method: GeometryDatabase.selectLastCreated
Added method: PointPicker.orientedptframe
Added method: Settings.objExportWriteMaterialAssignments
Added method: Settings.meshExportCombineSameNamedObjects
Added method: Settings.editIniFile
Added method: Settings.getIniPath
Added method: UI.alert
Added method: VectorMath.createBoundingBox
Added method: View.specularBrightness
Added method: View.customFillLightLevel
Added method: View.edgeFixedColor
Added method: View.lightingStyle
Added method: View.surfaceFixedColor
Added method: View.metallicLighting
Added method: View.edgeColorMode
Added method: View.customKeyLightLevel
Added method: View.fixedLightPositions
Added method: View.specularFocusSize
Added method: View.specularHighlights
Added method: View.surfaceColorMode

Since this is my first "delta" build, just as a sanity check, does this look about right to you?

- Dave Morrill
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2715.15 In reply to 2715.14 
Hi Dave, yup that seems to be right to me.

The deleted method (GeomObject.getHighAccuracyBoundingBox) was one that was not working correctly and was crashing, so I figured that nothing could have been using it.

I switched its functionality to be included with the regular getBoundingBox() method, there is now a new optional parameter that can be passed in to get the high accuracy bounding box.

The regular bounding box method uses the display mesh to get the bounding box. The "high accuracy" one uses numeric methods that analyzes the NURBS shapes directly which is slower but also more accurate.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Anis
2715.16 In reply to 2715.15 
Sorry Guys,

BTW, whats the goal of this discussion ?
In another word, Whats Dave try to achieve ?

Thanks :)
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
2715.17 In reply to 2715.16 
Dave is creating documentation of MoI's Scripting interface.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
2715.18 In reply to 2715.17 
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Anis
2715.19 In reply to 2715.18 
Hi Burr,

Then what is the benefit for end user ?
Sorry scripting is not my world.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Dave Morrill (DMORRILL)
2715.20 In reply to 2715.15 
Michael,

OK, great! Thanks for the explanation about the deleted method. Seeing something disappear from the API this morning is what triggered me to add the extra logic to the script to detect the specific API changes.

I'll add the information about the difference between the low/high precision flavors of bounding box to the doc as well...

- Dave Morrill
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Dave Morrill (DMORRILL)
2715.21 In reply to 2715.19 
> Then what is the benefit for end user ?
> Sorry scripting is not my world.

The benefit for the end user is indirect, but potentially very large.

If you look at how Michael built MoI, it really consists of two main layers:

1) A core C++ class library that implements all of the low-level NURBS functions, 3D graphics, etc. Most of the functionality of this powerful library is exposed via COM interfaces and a Javascript API to the high-level user interface layer that you see while using MoI.

2) The high-level user interface layer of MoI is (in some sense) a very specialized version of the standard Internet Explorer web browser extended with some custom controls (such as the 3D viewports and the fly-out menu controls). All of this functionality is implemented as a series of standard web pages, using HTML, CSS, Javascript and the custom MoI Javascript API.

And that's what this discussion is all about. The standard MoI user interface is really just a set of web pages that William wrote, using HTML (well-documented), CSS (well-documented), Javascript (well-documented) and the custom Javascript API to access the powerful C++ MoI class library (completely undocumented).

What I am attempting to do is to document the MoI Javascript API. With that available, any motivated MoI user with some basic Web and Javascript skills should be able to extend or modify MoI in any number of ways, which eventually translates into more cool MoI functions and capabilities for every MoI user. And perhaps most importantly (in my mind at least), it empowers the MoI user community to accomplish this without having to request Michael to add yet another item to his ever-growing ToDo list :-) . But note that having this new documentation will not allow users to implement any new feature they want. Some features require enhancements to the core C++ library, which practically speaking, only Michael can do. But that still leaves a lot of room for creating all kinds of new user-implemented features for MoI.

I hope this explanation helped...

EDITED: 14 Sep 2009 by DMORRILL

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  BurrMan
2715.22 In reply to 2715.19 
Anis,
The benefit is for those that want to script MoI. If you dont want to script MoI then it wont be of interest to you.

You've seen Michael write scripts for people to do special things or automate a process. This documentation will be for those that want to figure out and write things for there own purposes or other people.

So even if you dont know javascript, eventually there will probably be quite a gathering of specialized scripts that one could browse and choose from.

If I became very good at it, I could even take requests and write custom plugins for MoI and charge money for them!
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Dee3 (DMATHO)
2715.23 In reply to 2715.22 
William? I thought we owe this/MoI to Michael ;)

Cheers,

. Diego .
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Dave Morrill (DMORRILL)
2715.24 In reply to 2715.23 
> William? I thought we owe this/MoI to Michael ;)

Just checking to see if anyone is paying attention...you pass :-)

- Dave Morrill
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Anis
2715.25 In reply to 2715.22 
Hi Burr,

>I could even take requests and write custom plugins for MoI and charge money for them!
But you need to get MoI SDK before it will happen ? Isn it ?

Thanks
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
 From:  Michael Gibson
2715.26 In reply to 2715.25 
Hi Anis,

> But you need to get MoI SDK before
> it will happen ? Isn it ?

You would need an SDK to do something very completely different from anything currently in MoI, like make a T-splines plugin or complex things like that which do a lot of unique low level processing.

But even without a C++ SDK you can use scripting to create plug-ins right now that work with the existing tools in MoI but package them together in different ways.

There is a lot that can be done with scripting, there are several example plug-ins that you can look at already which are collected on Petr's page here:
http://kyticka.webzdarma.cz/3d/moi/


One reason that scripting works well in MoI is that it is not just something kind of "tacked on" to MoI, it is used for all of MoI's regular functions. For example commands such as the line command, curve command, etc... all have a script component to them.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 

Reply to All Reply to All

 

 
 
Show messages:  1-7  8-26