jesusfreke / fusionidea Goto Github PK
View Code? Open in Web Editor NEWFusion 360 Plugin for Intellij IDEA
License: Other
Fusion 360 Plugin for Intellij IDEA
License: Other
Hi, I was trying to setup fusion with pycharm. After installing I get the following error while trying to run the script.
"
AddIns/fusion_idea_addin/fusion_idea_addin.py", line 544, in server_bind
raise Exception("Could not start ssdp server")
Exception: Could not start ssdp server
"
Could you please push the new version including 8bfaf80 to the jetbrains repo?
Thanks!
A random exception I noticed while using the plugin
update failed for AnAction(com.intellij.execution.actions.RunContextAction) with ID=RunClass
java.lang.IllegalArgumentException: Argument for @NotNull parameter 'module' of com/intellij/facet/FacetManager.getInstance must not be null
at com.intellij.facet.FacetManager.$$$reportNull$$$0(FacetManager.java)
at com.intellij.facet.FacetManager.getInstance(FacetManager.java)
at org.jf.fusionIdea.facet.FusionFacet.getInstance(FusionFacet.java:70)
at org.jf.fusionIdea.run.FusionRunConfigurationProducer.setupConfigurationFromContext(FusionRunConfigurationProducer.java:80)
at org.jf.fusionIdea.run.FusionRunConfigurationProducer.setupConfigurationFromContext(FusionRunConfigurationProducer.java:55)
at com.intellij.execution.actions.RunConfigurationProducer.createConfigurationFromContext(RunConfigurationProducer.java:76)
at com.intellij.execution.actions.RunConfigurationProducer.findOrCreateConfigurationFromContext(RunConfigurationProducer.java:164)
at com.intellij.execution.actions.PreferredProducerFind.doGetConfigurationsFromContext(PreferredProducerFind.java:129)
at com.intellij.execution.actions.PreferredProducerFind.getConfigurationsFromContext(PreferredProducerFind.java:113)
at com.intellij.execution.actions.PreferredProducerFind.findConfigurationFromContext(PreferredProducerFind.java:154)
at com.intellij.execution.actions.PreferredProducerFind.createConfiguration(PreferredProducerFind.java:48)
at com.intellij.execution.actions.ConfigurationContext.createConfiguration(ConfigurationContext.java:162)
at com.intellij.execution.actions.ConfigurationContext.getConfiguration(ConfigurationContext.java:153)
at com.intellij.execution.actions.BaseRunConfigurationAction.update(BaseRunConfigurationAction.java:191)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareUpdate(ActionUtil.java:171)
at com.intellij.openapi.actionSystem.impl.Utils.doUpdate(Utils.java:256)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:199)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:225)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:225)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:225)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:225)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:225)
at com.intellij.openapi.actionSystem.impl.Utils.fillMenu(Utils.java:350)
at com.intellij.openapi.actionSystem.impl.ActionPopupMenuImpl$MyMenu.show(ActionPopupMenuImpl.java:110)
at com.intellij.openapi.editor.impl.EditorImpl.invokePopupIfNeeded(EditorImpl.java:4580)
at com.intellij.openapi.editor.impl.EditorImpl.access$9500(EditorImpl.java:124)
at com.intellij.openapi.editor.impl.EditorImpl$MyMouseAdapter.runMouseReleasedCommand(EditorImpl.java:3666)
at com.intellij.openapi.editor.impl.EditorImpl$MyMouseAdapter.mouseReleased(EditorImpl.java:3572)
at java.awt.Component.processMouseEvent(Component.java:6548)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3325)
at java.awt.Component.processEvent(Component.java:6313)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4903)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4725)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4725)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
at java.awt.EventQueue.access$500(EventQueue.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:715)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:737)
at java.awt.EventQueue$4.run(EventQueue.java:735)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:781)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:718)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
On Windows in PyCharm when I Run in Fusion 360
it does not start it with the same interpreter that is setup in the settings (Project: <name> -> Project Interpreter
). In my case it runs with (the most recent) 3.7 but I want to run it with 3.5.
Hello Team,
I have a problem with plugin in PyCharm. It crashes during PyCharm loading.
Here is exception. Can you take a look?
Access is allowed from write thread only
java.util.concurrent.CompletionException: com.intellij.openapi.diagnostic.RuntimeExceptionWithAttachments: EventQueue.isDispatchThread()=false
Current thread: Thread[JobScheduler FJ pool 4/11,4,main] 287264834
SystemEventQueueThread: Thread[AWT-EventQueue-0,6,main] 1808411141
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1807)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: com.intellij.openapi.diagnostic.RuntimeExceptionWithAttachments: EventQueue.isDispatchThread()=false
Current thread: Thread[JobScheduler FJ pool 4/11,4,main] 287264834
SystemEventQueueThread: Thread[AWT-EventQueue-0,6,main] 1808411141
at com.intellij.openapi.application.impl.ApplicationImpl.throwThreadAccessException(ApplicationImpl.java:1110)
at com.intellij.openapi.application.impl.ApplicationImpl.assertIsWriteThread(ApplicationImpl.java:1116)
at com.intellij.openapi.application.impl.ApplicationImpl.startWrite(ApplicationImpl.java:1198)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1021)
at org.jf.fusionIdea.facet.FusionFacet.updateLibrary(FusionFacet.java:261)
at org.jf.fusionIdea.facet.FusionFacet.initFacet(FusionFacet.java:281)
at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleBridgeImpl.initFacets(ModuleBridgeImpl.kt:100)
at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleManagerBridgeImpl.loadModules(ModuleManagerBridgeImpl.kt:119)
at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleBridgeLoaderService.loadModules(ModuleBridgeLoaderService.kt:58)
at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleBridgeLoaderService.<init>(ModuleBridgeLoaderService.kt:48)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:52)
at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClassWithConstructorInjection(ComponentManagerImpl.kt:890)
at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:51)
at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:41)
at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:119)
at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:73)
at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:66)
at com.intellij.serviceContainer.ComponentManagerImpl.preloadService(ComponentManagerImpl.kt:1068)
at com.intellij.serviceContainer.ComponentManagerImpl$preloadServices$1.invoke(ComponentManagerImpl.kt:1033)
at com.intellij.serviceContainer.ComponentManagerImpl$preloadServices$1.run(ComponentManagerImpl.kt:55)
at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1375)
... 5 more
Additional information: PyCharm 2022.2.4, OS: Win10
Please let me know if I can fix it somehow from my side.
Thanks in advance.
Hi, I'm having trouble with the connection
Fusion 360, latest version
Fusion 360 Scripting v0.6.6
PyCharm 2023.2.5 (prof) (not supported I know)
PyCharm 2022.2.5(com.) (supported)
interpreter: fusion360, fusion 360 support enabled.
I can start a script, and fusion excepts the public key, but once entered I'm not able to attach to the process and get the following error:
Connection to Python debugger failed, Accept timed out.
And nothing is happening. This is in both versions of Pycharm.
Any Idea's how to fix this?
Related to JesusFreke/fusion_idea_addin#1 perhaps?
When running, I get the following error in the pycharm event log:
java.lang.Throwable: Couldn't send ipv6 ssdp packet on any interface
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:143)
at org.jf.fusionIdea.run.FusionScriptState$SSDPServer.sendIpv6SSDPRequest(FusionScriptState.java:268)
at org.jf.fusionIdea.run.FusionScriptState$SSDPServer.lambda$start$0(FusionScriptState.java:283)
at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
at java.base/java.lang.Thread.run(Thread.java:834)
The terminal shows:
Public key hash: F93552CFE1C6A07E748BE736BA257F74A94326CD
Server stopped.
Encountered error while attempting to connect to Fusion.
Pycharm and OS version info:
PyCharm 2020.2 (Professional Edition)
Build #PY-202.6397.98, built on July 28, 2020
Runtime version: 11.0.7+10-b944.20 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 10.15.4
GC: ParNew, ConcurrentMarkSweep
Memory: 1979M
Cores: 16
Non-Bundled Plugins: io.protostuff.protostuff-jetbrains-plugin, intellij-micropython, org.jf.fusionIdea
When running a basic script (BuildBolt copied from the Fusion API samples), I get an error when running the process that it does not match the target architecture. I've attached the error below.
What architecture is expected to connect to the Fusion 360 process?
Traceback (most recent call last):
File "C:\Users\meganh.PyCharmCE2018.3\config\plugins\fusion_idea\scripts\inject.py", line 173, in
main(process_command_line(sys.argv[1:]))
File "C:\Users\meganh.PyCharmCE2018.3\config\plugins\fusion_idea\scripts\inject.py", line 169, in main
show_debug_info=show_debug_info_on_target_process)
File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.4\helpers\pydev\pydevd_attach_to_process\add_code_to_python_process.py", line 298, in run_python_code_windows
"Current Python 64 bits: %s" % (is_64, is_python_64bit()))
RuntimeError: The architecture of the Python used to connect doesn't match the architecture of the target.
Target 64 bits: True
Current Python 64 bits: False
Process finished with exit code 1
Hi, as the title says, when I execute my code from PyCharm, a windows shows in Fusion with the next message after copying the Public key hash:
Just to be clear, the message says that I'm using PyCharm 2021.1.1, but I already upgraded it, the directory keeps its old name, though.
Should I reinstall PyCharm? I tried running it and Fusion360 as administrator but nothing happens.
Also, I don't know if it's related, but I have to disable the plugin support (on Languages & Frameworks) before closing the project, because, when I reopen it, an error closes the IDE.
I'm hitting the "Did not receive a debug port for pid" exception. Any tips on how to debug why, please?
Thanks a lot for the great Plugin and the hard work. Much appreciated. Let me know if you are accepting donations.
Using:
Pycharm 2018.3.3
OS: Win10
Plugin: v 0.5.4
The plugin throws an exception with the stack trace shown below whenever enabling Fusion 360 Support via the checkbox.
Is there any way to get rid of the Connection to Python debugger failed socket closed
event log message after every time a script finishes running?
It looks like the run configuration cannot run scripts which have space characters in the path to the script. For example when running a script named f360_script_test.py
located in the C:\Users\username\Google Drive\PyCharm Projects\Fusion360Projects\
, due to the presence of space in the name Google Drive
in the path of the script, the script fails running with the following output:
Got unexpected parameter: Drive\Pycharm
. May be take in the script location as one contiguous string when running the script will solve this?
The following is the stack trace of the exception thrown:
java.lang.Throwable: Assertion failed: Write access is allowed inside write-action only (see com.intellij.openapi.application.Application.runWriteAction()) at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:174) at com.intellij.openapi.application.impl.ApplicationImpl.assertWriteAccessAllowed(ApplicationImpl.java:1346) at com.intellij.facet.FacetManagerImpl.commit(FacetManagerImpl.java:380) at com.intellij.facet.impl.FacetModelImpl.commit(FacetModelImpl.java:96) at com.intellij.openapi.roots.PlatformModifiableModelsProvider.commitFacetModifiableModel(PlatformModifiableModelsProvider.java:38) at org.jf.fusionIdea.facet.FusionFacet.addFacet(FusionFacet.java:86) at org.jf.fusionIdea.configuration.FusionConfigurable.apply(FusionConfigurable.java:136) at com.intellij.openapi.options.ex.ConfigurableWrapper.apply(ConfigurableWrapper.java:173) at com.intellij.openapi.options.newEditor.ConfigurableEditor.apply(ConfigurableEditor.java:316) at com.intellij.openapi.options.newEditor.SettingsEditor$5.apply(SettingsEditor.java:163) at com.intellij.openapi.options.newEditor.SettingsEditor.apply(SettingsEditor.java:306) at com.intellij.openapi.options.newEditor.SettingsDialog.doOKAction(SettingsDialog.java:156) at com.intellij.openapi.ui.DialogWrapper$OkAction.doAction(DialogWrapper.java:1871) at com.intellij.openapi.ui.DialogWrapper$DialogWrapperAction.actionPerformed(DialogWrapper.java:1831) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at com.chrisrm.idea.ui.MTButtonUI$ButtonHighlighter.mouseReleased(MTButtonUI.java:374) at java.awt.Component.processMouseEvent(Component.java:6548) at javax.swing.JComponent.processMouseEvent(JComponent.java:3325) at java.awt.Component.processEvent(Component.java:6313) at java.awt.Container.processEvent(Container.java:2237) at java.awt.Component.dispatchEventImpl(Component.java:4903) at java.awt.Container.dispatchEventImpl(Container.java:2295) at java.awt.Component.dispatchEvent(Component.java:4725) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467) at java.awt.Container.dispatchEventImpl(Container.java:2281) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4725) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764) at java.awt.EventQueue.access$500(EventQueue.java:98) at java.awt.EventQueue$3.run(EventQueue.java:715) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) at java.awt.EventQueue$4.run(EventQueue.java:737) at java.awt.EventQueue$4.run(EventQueue.java:735) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:734) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:719) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:664) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:363) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109) at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190) at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235) at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233) at java.security.AccessController.doPrivileged(Native Method) at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233) at java.awt.Dialog.show(Dialog.java:1077) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:698) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:430) at com.intellij.openapi.ui.DialogWrapper.invokeShow(DialogWrapper.java:1681) at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1630) at com.intellij.openapi.options.newEditor.SettingsDialog.lambda$show$0(SettingsDialog.java:70) at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88) at com.intellij.openapi.application.TransactionGuardImpl.submitTransactionAndWait(TransactionGuardImpl.java:153) at com.intellij.openapi.options.newEditor.SettingsDialog.show(SettingsDialog.java:70) at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:84) at com.intellij.ide.actions.ShowSettingsAction.perform(ShowSettingsAction.java:54) at com.intellij.ide.actions.ShowSettingsAction.actionPerformed(ShowSettingsAction.java:41) at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:258) at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:275) at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:184) at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:148) at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:410) at java.awt.Component.processEvent(Component.java:6313) at java.awt.Container.processEvent(Container.java:2237) at java.awt.Component.dispatchEventImpl(Component.java:4903) at java.awt.Container.dispatchEventImpl(Container.java:2295) at java.awt.Component.dispatchEvent(Component.java:4725) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467) at java.awt.Container.dispatchEventImpl(Container.java:2281) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4725) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764) at java.awt.EventQueue.access$500(EventQueue.java:98) at java.awt.EventQueue$3.run(EventQueue.java:715) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) at java.awt.EventQueue$4.run(EventQueue.java:737) at java.awt.EventQueue$4.run(EventQueue.java:735) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:734) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:719) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:664) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:363) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
When I detach the debugger (with the stop button inside pycharm) and then attach it again (with the run/rerun button), Pycharm always brings up the following file PyCharm2022.1\plugins\fusion_idea\lib\pydevd-1.9.0\pydevd_attach_to_process\attach_script.py
and breaks at the line
pydevd.settrace( port=port, host=host, stdoutToServer=True, stderrToServer=True, overwrite_prev_trace=True, suspend=False, trace_only_current_thread=False, patch_multiprocessing=False, )
I though that the problem was related to the line right before it:
if py_db is not None: py_db.dispose_and_kill_all_pydevd_threads(wait=False)
but I checked that dispose_and_kill_all_pydevd_threads
is well defined, and changed wait
to True.
But Pycharm still breaks right after the pydevd.settrace
call
Also, it seems this issue is not a duplicate or related to this one
I just get a popup that says "Fail to load plugin descriptor from file fusion_idea-0.6.2.zip" when I try to install the plugin in the most recent PyCharm 2021.1.2 I tried both from the plugin site and direct from the releases entry here. Running on Windows 10. I didn't try mac.
I don't know if this is really an issue with the plugin or a fusion 360 limitation, but it seems that the standard output is truncated to 999 bytes and ...
is appended, if the output is larger than 1000 bytes.
import sys
def run(context):
for i in range(1000):
sys.stdout.write("o")
sys.stdout.write("x")
this will end in oooo...
. But if you reduce it to 999 bytes, then it will end in oooox
. This also happens if the output is split into multiple lines. The total number of bytes in the stdout is limited.
I've tried sys.stdout.flush()
at the end, but it did not change the result.
When trying to add a new run configuration of "Fusion 360 Python Script" in pycharm, I get the following exception:
java.util.MissingResourceException: Can't find bundle for base name com/jetbrains/python/PyBundle, locale en_AU
at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2055)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1689)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1593)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1556)
at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:857)
at org.jf.fusionIdea.run.FusionRunConfigurationEditor.$$$setupUI$$$(FusionRunConfigurationEditor.java)
at org.jf.fusionIdea.run.FusionRunConfigurationEditor.<init>(FusionRunConfigurationEditor.java:75)
at org.jf.fusionIdea.run.FusionRunConfiguration.getConfigurationEditor(FusionRunConfiguration.java:84)
at com.intellij.execution.impl.ConfigurationSettingsEditor.<init>(ConfigurationSettingsEditor.java:193)
at com.intellij.execution.impl.ConfigurationSettingsEditorWrapper.<init>(ConfigurationSettingsEditorWrapper.java:58)
at com.intellij.execution.impl.TemplateConfigurable.<init>(TemplateConfigurable.java:13)
at com.intellij.execution.impl.RunConfigurable.showTemplateConfigurable(RunConfigurable.kt:307)
at com.intellij.execution.impl.RunConfigurable.access$showTemplateConfigurable(RunConfigurable.kt:84)
at com.intellij.execution.impl.RunConfigurable$initTree$4.valueChanged(RunConfigurable.kt:247)
at java.desktop/javax.swing.JTree.fireValueChanged(JTree.java:2967)
at java.desktop/javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:3456)
at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:641)
at com.intellij.ui.treeStructure.Tree$MySelectionModel.fireValueChanged(Tree.java:623)
at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1111)
at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:297)
at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(DefaultTreeSelectionModel.java:191)
at java.desktop/javax.swing.JTree.setSelectionPath(JTree.java:1656)
at java.desktop/javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(BasicTreeUI.java:2736)
at java.desktop/javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(BasicTreeUI.java:4016)
at java.desktop/javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressedDND(BasicTreeUI.java:3993)
at java.desktop/javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(BasicTreeUI.java:3952)
at com.intellij.util.ui.MouseEventAdapter.mousePressed(MouseEventAdapter.java:30)
at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:287)
at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:287)
at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:287)
at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:287)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6648)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345)
at com.intellij.ui.treeStructure.Tree.processMouseEvent(Tree.java:394)
at java.desktop/java.awt.Component.processEvent(Component.java:6416)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4544)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:912)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:844)
at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:728)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:502)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
at java.desktop/java.awt.Dialog.show(Dialog.java:1063)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:708)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:437)
at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1707)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1666)
at com.intellij.execution.actions.EditRunConfigurationsAction.actionPerformed(EditRunConfigurationsAction.java:28)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:280)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:274)
at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:223)
at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:213)
at com.intellij.ui.popup.ActionPopupStep.lambda$onChosen$2(ActionPopupStep.java:207)
at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
at com.intellij.ui.popup.AbstractPopup.lambda$dispose$13(AbstractPopup.java:1454)
at com.intellij.util.ui.UIUtil.invokeLaterIfNeeded(UIUtil.java:2319)
at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.java:188)
at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.java:140)
at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:171)
at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.doWhenFocusSettlesDown(IdeFocusManagerImpl.java:36)
at com.intellij.ui.popup.AbstractPopup.dispose(AbstractPopup.java:1450)
at com.intellij.ui.popup.WizardPopup.dispose(WizardPopup.java:152)
at com.intellij.ui.popup.list.ListPopupImpl.dispose(ListPopupImpl.java:326)
at com.intellij.ui.popup.PopupFactoryImpl$ActionGroupPopup.dispose(PopupFactoryImpl.java:301)
at com.intellij.openapi.util.ObjectNode.lambda$execute$0(ObjectNode.java:111)
at com.intellij.openapi.util.ObjectTree.executeActionWithRecursiveGuard(ObjectTree.java:184)
at com.intellij.openapi.util.ObjectNode.execute(ObjectNode.java:71)
at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:134)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:116)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:106)
at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:255)
at com.intellij.ui.popup.list.ListPopupImpl.handleNextStep(ListPopupImpl.java:461)
at com.intellij.ui.popup.list.ListPopupImpl._handleSelect(ListPopupImpl.java:415)
at com.intellij.ui.popup.list.ListPopupImpl.handleSelect(ListPopupImpl.java:361)
at com.intellij.ui.popup.PopupFactoryImpl$ActionGroupPopup.handleSelect(PopupFactoryImpl.java:321)
at com.intellij.ui.popup.list.ListPopupImpl$MyMouseListener.mouseReleased(ListPopupImpl.java:526)
at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:298)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6651)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345)
at com.intellij.ui.popup.list.ListPopupImpl$MyList.processMouseEvent(ListPopupImpl.java:583)
at java.desktop/java.awt.Component.processEvent(Component.java:6416)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:912)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:844)
at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:739)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:502)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: com.intellij.diagnostic.PluginException: While loading class com/jetbrains/python/PyBundle: IllegalName: com/jetbrains/python/PyBundle [Plugin: Pythonid]
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClassInsideSelf(PluginClassLoader.java:262)
at com.intellij.ide.plugins.cl.PluginClassLoader.tryLoadingClass(PluginClassLoader.java:205)
at com.intellij.ide.plugins.cl.PluginClassLoader.access$200(PluginClassLoader.java:36)
at com.intellij.ide.plugins.cl.PluginClassLoader$1.execute(PluginClassLoader.java:176)
at com.intellij.ide.plugins.cl.PluginClassLoader$1.execute(PluginClassLoader.java:168)
at com.intellij.ide.plugins.cl.PluginClassLoader.processResourcesInParents(PluginClassLoader.java:153)
at com.intellij.ide.plugins.cl.PluginClassLoader.tryLoadingClass(PluginClassLoader.java:209)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:113)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:3170)
at java.base/java.util.ResourceBundle.loadBundle(ResourceBundle.java:1994)
at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1776)
at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1728)
at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1728)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1662)
... 144 more
Caused by: java.lang.NoClassDefFoundError: IllegalName: com/jetbrains/python/PyBundle
at java.base/java.lang.ClassLoader.preDefineClass(ClassLoader.java:889)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1014)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:877)
at com.intellij.util.lang.UrlClassLoader._defineClass(UrlClassLoader.java:380)
at com.intellij.util.lang.UrlClassLoader.defineClass(UrlClassLoader.java:376)
at com.intellij.util.lang.UrlClassLoader._findClass(UrlClassLoader.java:340)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClassInsideSelf(PluginClassLoader.java:259)
... 158 more
Version info:
PyCharm 2020.1 (Professional Edition)
Build #PY-201.6668.115, built on April 7, 2020
Runtime version: 11.0.6+8-b765.25 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.15.4
GC: ParNew, ConcurrentMarkSweep
Memory: 1979M
Cores: 16
Non-Bundled Plugins: io.protostuff.protostuff-jetbrains-plugin, intellij-micropython, org.jf.fusionIdea
A similar Problem as described in #8 is occuring when I am using it.
I can only attach to Fusion (get console output) once. Afterwards the Script runs but you don't get any consol output, until I restart Fusion.
Debuging doesn't work at all it just irgnores breakpoints but executes the script.
Plugin: 0.5.7
PyCharm: PyCharm 2019.3.4 (Professional Edition) Build #PY-193.6911.25, built on March 18, 2020
Fusion 360: 2.0.7830
Sidenote: I have Anaconda installed. Tryed it with anaconda interpreter and also tried it with the Fusion one too.
Sidenote2: Debugging with VScode dosn't work for me neither. But I think thats because of VScode being VScode.
I was trying to debug following plugin.
It works when simply imported inside Fusion360. But when running from PyCharm, it errors out with
attempted relative import without known parent.
On lines in octoFusionCommand.py or OctoFusion_Old.py containing the following imports:
from .packages import requests
,
from ....packages import requests
,
from .Fusion360CommandBase import Fusion360CommandBase
etc
In the end, I was able to import those modules by removing dots in front of the modules names.
Do you think the issue is related to Python version or FusionIdea plugin? I am trying to figure out how all of this works.
I am wondering if the answer to Mac support is as simple as removing the ".exe" filter from the input box in settings? Probably not. But thought id try. I couldn't figure out how to get my forked copy of your plugin to run to test. I'd be happy to do so.
In: FusionConfigurable.java, Line 85
I understand the need to set up some type of key validation since the debugging session is initiated from outside of Fusion 360. However, it can be just a tiny bit tedious to have to manually copy-paste the key. As a compromise, what do you think about just displaying a message box that says something like "A debugging session with key XYZ was started. Do you want to proceed?". Then the user would just need to click OK. This would be a similar workflow to, say, a bluetooth pairing scenario.
What do you think?
After upgrading fusion to the new version with python 3.7, I've noticed a few issues with the plugin. The first -- not being able to attach at all -- was resolved by upgrading IDEA to the latest version (2019.2.3).
However, I just noticed that even with the newer IDEA there's still a bit of an issue. Debugging a script the first time seems to work fine. It will run the script and stop at any breakpoint that is defined. However, after stopping the debugging session and trying to debug the script again, it will launch and run the script successfully, but it won't actually hit any breakpoints.
I really like the idea of this plug-in, but I can't seem to get it to work.
For example, I can't find "Open Module Settings" anywhere in PyCharm (community or commercial edition) 2018.3.4.
The "Installation" section in the Readme gives instructions for a small add-in, but the next section "Add-in" seems to state that this small add-in is not actually required?
The "Go to File -> Scripts and Add-Ins" instruction also doesn't fit PyCharm, I think. I can install Plugins, but not Add-ins, as far as I can see.
Fusion throws this error at me when running / debugging:
Unhandled exception while importing and running script.
Traceback (most recent call last):
File "C:/Users/morit/AppData/Roaming/Autodesk/Autodesk Fusion 360/API/AddIns/fusion_idea_addin/fusion_idea_addin.py", line 331, in notify
module = importlib.util.module_from_spec(spec)
File "<frozen importlib._bootstrap>", line 580, in module_from_spec
AttributeError: 'NoneType' object has no attribute 'loader'
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.