foone,
@foone@digipres.club avatar

wow the autodesk fusion 360 API docs are interesting. it seems like they're trying to see how much documentation they can write without possibly being useful

foone,
@foone@digipres.club avatar

hypothesis: it is possible to over-document something

kkarhan,
@kkarhan@mstdn.social avatar

@foone yes, if your documentation basically includes the entire manpages for every command used...

foone,
@foone@digipres.club avatar

I'm looking at a Profile object. I see it has a property called profileLoops. Oh, handy, maybe I need to look at a ProfileLoop.
I click it, and it tells me that Profile.profileLoops is a read-only property that returns a ProfileLoops.

foone,
@foone@digipres.club avatar

I click, and it tells me ProfileLoops is a collection of ProfileLoop objects.
I click item, it tells me it returns a ProfileLoop object. I click it, and now, and only now, am I looking at a ProfileLoop definition

foone,
@foone@digipres.club avatar

ProfileLoop has no special property, it just contains ProfileCurves.

that's multiple ProfileCurve objects inside a ProfileCurves object which you get from the read only property ProfileLoop.profileCurves

foone,
@foone@digipres.club avatar

I don't think there's any code at the bottom of this stack of turtles.

It's just docs, all the way down.

foone,
@foone@digipres.club avatar

it's weird that the two languages it lets you use are C++ and Python, because this whole API feels like bad java

foone,
@foone@digipres.club avatar

to import an SVG, you get the ImportManager from Application, then call ImportManager.createSVGImportOptions(filename) and then set parameters on that object, then call ImportManager.importToTarget or ImportManager.importToTarget2

foone,
@foone@digipres.club avatar

the one giveaway that this is c++ and not java is that they called it a "manager" and not a "factory"

philpem,
@philpem@digipres.club avatar

@foone clearly it's C++ code written by a former Java dev

foone,
@foone@digipres.club avatar

@philpem it's say that a real programmer can write fortran in any language

so also: a virtual programmer can write java in any language

sampj,
@sampj@hachyderm.io avatar

@foone @philpem
back in college one of my cs textbooks had us writing java in python and I was very displeased

foone,
@foone@digipres.club avatar

oh god this is going to be a significant tarpit

it's at the point where using the API might be harder than just making a script that clicks on items in the GUI because this is terrible

foone,
@foone@digipres.club avatar

I think this algorithm is something like... I don't have the proper latin prefix for this. quintic? it's o(n^5). maybe the next one up. sexic?

trurl,
@trurl@mastodon.sdf.org avatar

@foone sounds downright septic to me

seanb,

@foone "hexed" or "cursed" me ght be less formally appropriate?

foone,
@foone@digipres.club avatar

you know, I think like 9/10ths of why I like json more than xml is just that JSON doesn't support namespaces

revk,
@revk@toot.me.uk avatar

@foone yes:

arrjay,

@foone okay I'll give you that one.

North,
@North@chaos.social avatar

@foone valid

tjradcliffe,
@tjradcliffe@mastodon.scot avatar

@foone For years I asked people on /. why json was better than XML and always got the "it's more compact" answer, which is bogus (it's easy to encode the same information in XML as compactly as in json.) But someone did eventually give me a good answer: you've already got a json parser, 'cause json is basically javascript. You need to pull an XML parser over the wire. But I gotta say something about XML seems to encourage people to use it in the dumbest possible way.

foone,
@foone@digipres.club avatar

this is mainly because I'm annoyed that python's elementree will not round-trip SVG files because it buggers the namespaces in a way that's valid for XML but breaks SVG parsers.

(if you use lxml's etree support, it doesn't do this)

gsnedders,

@foone truly a classic of the genre: “doesn’t actually support XML namespaces”

foone,
@foone@digipres.club avatar

this API was designed by someone with a pathological fear of globals.

you can't just do like createOpenFileDialog
you need to get an app from the adsk.core.Application.get() static method, then get the userInterface from the app, then userInterface has a createFileDialog method which gives you a file dialog you can configure and then open with fileDialog.showOpen()

PeterSommerlad,
@PeterSommerlad@mastodon.social avatar

@foone Singletons are globals in disguise.

foone,
@foone@digipres.club avatar

oh come on, the in-app console has a javascript option? but you can't build add-ons in javascript?

I don't even WANT to make add-ons in js, I'm just pissed that they didn't give me the option

lachlan,
@lachlan@mastodon.social avatar

@foone Somewhere, there's a very satisfied dogmatic engineer and architect, and a team that answers to them complaining about perpetual increase in scope and burnt out on legacy

foone,
@foone@digipres.club avatar

why does importing an SVG reset the viewport

it would almost make sense if it was resetting it to center on the SVG, but NOPE! it centers on nothing in the opposite direction

wildrikku,
@wildrikku@mastodon.gamedev.place avatar

@foone heck yeah that annoyed me SO MUCH. Fusion is great but it is also SO weird

foone,
@foone@digipres.club avatar

these people were definitely paid by the class

derryh,
@derryh@mastodon.scot avatar

@foone it appears that you may have stepped in some Enterprise Java.

foone,
@foone@digipres.club avatar

@derryh that's the thing! It deeply smells like Java, but that's not one of the three languages used here

me,
@me@cysioland.pl avatar

@foone I wonder if that was the case at my work

foone,
@foone@digipres.club avatar

you can't just have an AddItem method on the DropDown class. You can't even have a DropDown.items property that returns a generic list.

Nope. It's gotta be a ListItems class, which is specific to DropDowns

foone,
@foone@digipres.club avatar

It's great because a lot of these classes are just wrappers of collections and Python is one of the official languages supported by their add-on API but they don't appear to have considered making them more usable by python

foone,
@foone@digipres.club avatar

actually, no! they are slightly more usable than I thought.
you CAN natively iterate them, it's just you can't if they're slightly more complicated than a list wrapper

trurl,
@trurl@mastodon.sdf.org avatar

@foone could it have been generated from UML or some XML schema?

AnonymooseGuy,
@AnonymooseGuy@mas.to avatar

@foone
See, this is why I follow you. I'm retired for, like, 10 years now and you articulate, ever so agonizingly, the same absolute frustration that any developer, ever, had to endure trying to write anything functional without saying "Fuck it! I'll do it in assembly. I'll make my own, damn, API. Callable by whatever language I want. Piss off!"

foone,
@foone@digipres.club avatar

oh my sweet banana flavored jesus

the GUI shows sizes like 2.25"
the JSON dump of the tool info says "2.25 in"
the API says 5.715 (unitless)

that's centimeters.

foone,
@foone@digipres.club avatar

this would be fine (keeping the same units throughout in code makes a lot of sense), except THE FUCKING API ALREADY HAS A NUMBERS-WITH-UNITS wrapper. It could have just given me a value that knew it was in inches and transparently converted to centimeters if I wanted centimeters!

foone,
@foone@digipres.club avatar

and I'm having to show a list of tools to the user, and the ones they normally see in the UI are specified in inches, because they are american tools. This means that when I try to print their sizes as-is, I don't get "0.25inches", I get 0.3169463409805995 because IT DOESN'T CONVERT TO A NICE EVEN NUMBER OF CENTIMETERS

foone,
@foone@digipres.club avatar

like my favorite silly fact about floppy disks:
5.25" disks and 8" disks are that size. 3.5" disks aren't. They're 90mm disks.
(5.25" and 8" were designed by americans, 3.5"/90mm disks were designed by a japanese company)

pointingdevice,

@foone Even worse, in Microsoft Office's custom open/save dialogs they used to be localized as 8.89 cm disks.

foone,
@foone@digipres.club avatar
foone,
@foone@digipres.club avatar

the worst part is that it's not even actually specced as 0.25" and it's not shown that way in the GUI.
The normal GUI, which I can't use, says it's a 1/4" bit.

So fusion 360 already contains code to display these tools in a "pretty" manner, it just won't let me access it. So I have to rebuild that

foone,
@foone@digipres.club avatar

the other fun thing is that I'm sorting through tools and I'm afraid my metadata doesn't contain if they're upcut or downcut. that's a pain, but I only have a small number of tools, surely I can cross-reference with the manufacturer?

yeah, and they indicate if they're upcut or downcut... for 3 out of the 5 tools

foone,
@foone@digipres.club avatar

good for the Fusion360 team for making their Point3D class return a status value along with the x,y, & z coordinates.

You know, just in case GETTING A COORDINATE FROM A POINT fails

foone,
@foone@digipres.club avatar

to be fair, I think this is mainly because their python wrapper is auto-generated from the C++ API.

foone,
@foone@digipres.club avatar

the C++ API looks like:

boolean result = point.get(&x,&y,&z);

which is only a minor WTF

foone,
@foone@digipres.club avatar

but when they converted it to python, it's now:
result, x, y, z = point.get()

zombierustpunk,
@zombierustpunk@hachyderm.io avatar

@foone so you’re saying that extra result returned is… point-less?

foone,
@foone@digipres.club avatar
foone,
@foone@digipres.club avatar

I'm now getting the error "object is not in the assembly context of this component" and I google it and there's one reply and they've got a solution but I don't understand it but they link the manual and I don't understand it and I keep closing my eyes and seeing the forest and the deer looks up and whispers "join us"
it's so quiet and dark

foone,
@foone@digipres.club avatar

the manual is like "the problem is that these two highlighted faces are actually the same face, but you can modify them separately in the GUI using proxies".

the way to fix it is to half-press A and then spend 12 hours building up speed until your de-facto speed matches your syncing-speed and you can execute a QPU movement that'll put you in a parallel universe but you have to avoid QPU misalignment and my ears are bleeding

stilescrisis,
@stilescrisis@mastodon.gamedev.place avatar

@foone I never realized Fusion360 was set in the Mario 64 universe

foone,
@foone@digipres.club avatar

hey autodesk how do I move this component?

autodesk: well the component knows where it is at all times. it knows this because it knows where it isn't. by subtracting where it is from where it isn't, or where it isn't from where it is (whichever is greater), it obtains a difference, or deviation.

thanks, great, really helps

petrillic,
@petrillic@hachyderm.io avatar

@foone it's like paying for stack overflow

Cube,
@Cube@mastodon.social avatar

@foone you are doing infinitely better that me with f360 if it's any consolation to you. the whole workflow it wants where you have to basically define everything of a shape via its relation to every other shape before the shape actually exists is completely incompatible with my brain and i immediately give up and go back to moi3d

foone,
@foone@digipres.club avatar

the answer apparently was that I need to use the right moveFeatures. See, it's not just a factory method and you can just use the design.rootComponent.moveFeatures, you should make a moveFeatures out of the component you're moving.

ComradeGibbon,

@foone Friend of mine wrote a text conversion tool for autodesk maybe 25 years ago. Unless it's changed, bet it hasn't, everything about object position and rotation is a trashfire.

richardtroupe,

@foone Ah, the Derridean approach.

thorsummoner,

@foone reads like sourcesdk docs. player.set_position (vec3f) // sets the player's acceleration vector

great, so. how do I teleport the player? afaik it cannot be done without making your own sourcemod and compiling hl2 yourself

PPrinplup,
@PPrinplup@mastodon.social avatar

@foone The fuckin' missle pasta lmao

curtmack,

@foone This is me every time I try to learn a "real" GUI CAD tool, and inevitably fall back to OpenSCAD.

The only thing a FreeCAD offers me over OpenSCAD is constraint solving and Bsplines, and with enough hacking I know I can get those too.

realtime,
@realtime@fosstodon.org avatar
foone,
@foone@digipres.club avatar

@realtime exactly

ellie,
@ellie@ellieayla.net avatar

@foone Goddess, do you think the Point could have been a namedtuple?

(x, y, z) = point;

foone,
@foone@digipres.club avatar

@ellie that would require someone caring about the python interface and not just auto-generating it out of the C++ code

ellie,
@ellie@ellieayla.net avatar

@foone siiiiiiigh.

hcasler,

@foone ROOT has an extremely similar one for getting the maximum bin in a histogram... sadly the Python binding doesn't fix it in ROOT's case

petealexharris,
@petealexharris@mastodon.scot avatar

@foone
Returns false if "there is no 'there' there"

mansr,
@mansr@society.oftrolls.com avatar

@foone And they're not floppy either. So many lies.

lumecolca,
@lumecolca@kolektiva.social avatar

@foone
Did nobody learn anything from the Mars Climate Orbiter?

agius,

@foone this is how you lose your Mars Climate Orbiter

niarbeht,
@niarbeht@kolektiva.social avatar

@foone this is all starting to sound like something i wrote during crunch while blasted on energy drinks and battling the resulting chest pain

lewiscowles1986,
@lewiscowles1986@phpc.social avatar

@foone adsk sounds mighty like a global... Check-mate 😂😉

fluffy,

@foone sounds like someone has gone down the deep end of "proper" enterprise Java

foone,
@foone@digipres.club avatar

@fluffy yeah that's the thing! every part of this smells like java, but there's no java here. just python, C++, and js

fluffy,

@foone I've definitely seen plenty of C++ code written by former Java devs who thought that C++ and Java were "the same as each other" and it's usually pretty janky. Never seen it go fully down the BuilderBeanBuilderFactory hole though.

LionsPhil,

@foone Static method? That's just a global in disguise!

humbird0,

@foone
Yeah, namespaces kind of suck. If you ever try to create an XSLT template, it's not so bad... right up until you run into a namespace and then a whole new world of debugging pain opens up for you. Because it either works, or it doesn't. There is no in-between.

davidalexlamb,

@foone quintic is right, according to Wikipedia. Next up is sextic. TIL that O(n^7) is "septic" which strikes me as funny.

wonka,
@wonka@chaos.social avatar

@davidalexlamb like in "septic tank"? @foone

jjlupa,
@jjlupa@discuss.systems avatar

@foone I find when you generate your doc from annotations in code, and combine that with template and lambda concepts, the generated doc becomes thoroughly unusable. Extension methods can get ugly too if there are enough of them.

wonka,
@wonka@chaos.social avatar

@foone naah, that feels like .NET, only it's not Hungarian Notation.

lbehm,

@foone I don't know details about autodesk, but this sounds somewhat like a legacy codebase that was created in Borland C++ times. They always had this horrible Delphi-Runtime, that sounds like .Net, feels Java-ish, has horrible almost-nonexistent generics and infects many derived APIs with lots of anti-patterns. These codebases adopted python runtimes later on.

ShadSterling,

@foone I’ve gotten the impression that people who learned C++ in the last 20 or 25 years use it like “Java with pointers”. I liked it better as “C with classes”

ignaziop1977,

@foone matches the style of java code generated by WSDL tools like xjc

static,
@static@aus.social avatar

@foone Object-oriented design taken perhaps a bit too far. Also sounds XML-ish.

mjgardner,
@mjgardner@social.sdf.org avatar

@foone See also: scripting dictionaries

foone,
@foone@digipres.club avatar

@mjgardner oh god. I had to do applescript scripting at a previous job and I still have scars

jw,
@jw@social.stlouist.com avatar

@foone what's past is present

emily,
@emily@sparkly.uni.horse avatar

@foone are you familiar with the automatic documentation writer tools that are/were popular for a while in Very Enterprisey companies? This was years before the current LLM fad, so the results were a much more profound level of uselessness: https://blog.submain.com/ghostdoc-says-the-damndest-things/

stuckatthisbit,

@foone I’m feeling this, I’ve been struggling with learning Solidworks and I feel like I have an acquired brain insult

niarbeht,
@niarbeht@kolektiva.social avatar

@foone One of these days you need to get your hands on a PAL LSI autosampler and read their example code and weep at the layers of nonsense.

mansr,
@mansr@society.oftrolls.com avatar

@foone Did they hire a fandom.com editor for the job?

petrillic,
@petrillic@hachyderm.io avatar

@foone may i point you to the ecad part of the docs and ulps?

so much screaming at the computer.

betoniusz,
@betoniusz@101010.pl avatar

@foone to be fair, 360 can mean full circle or in other words, you end in a place where you started.

Sounds like the API docs were written with the "360" in their DNA ;)

r343l,
@r343l@freeradical.zone avatar

@foone to be fair, there is strong and robust competition in the category of extensive but nearly unusable documentation. Gotta keep up with competitors!

dstndstn,
@dstndstn@hachyderm.io avatar

@foone adversarial documentation

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • Durango
  • DreamBathrooms
  • ngwrru68w68
  • modclub
  • khanakhh
  • magazineikmin
  • mdbf
  • Youngstown
  • rosin
  • slotface
  • everett
  • kavyap
  • GTA5RPClips
  • tacticalgear
  • megavids
  • thenastyranch
  • tester
  • cubers
  • osvaldo12
  • InstantRegret
  • cisconetworking
  • normalnudes
  • provamag3
  • anitta
  • ethstaker
  • Leos
  • JUstTest
  • lostlight
  • All magazines