Could you update moi.idl?
 1-2  3-22  23-26

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

Thank you very much, both for the new file and the tip on how to keep it up to date myself. I know you don't have cycles to spare for writing scripting documentation, but I'm assuming you don't mind if other people take a crack at it, do 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.4 In reply to 2715.3 
Hi Dave,

> but I'm assuming you don't mind if other
> people take a crack at it, do you?

I certainly would not mind, I would appreciate it!

I would be able to add some tips/suggestions/corrections/etc to something like that.

There is that mostly empty scripting page on the wiki, that may be a good place to fill in anything that you want. Or if you want to put it somewhere else then there could be a link to it from that scripting wiki page.

- 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.5 In reply to 2715.4 
> I certainly would not mind, I would appreciate it!

> I would be able to add some tips/suggestions/corrections/etc to something like that.

Great! I've already made a pretty good start (I think) in creating a nicely cross-linked web page (automatically generated by a script, so it should be easy to maintain) that shows all of the Javascript accessible MoI classes/methods/properties/enums.

Since the page uses lots of custom CSS and Javascript, it probably won't work within the MoI wiki framework. Right now I'm running it locally on my machine, but I'll copy it to my web site in the next couple of days and post the link so you and the rest of the community can take a look and give me some feedback.

I'm still working through the data and control flow MoI uses to implement the UI and command system, but I think I've been making good progress there too. I've got some ideas on how to automatically extract some useful information there as well, which I need to further explore. Overall, it looks like the MoI infrastructure is just as cool as the app itself, and certainly seems to allow for lots of user customization and extension.

Depending upon how things go, I'll probably have a few big picture questions, and lots of detail oriented questions, for you at some point. But as of now I'm pretty sure I can make a first cut at producing a usable set of "Scripting MoI" documentation without having to ask you any more questions. Simply a matter of proper "time management" on my part (I keep getting sidetracked using MoI to model stuff, it's just so much fun :-) ...

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.6 In reply to 2715.5 
Hi Dave,

> Depending upon how things go, I'll probably have a
> few big picture questions, and lots of detail oriented
> questions, for you at some point.

Yes, please feel free to ask questions like this!

Since you're familiar with HTML/CSS/Javascript already you'll probably feel pretty at home with tinkering around with MoI's UI in general.

The main thing that can be a problem is that I'm also making changes to things in new releases to support new features, etc... So if you customize it extensively you'll need to merge your customizations into my changes for each new release.

I do have some ideas on modularizing things to a somewhat greater extent, like for example if a side pane palette (like Draw curve / Draw solid) was more encapsulated into its own file rather than all baked into SidePane.htm, then that would make it easier to have less merging needed in SidePane.htm . But it's hard to get the time to work on this currently with a lot of more "regular end user" features in the pipe.

- 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.7 In reply to 2715.6 
> The main thing that can be a problem is that I'm also making changes to things in new releases to support new features, etc... So if you customize it extensively you'll need to merge your customizations into my changes for each new release.

I understand. Shouldn't be a problem short term, since I'll mostly just be trying things out to see how they work and fit together. I'll probably have a "sandbox" version for tinkering separate from my "production" version I use for modeling. Given you're warning though, I'll try to think of ways to mitigate this problem going forward.

> I do have some ideas on modularizing things to a somewhat greater extent, like for example if a side pane palette (like Draw curve / Draw solid) was more encapsulated into its own file rather than all baked into SidePane.htm, then that would make it easier to have less merging needed in SidePane.htm . But it's hard to get the time to work on this currently with a lot of more "regular end user" features in the pipe.

Seems like you're pretty close already in general, just that one file is what makes things somewhat fragile at the moment. Once I get into it more, I might be able to make some suggestions...

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.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
 

Reply to All Reply to All

 

 
Show messages:  1-2  3-22  23-26