Hi Bentraje, thanks for following up and sorry for coming late here.
I've checked your geometry and the issue is not with the algorithm, but in both cases with the geometries you're using to compute the area who don't shown vertexes being properly "ordered".
The algorithm I've briefly presented requires the vertexes to be ordered as if you're visiting them by walking on the outer edge of your n-gon or polygon in CCW or CW. It is then mandatory to generate an ordered list of vertexes before passing the data to the function to get the correct result.
In order to come out with such an ordered list I warmly recommend you to visit the following old-threads:
Get all ngons
Get outer edges of each Ngon
no worries, this question was not exclusively targeted at Maxon, the opposite is the case. I was hoping for some information by other users here, like @kbar or even @m_adam (back in the days Maxime was not associated with Maxon. ;))
Meanwhile, I'm going to build a toolchain and see what works for me. I'll report back here if I have something to show. That may help someone else.
I'm trying to use this super handy plug-in to build help system for my plug-ins.
Thanks for sharing this!
After some days of working i have a some suggestions and bug reports.
After each publishing, resulting index.html have a title tag "Plugins 4D Documentation".
Is it possible to add ability inserting images with other formats like gif, jpg? Now i have to copy my images to images folder and type using markdown code like this (not showing in Preview window):
![Target 4D Move tool](images/mikeudin-target4d-feutures_5.gif "Target 4D Move tool")
Preview window stops showing any text content if it contains symbol '–'. But after publishing results, final HTML is ok.
Would be great to add ability to add favicon image.
Hi @SteveJLV welcome in the plugincafe community,
I would like to point you to some rules:
Read Before Posting. Nothing wrong here, but just in case.
Q&A New Functionality. I've setup your topic correctly.
As you already figured it out, you never assign a new value to the variable. In Python, everything is passed by value by default in 90% of the time.
Meaning when you do x = y will actually copy y to x, so afterward if you do x + 10 it will not affect y value.
If you have more questions, don't hesitate.
I'm sorry for getting back late to you.
We have never done this ourselves nor have we heard of anyone.
The reasons for the difference between C++ and Python API are probably historic. Also back then we had no generic concept for callbacks in Python. Now, with MAXON API and appearance of Delegates and Observables such things will probably handled much nicer in future. Maybe it were also performance considerations.
Many words, for a "I don't know", sorry.
In any case we'll forward this a an idea to our development, so it is at least considered for a future release.
no worries, the first line is so big because of a stray "=" on the next line, underlining the first to be interpreted as a heading.
I'll move this thread to the General Programming & Plugin Discussions category, because in the end C4D does not provide any means to provoke UAC, nor do we deem it necessary inside our API as it is a pretty system specific thing. Yet, the discussion might lead back to C4D related questions, and then I'll either happily move it back or we'll have a new thread in the Cinema 4D Development category.
In general I think, it would probably be better to convince your users to install the plugin into either the plugins folder in the "user folder" or even (assuming R20+) a completely separate directory added to the users prefs.
Another thought, while definitely possible with Python, I'd say an update mechanism should change/replace files while the main application is running. After all you can not be completely sure, which files the application decides to lock at certain points off time, in which case your updater would probably run into issues. My recommendation is to rather update by restarting the main app (for C++ it's inevitable anyway).
CallCommand() is exactly the same as a user choosing a command from the menu or clicking a palette button. So, indeed using CallCommand() most likely involves the creation of an undo step, and there no means to avoid. So, as soon as your code creates additional custom undo steps or makes use of CallCommand() multiple times, multiple undo steps are inevitable.
The only workaround would be to do the work done in a command manually. For certain commands it may be easily achievable as the API provides functions toi achieve the same directly, for other (and unfortunately most) commands it will involve more work, up to the point of re-engineering the internals of one of our commands.
This does not belong here. This site is about developing plugins and the SDK in general.
You may want to visit the support website
By the way, if you own C4D R15, you already have TeamRender available. Just run your installation disc on a node of your choice and select TeamRender Client.
Hi Shir, thanks for following up and providing your additional info.
Showing parameter in the Attribute Manager or a custom icon in the Object Manager is not such a big issue: you can start looking at Py-RoundedTube which is an ObjectData derived plugin where all such a stuff (and more) is shown.
That said, the real question is instead to understand what your rig is actually doing and see if it's reasonable to implement the Xpresso functionality from a set of "primitive" functions you implement in your plugin or if would be instead easier to programmatically recreate the Xpresso rig in an XpressoTag then attached to the object generated by your plugin.
Actually this assessment can't be done from here where the final functionality and the complexity of your Xpresso network is unknown.
So far I do see three approches:
start on your own, step-by-step, dissect the code from the example I mentioned above and try to move your steps alone
outsource the task to some paid developer
call for volunteers in our very helpful PluginCafe community.
I'm sorry not be more helpful but, as said in the first post, we can't deliver turn-key plugins or scripts but rather help our customer to learn from our resources.