architecture-building-systems / revitpythonshell

An IronPython scripting environment for Autodesk Revit and Vasari
MIT License
517 stars 118 forks source link

CPython for RevitPythonShell? #103

Open fbe-work opened 4 years ago

fbe-work commented 4 years ago

If I understood @eirannejad correctly, CPython could find its way into the wonderful RevitPythonShell in a similar way as it did into pyRevit.

This would bring multiple benefits, imho:

And since Python2 is officially dead ( https://pythonclock.org/ - not even security patches anymore) and IronPython3 discontinued as I read on their repo, this would be a great shift.

What are your thoughts on this, @daren-thomas , @eirannejad ?

CyrilWaechter commented 4 years ago

and IronPython3 discontinued as I read on their repo

Where do you see it is discontinued ? Last commit is 4 days old (https://github.com/IronLanguages/ironpython3/commit/f0d3aced2f675a534869458e0b2db47cf4a90edc).

fbe-work commented 4 years ago

Ah? Did they find a new maintainer? Or did the former decided to continue? That is good to hear - so let's scratch the IronPython3 issue then.

But I would say the other points are still valid.

daren-thomas commented 4 years ago

@hdm-dt-fb how does this CPython connection work? where can I read more?

fbe-work commented 4 years ago

@eirannejad pointed me to this location: https://github.com/eirannejad/pyRevit/blob/df9f4d01f86879518506328b15474947f3b4e18d/pyrevitlib/pyrevit/loader/basetypes/baseclasses.cs#L218

which I read, but I am unfortunately clueless where and how this would connect to RPS.

@eirannejad elaborated on it: " It’s pythonnet dotnet module that has wrappers around the python3X.dll and executes the script with bindings to Revit API. pythonnet has defined wrappers in c# for all the python datatypes to mimic the behaviour. It also has defined c# function wrappers around all the python api in python3x.dll The clr module and the UIApplication are key. With all these wrappers, when these datatypes are passed to python api, python will be able to process then like normal python objects So bulk of the magic is in PythonEngine.Exec " but I am unfortunately not enough C#-enabled for this, it seems. Of course I would love to help/contribute on the Python side of it.

talisman commented 2 years ago

Is this something that is planned ? CPython3 via pythonnet ?

Ianhuuuuang commented 2 years ago

您好,邮件已收到,尽快给您回复。