Mostly, I only need to finesse a currently makeshift UI/UX. There are a few options that I have built in that should be optional.
When moving from Alpha to Beta I will attempt to adopt the Speckle UI properly but may lean on The Specklers™ for help with that.
Call for contributions
In the meantime, I’m looking to source NWDs for test conversions to a collaborative stream. By test, I mean also looking for help with the review of the conversions.
If you can share anything, you would then be happy (and permitted) to:
try downloading to Blender/Rhino/Notion etc.
I propose to assemble a closed stream and add all who offer submission as collaborators. This is my best attempt at reaching wide for material that is ok to be shared. I have plenty of my clients’ material but can’t really share them.
I hope this is of interest to folks.
I share a lot on Twitter but would like to keep this between us for now.
Don’t fret, my Windows are activated - it’s a BootCamp thing.
Nothing specific, and can be as simple or as tricky as you like.
As a caveat, solids convert but not linework geometry; embedded CAD will be discarded and not added as cruft. I have stress-tested the conversions a bunch (Big models === Slow) and sadly still experience occasional inexplicable crashes ¯\(ツ)/¯. Because Navis models are always from someplace else, sometimes odd quirks arise that need ironing out.
Essentially, If you share an example file(s), I’ll run a few different conversions from the options UI I’m still working on:
full conversion (again, big can be a pain)
by selection sets
by search sets,
colour overrides (temporary or permanent),
move-to-zero or real location.
All these are working just need to convert from flags embedded in code to sensible UI options.
I’ll make a branch per contribution and probably sub-branches to that which describe what selection or transformation options have been applied. Using all the Speckle commenting goodness.
I have another thread where I have been thinking in public about what the object model should be and have settled on something I think works well (based only on my own needs for data QA really)
If you have other ideas - I’m also gathering those and super keen to receive them too.
DM me to share links here or jonathon @ stardotbmp . com
Count me in with the testing! im based in Chile so i can provide nwds federated from some of the most used softwares around here. have been thinking for a while on how speckle could help with AWP in some mining projects im part of.
Thanks to @Ricardo_Zepeda’s contribution, I have found a bunch of places where the conversion is broken. Obviously, that sucks in some ways but is AWESOME in others.
The nature of the suckage is problematic:
After quite a lot of digging (some of it in unofficial sources), most errors appear to stem from ADSK’s own .NET wrappers around its legacy COM interface to the underlying code.
It seems it is suffering from pre-emptive garbage collection. This may explain why all the errors are associated with memory access. If an object has been garbage collected, it is logical that accessing its properties will no longer be possible…
When the conversion routines were simple loops, this wasn’t occurring as garbage collection while debugging is less vigorous/strict to allow for stack traces to work etc. When trying to improve efficiency with multithreading, it becomes a bigger issue - or worse, occurring in Release, not Debug, with no other changes.
Solution (attempt 1)
I am porting the conversion to use more and more of the crusty old COM API ¹. Handling the GC better and using more primitive types. This is with 2 objectives in mind:
Yeah, you ARE right; it’s one last roll of the dice.
Thing is, the APIs are semi able but unstable, some work and some don’t. Those that don’t fail hard so it’s not worth trying. Some that do sometimes (property reads for example) are tantalisingly close to making it worth trying and for the times that the call fails falling back to a main thread read.*
As you might know, iterating over 1000s of nested objects is slow. Multi-threading massively helps of course.
If this doesn’t work (the example loop is kinda dumb) I’ll abandon it for the alpha and open the hacky code to y’all and the internet to help.
For now I’m bitten by the “I will make it work, I must” bug.
I may have been “inspired” by some code I may have seen using dotPeek. But of course I’ve never heard of it.