I would like to create something like the image below because I don’t want users to have access to the formulas.
has anyone created something similar, or know how to develop this password and window system to hide attributes?
thanks a lot
I fear this is not possible. And there might be conceptual problems with this idea.
As I understand, you want to distribute the dynamic component to users, so that the users can have the dynamicity of the component (interact/customize/animate it), but not reverse-engineer it and re-use your attributes.
In the case of dynamic components, the formulas are a sort of “programming language” and the program interpreter is the dynamic components SketchUp extension. For being able to make the dynamicity work, it needs to read the attributes, for which it would need the decryption key (or password) which you don’t want users to have. But the extension does not even support encryption/decryption.
- ✗At most, you could obfusecate, but not encrypt the attributes. That means you make them hard to understand by users so that nobody can make sensible use of them. This can be achieve by making names of random characters, or by making the formulas nested and complicated. I would advise against this because it make it harder for you to maintain the formulas.
- ✗You could create your own dynamic formula language that supports encryption, and your own dynamic components extension. Users would have to install it. This would be a huge effort, a new type of component incompatible with existing dynamic components and you would need a lot of marketing to achieve a critical mass.
- ✓ You could only distribute your dynamic components to paying users, and only non-dynamic versions to free users (with all attributes removed).
- ✓ Your intellectual property and business model should be something else that you can better protect (e.g. the tools how you develop components, or professional user support) so that users can deliberately see your formulas but not compromise your business model.
Dynamic Components have not been (other than minor) updated for a very long time, alas probably never, thanks to live components.
You could create Ruby scripts that work with DCs, so some of the functionality can be done only with your custom tools, this can mean simpler DCs where materials, door styles, swaps, etc are separate ruby functions. A hybrid model where the client receives and creates simple DCs and pays for the extension.
Thank you so much for the answers
I’m still analyzing the options you suggested.
I’m working in a furniture factory and sketchup is the basis for creating MDF furniture.
Starting over a new system, with other software would be a long-term option.
The idea of protecting attributes is really to avoid reverse engineering, as @Aerilius wrote, not for internal use, but for selling technology developed to smaller woodworkers, or architectural offices.
I’m studying the possibilities. I thought it was a commercial waste not to have this type of encryption in sketchup. I hope that similar features appear in future versions, or a store system in the warehouse.
@pcmoor I don’t know about Live Components yet, and developmental differences. I’ll study about it
Finding a way, I’ll tell you guys about.
thank you so much for all knowledge
I don’t think you’ll be able to avoid reverse engineering by protecting DC attributes. I’ve seen examples of products made in China that were clearly reverse engineered from SketchUp models I created for a client who put them in the 3D Warehouse.
Yea! this is the main problem…
This could also be a feature request for sketchup, but it looks like the developers aren’t working on DC anymore
the idea of the store implemented in the warehouse would be a solution for this (but it would be something that depends on the Trimble Team), because now, all components in the warehouse are editable, but it could have a Shareware, Trial Software,Freeware system, etc and protected data
- I even tried to put the attribute formulas in a google sheet, with links that would direct to the lines of this document, but I believe that if it were possible, it would also give an error because the document would be protected
My point is if you make a 3D model publicly available, it’s wide open. Protecting the DC attributes won’t prevent reverse engineering of the product.
3D PDF is perhaps the 3D format that can be best protected but even that can be reverse engineered by importing it into applications that support it.
Anything that a dynamic component’s attributes and formulas are capable of doing can be done by editing the component with regular SketchUp tools.
yes, but this is a limitation of Sketchup, right?
and I think it would be a simple option for Trimble to do. Dc’s in the same file in sketchup could be blocked or not.
3D being available is not a general rule. Some files are just .exe, for example, but they don’t give access to the source code.
(Of course, a hacker can undo everything, but this is already an advanced security discussion).
I also thought that a black/white window, which overlapped the attributes window, following the position, would already work for the general public. But a Ruby developer would undo this.
Do you see any difficulties in this, or problems that would cost Trimble a lot to develop? It could be that I am really demanding something very complicated and I would like to understand why.
thanks all for joining this thread
No. The software used doesn’t matter. If you are supplying 3D models you are making it easy for others to reverse engineer the product. The less information you provide, the more difficult it is for someone to copy the object.
This is not a SketchUp problem.
Then SketchUp better not have the attributes window? But it would still have attributes. Security by obscurity?
You have to accept some truths and not tie your hope to a specific solution.
- Data that you distribute publicly is out of your control and can be used by the recipients.
There is no work-around like packing it into some file that you don’t know how to decompile (like an exe) because after all the data must still be inside for being displayed. People even intercepted their graphics card to grab models and textures, because, after all, the graphics card must have access to it for display.
- Code encryption is by principle not really possible, because for being able to execute it, instructions must be decrypted to some degree, which means distributing decryption keys. This is not a limitation of SketchUp alone, and not a feature one can request.
What one can do:
- Make it hard to re-use the data that you distribute: A model that is stripped from all advanced geometric features (all geometry exploded and triangulated, no true circles) and metadata (no attributes, IFC classifications) can still be used for fake adverts but not for constructing a real building. Software source code that is obfuscated (or compiled to machine code) can still be reverse-engineered with lots of guess-work, but often the cost and effort are not worth it. Some software is even so complex and badly written, that it can be published in clear text and nobody other than the original developers are interested in spending time to understand it.
Not distribute the really valuable data. Decide what to distribute and what not. For example live components do neither include code nor formulas on the client side how they were generated, just minimal IDs that allow the server to recognize them and compute a new version. The unprotected data is a frozen view of component and the protected data is the code for generating it never leaves the server.