RhinoCommon API documentation - wishes / critique

Thanks Clement for the detailed analysis and feedback

WWW-2045 Tab text: show significant info

WWW-2046 Developer docs: show more compact arguments in tree view

WWW-2047 Developer docs: readability of information in tree view, add one extra level of nesting

WWW-2048 Developer docs: amount of information shown in methods that have overloads

WWW-2049 Developer docs: text readability and indentation

WWW-2050 Developer docs: add Parameter info for external types

WWW-2051 Developer docs: Syntax copy feature

2 Likes

Hi @Tom_P, yes. Your suggestion and the change @mkarimi made afterwards has been already a big improvement in readability. I’ve seen that the paramter types (links) are beeing worked on now while re-reading the whole tread. This is great. The (missing link) color is only bad when in darkmode for me.

Another slight thing for the right column when the namespace is displayed. In the old system this was a 2 column table and each row had a dimish gray line to seperate the table items:

The new system has only one column with the descriptive text displayed below the table item:

Imho, it was easier to find items in the old system while scrolling through the list, especially because of the dimish seperator lines.

_
c.

1 Like

Thank you both @clement and @Tom_P for your detailed comparison and pointing out what works and what doesn’t. And thank you @Gijs for making YTs.

Some of the things you brought up are bugs that I’m going to fix as soon as possible. Like:

and

I also agree with most of your styling suggestions for the right panel. We need to improve readability of that section.

Regarding the tree, I think we can make some styling improvements to make it more readable but I want to keep it as a global navigation tool. I think part of the reason the old tree looked cleaner was because it omits all other members of a class (which was a limitation of SandCastle), I don’t want to go there.

The new site also has 1-1 correspondence between member urls and nodes in the tree, and we’re using the name of the member (without the argument) as the url slug. That’s why the three flavors of CreatePatch get grouped together. I’m hoping to solve the issues you have with these kind of grouped methods with styling as the alternative would require changing the urls to something less readable.

This is a known issue, right now we don’t have a way of extracting urls for external types. I’ll do some research on that.

This is fixed now.

1 Like

Hi @mkarimi, yes. It reduced the number of tree items by adding a another (single) item per class and multiple members as child elements. I think it’s not an easy decision what is better. If you keep displaying the arguments for each member the tree is way to wide. If you remove them, you’ll get the same member name and it might look like duplicates. At least for me, it appears that, with an increasing amount of tree items in the future, it might make sense to ā€œgroupā€ members by adding extra tree items and subitems per member. In any case i would remove the class member arguments from the tree items. For some of the items in the methods, the arguments are wider than the monitor. I see that sandcastle added line breaks and displays them in the tree too if they are part of a group. Imho, the arguments are shown in the right column anyway so there is no need for duplication.

Great. I see it works already.

_
c.

Hello,

The new RhinoCommon page seems to be missing the out before the argument.


1 Like

I’ll try to fix this.
https://mcneel.myjetbrains.com/youtrack/issue/WWW-2052/missing-the-OUT-before-the-argument

1 Like

@mkarimi While you are improving the documentation, can you please add a large disclaimer to the old documentation, that it is not up to date any more. If you search in Google it still appears as the top result and nothing on the page suggests that it is outdated. It took me quite a while to figure out what was happening and why it was not working as expected until I noticed the documentation hasn’t been updated since 2017.

You can add a robot.txt file to the old documentation to discourage search engines.

here is what it links to, which is not up to date: InsertBlock

Of course even better would be to create 301 permanent redirects from the old URLs to the equivalent URLs in the new documentation, since that will cause Google to update its result, without loosing the ranking. So in the case of the search above it would use the new URL as the top result. It might be a bit of work, but maybe there is some way to automate the mapping from old to new URLs.

Thanks!

ps: I am aware this is for RhinoScript and not RhinoCommon, but its very much related and I assume you might be in charge of both.

1 Like

I’m only updating the RhinoCommon documentation at the moment. RhinoScript documentation is a separate project that as far as I know we’re not updating.

maybe manage those search-filter optimisation also for the help…

(as this is not API doc…) @Gijs
same for the Rhino help files, google still finds the Rhino 5.0 help without navigation

another potential to improve i found today:
it would be great if the click on the tree for multiple definitions / signatures of a function/ constructor also scrolls to the section …

if I click on the 5th definition of this constructor it would be great to get some scrolling to the corresponding definition.

@mkarimi thanks for your effort - kind regards - tom

Hi Tom, that one is listed in www-2048

2 Likes

But there ARE 2 different versions of the rhinoscript documentation.

Old: InsertBlock

New: Rhino - RhinoScriptSyntax

As far as I can tell the old one is not updated since 2017.

In my opinion, you could:

  • put a disclaimer on the old pages saying it is outdated (OK)
  • put a link to the updated version (better)
  • create 301 redirects from the old to the new documentation (best), so the Google Results actually update without losing their ranking

The links are actually very similar, so you can’t actually tell from the URL which is the old and new documentation.

The new documentation is fine as it is - this is about not having very outdated information on developer.rhino.com.

Thanks for fixing or forwarding it to the team that can do that.

Hi @seltzdesign,

The links to InsertBlock help are for two different APIs. That is, RhinoScript (VBScript) is not the same as rhinoscriptsyntax (Python).

The rhinoscriptsyntax API is a set RhinoScript-like function, written in Python using RhinoCommon, that were intended to help those migrating from legacy VBScript.

And rhinoscriptsyntax is open source. Here is the code:

– Dale

1 Like

Thanks @dale I didn’t realize that at all! Thanks for the clarification! Maybe the old docs could get some kind of header and footer where this could be clarified.

I think it’s also a UX issue with the search on Rhino Developer. When you are on the main page for Rhinoscriptsyntax Rhino - Rhino.Python Guides and see the search bar I think it’s fair to assume that you are searching in the Rhinoscriptsyntax. But if you search for ā€œInsertBlockā€ there you get what look like Google Search results and the top result is for the Rhinoscript page for InsertBlock. On that page nothing suggests that you are now in a totally different ā€œRhinoscriptā€. Since the syntax for InsertBlock is basically identical for VBScript and Python you also don’t even think that it might relate to something very different.

It would be nice to have a proper search box where you search only in the current Script language.

I believe having clearer search results and better search options would really help in this regard.

This is fixed now.

2 Likes

There is another more general idea in my mind regarding documentation:
I think it would be super nice / helpful to have a place where the different Development Environments link the same functionality.

An example would be … a bit like this…

Boolean Union
RhinoCommand _BooleanUnion
Grasshopper-Component SoldiUnion
Rhinocommon Brep.CreateBooleanUnion
Rhinoscript (vbs) Rhino.BooleanUnion (arrInput [, blnDelete [, blnManifoldOnly]])
RhinoScript Syntax rs.BooleanDifference(input0, input1)

this would somehow answer all those ā€œwhat s the … equivalent of ā€¦ā€ and would allow easy starting points for new developers or those you switch from one world to the other…
… ok i know it s a lot of work…
It is not super important for me, but when starting programming in Rhino, I often had this kind of question.

4 Likes

Thank you for your quick response! :tada:

the item access info is missing in the new documentation:

this might refer to all collections:
https://developer.rhino3d.com/api/rhinocommon/rhino.geometry.collections

??


thanks for having a look. kind regards -tom

1 Like

Thank you @Tom_P , I filed the issue below and I’ll try to fix it soon.
https://mcneel.myjetbrains.com/youtrack/issue/WWW-2058/Item-property-for-collections