discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Running Fullcontrolgcode inside Open(Python)SCAD

WF
William F. Adams
Tue, Dec 16, 2025 12:29 AM

For folks who are not familiar with this tool, it is a program for directly programming the movement and extrusion of a 3D printer:

https://fullcontrolgcode.com/

originally, it was an Excel spreadsheet, but it has since been re-realized as a Python module.

My thought was to leverage it in PythonSCAD so as to not have to write a lot of code specific to managing the intricacies of 3D printers in my project:

https://github.com/WillAdams/gcodepreview

which would then have the advantage over the current user interface/usage of fgc of offering an immediate preview of a 3D surface, without the need to either work from a wireframe/plot of the 3D printer's extruder movement or to write out a G-code file and then load it into a tool such as Prusa G-code Viewer:

https://help.prusa3d.com/article/prusaslicer-g-code-viewer_193152

unfortunately, while I can load and run this tool in Idle successfully, PythonSCAD is unable to access the installed libraries successfully, failing with:

    File "C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\pydantic_core_init_.py", line 6, in <module>
        from typing_extensions import Sentinel

    ImportError: cannot import name 'Sentinel' from 'typing_extensions' (unknown location)

Does anyone have any thoughts or suggestions?

I've been searching and trying various suggestions unsuccessfully for most of the weekend....

William

-- 
Sphinx of black quartz, judge my vow
https://designinto3d.com/

For folks who are not familiar with this tool, it is a program for directly programming the movement and extrusion of a 3D printer: https://fullcontrolgcode.com/ originally, it was an Excel spreadsheet, but it has since been re-realized as a Python module. My thought was to leverage it in PythonSCAD so as to not have to write a lot of code specific to managing the intricacies of 3D printers in my project: https://github.com/WillAdams/gcodepreview which would then have the advantage over the current user interface/usage of fgc of offering an immediate preview of a 3D surface, without the need to either work from a wireframe/plot of the 3D printer's extruder movement or to write out a G-code file and then load it into a tool such as Prusa G-code Viewer: https://help.prusa3d.com/article/prusaslicer-g-code-viewer_193152 unfortunately, while I can load and run this tool in Idle successfully, PythonSCAD is unable to access the installed libraries successfully, failing with: >    File "C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\pydantic_core\__init__.py", line 6, in <module> >        from typing_extensions import Sentinel > >    ImportError: cannot import name 'Sentinel' from 'typing_extensions' (unknown location) Does anyone have any thoughts or suggestions? I've been searching and trying various suggestions unsuccessfully for most of the weekend.... William --  Sphinx of black quartz, judge my vow https://designinto3d.com/
P
pca006132
Tue, Dec 16, 2025 12:45 AM

PythonSCAD, from my understanding, bundle its own CPython. So system
packages will not work directly.

On Tue, Dec 16, 2025, 08:30 William F. Adams via Discuss <
discuss@lists.openscad.org> wrote:

For folks who are not familiar with this tool, it is a program for
directly programming the movement and extrusion of a 3D printer:

https://fullcontrolgcode.com/

originally, it was an Excel spreadsheet, but it has since been re-realized
as a Python module.

My thought was to leverage it in PythonSCAD so as to not have to write a
lot of code specific to managing the intricacies of 3D printers in my
project:

https://github.com/WillAdams/gcodepreview

which would then have the advantage over the current user interface/usage
of fgc of offering an immediate preview of a 3D surface, without the need
to either work from a wireframe/plot of the 3D printer's extruder movement
or to write out a G-code file and then load it into a tool such as Prusa
G-code Viewer:

https://help.prusa3d.com/article/prusaslicer-g-code-viewer_193152

unfortunately, while I can load and run this tool in Idle successfully,
PythonSCAD is unable to access the installed libraries successfully,
failing with:

File

"C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\pydantic_core_init_.py",
line 6, in <module>

    from typing_extensions import Sentinel

ImportError: cannot import name 'Sentinel' from 'typing_extensions'

(unknown location)

Does anyone have any thoughts or suggestions?

I've been searching and trying various suggestions unsuccessfully for most
of the weekend....

William

--
Sphinx of black quartz, judge my vow
https://designinto3d.com/


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

PythonSCAD, from my understanding, bundle its own CPython. So system packages will not work directly. On Tue, Dec 16, 2025, 08:30 William F. Adams via Discuss < discuss@lists.openscad.org> wrote: > For folks who are not familiar with this tool, it is a program for > directly programming the movement and extrusion of a 3D printer: > > https://fullcontrolgcode.com/ > > originally, it was an Excel spreadsheet, but it has since been re-realized > as a Python module. > > My thought was to leverage it in PythonSCAD so as to not have to write a > lot of code specific to managing the intricacies of 3D printers in my > project: > > https://github.com/WillAdams/gcodepreview > > which would then have the advantage over the current user interface/usage > of fgc of offering an immediate preview of a 3D surface, without the need > to either work from a wireframe/plot of the 3D printer's extruder movement > or to write out a G-code file and then load it into a tool such as Prusa > G-code Viewer: > > https://help.prusa3d.com/article/prusaslicer-g-code-viewer_193152 > > unfortunately, while I can load and run this tool in Idle successfully, > PythonSCAD is unable to access the installed libraries successfully, > failing with: > > > File > "C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\pydantic_core\__init__.py", > line 6, in <module> > > from typing_extensions import Sentinel > > > > ImportError: cannot import name 'Sentinel' from 'typing_extensions' > (unknown location) > > Does anyone have any thoughts or suggestions? > > I've been searching and trying various suggestions unsuccessfully for most > of the weekend.... > > William > > -- > Sphinx of black quartz, judge my vow > https://designinto3d.com/ > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
WF
William F. Adams
Tue, Dec 16, 2025 1:02 AM

On Monday, December 15, 2025 at 07:45:14 PM EST, pca006132 john.lck40@gmail.com wrote:

PythonSCAD, from my understanding, bundle its own CPython. So system packages will not work directly.

I seemed to be having success manually installing packages into:

C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries

but then I started getting the afore-mentioned error message.

Is there any documentation on how to install libraries for the CPython?

I saw that there was a .zip archive, python312.zip which seemed to have libaries in it, but renaming that so that it wouldn't be loaded doesn't seem to have changed anything.

William

On Monday, December 15, 2025 at 07:45:14 PM EST, pca006132 <john.lck40@gmail.com> wrote: >PythonSCAD, from my understanding, bundle its own CPython. So system packages will not work directly. I seemed to be having success manually installing packages into: C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries but then I started getting the afore-mentioned error message. Is there any documentation on how to install libraries for the CPython? I saw that there was a .zip archive, python312.zip which seemed to have libaries in it, but renaming that so that it wouldn't be loaded doesn't seem to have changed anything. William
P
pca006132
Tue, Dec 16, 2025 1:37 AM

Do you have typing_extensions installed there? I think you have to
manually manage the dependencies, because there is no pip here. I am not
familiar with CPython though, so maybe there is a better way.

On Tue, Dec 16, 2025 at 9:02 AM William F. Adams willadams@aol.com wrote:

On Monday, December 15, 2025 at 07:45:14 PM EST, pca006132 <
john.lck40@gmail.com> wrote:

PythonSCAD, from my understanding, bundle its own CPython. So system

packages will not work directly.

I seemed to be having success manually installing packages into:

C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries

but then I started getting the afore-mentioned error message.

Is there any documentation on how to install libraries for the CPython?

I saw that there was a .zip archive, python312.zip which seemed to have
libaries in it, but renaming that so that it wouldn't be loaded doesn't
seem to have changed anything.

William

Do you have `typing_extensions` installed there? I think you have to manually manage the dependencies, because there is no pip here. I am not familiar with CPython though, so maybe there is a better way. On Tue, Dec 16, 2025 at 9:02 AM William F. Adams <willadams@aol.com> wrote: > On Monday, December 15, 2025 at 07:45:14 PM EST, pca006132 < > john.lck40@gmail.com> wrote: > > >PythonSCAD, from my understanding, bundle its own CPython. So system > packages will not work directly. > > > I seemed to be having success manually installing packages into: > > C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries > > but then I started getting the afore-mentioned error message. > > Is there any documentation on how to install libraries for the CPython? > > I saw that there was a .zip archive, python312.zip which seemed to have > libaries in it, but renaming that so that it wouldn't be loaded doesn't > seem to have changed anything. > > William >
WF
William F. Adams
Tue, Dec 16, 2025 1:44 AM

On Monday, December 15, 2025 at 08:37:30 PM EST, pca006132 john.lck40@gmail.com wrote:

Do you have typing_extensions installed there? I think you have to manually manage the dependencies, 
because there is no pip here. I am not familiar with CPython though, so maybe there is a better way.

Yes, there is:

"C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\typing_extensions\typing_extensions.py"

which compiled to:

"C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\typing_extensions_pycache_\typing_extensions.cpython-312.pyc"

I had assumed that if there was a dependency I'd get an error message noting the lack of one --- that's how I started w/ pydantic --- it wanted pydantic_core, then that wanted typing_extensions, which is loading, but isn't making the "Sentinel" object causing the error as noted initially:

    File "C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\pydantic_core_init_.py", line 6, in <module>
        from typing_extensions import Sentinel
    ImportError: cannot import name 'Sentinel' from 'typing_extensions' (unknown location)

William

On Monday, December 15, 2025 at 08:37:30 PM EST, pca006132 <john.lck40@gmail.com> wrote: >Do you have `typing_extensions` installed there? I think you have to manually manage the dependencies,  >because there is no pip here. I am not familiar with CPython though, so maybe there is a better way. Yes, there is: "C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\typing_extensions\typing_extensions.py" which compiled to: "C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\typing_extensions\__pycache__\typing_extensions.cpython-312.pyc" I had assumed that if there was a dependency I'd get an error message noting the lack of one --- that's how I started w/ pydantic --- it wanted pydantic_core, then that wanted typing_extensions, which is loading, but isn't making the "Sentinel" object causing the error as noted initially: >    File "C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\pydantic_core\__init__.py", line 6, in <module> >        from typing_extensions import Sentinel >    ImportError: cannot import name 'Sentinel' from 'typing_extensions' (unknown location) William
P
pca006132
Tue, Dec 16, 2025 2:00 AM

Sorry I don't know enough about this. Maybe someone else can help.

On Tue, Dec 16, 2025 at 9:44 AM William F. Adams willadams@aol.com wrote:

On Monday, December 15, 2025 at 08:37:30 PM EST, pca006132 <
john.lck40@gmail.com> wrote:

Do you have typing_extensions installed there? I think you have to

manually manage the dependencies,

because there is no pip here. I am not familiar with CPython though, so

maybe there is a better way.

Yes, there is:

"C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\typing_extensions\typing_extensions.py"

which compiled to:

"C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\typing_extensions_pycache_\typing_extensions.cpython-312.pyc"

I had assumed that if there was a dependency I'd get an error message
noting the lack of one --- that's how I started w/ pydantic --- it wanted
pydantic_core, then that wanted typing_extensions, which is loading, but
isn't making the "Sentinel" object causing the error as noted initially:

File

"C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\pydantic_core_init_.py",
line 6, in <module>

    from typing_extensions import Sentinel
ImportError: cannot import name 'Sentinel' from 'typing_extensions'

(unknown location)

William

Sorry I don't know enough about this. Maybe someone else can help. On Tue, Dec 16, 2025 at 9:44 AM William F. Adams <willadams@aol.com> wrote: > On Monday, December 15, 2025 at 08:37:30 PM EST, pca006132 < > john.lck40@gmail.com> wrote: > > >Do you have `typing_extensions` installed there? I think you have to > manually manage the dependencies, > >because there is no pip here. I am not familiar with CPython though, so > maybe there is a better way. > > Yes, there is: > > > "C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\typing_extensions\typing_extensions.py" > > which compiled to: > > > "C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\typing_extensions\__pycache__\typing_extensions.cpython-312.pyc" > > I had assumed that if there was a dependency I'd get an error message > noting the lack of one --- that's how I started w/ pydantic --- it wanted > pydantic_core, then that wanted typing_extensions, which is loading, but > isn't making the "Sentinel" object causing the error as noted initially: > > > File > "C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries\pydantic_core\__init__.py", > line 6, in <module> > > from typing_extensions import Sentinel > > ImportError: cannot import name 'Sentinel' from 'typing_extensions' > (unknown location) > > William >
WF
William F. Adams
Thu, Dec 18, 2025 1:09 AM

The problem seems to have been trying to manually install things.

Switching to commands like to:

pip install fullcontrol --upgrade --target C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries

has mostly worked, except now I'm at:

File "C:\Users\willa\AppData\Local\Programs\Python\Python312\Lib\ctypes_init_.py", line 157, in <module>
class py_object(_SimpleCData):
AttributeError: class must define a 'type' attribute

William

The problem seems to have been trying to manually install things. Switching to commands like to: pip install fullcontrol --upgrade --target C:\Users\willa\OneDrive\Documents\OpenSCAD\libraries has mostly worked, except now I'm at: >File "C:\Users\willa\AppData\Local\Programs\Python\Python312\Lib\ctypes\__init__.py", line 157, in <module> >class py_object(_SimpleCData): >AttributeError: class must define a '_type_' attribute William