├── .github └── workflows │ └── plug-in-interface.yml ├── .gitignore ├── LICENSE.md ├── Plug-In-Interface.pro ├── Plugin-OPC-UA ├── LICENSE.md ├── PluginOPCUA.pro ├── README.md ├── dialogusernamepassword.cpp ├── dialogusernamepassword.h ├── dialogusernamepassword.ui ├── formopcsettings.cpp ├── formopcsettings.h ├── formopcsettings.ui ├── manifest.xml ├── opcua │ ├── open62541- an open source implementation of OPC UA.url │ ├── open62541.c │ └── open62541.h ├── opcua_client.cpp ├── opcua_client.h ├── opcua_server.cpp ├── opcua_server.h ├── opcua_tools.cpp ├── opcua_tools.h ├── pluginopcua.cpp ├── pluginopcua.h ├── resources │ ├── ClientOff.svg │ ├── ClientOn.svg │ ├── ServerOff.svg │ ├── ServerOn.svg │ ├── off.png │ ├── on.png │ └── settings.png └── resources1.qrc ├── PluginAppLoader ├── AppLoader.pro ├── Apps │ ├── AppTemplate │ │ ├── ActionCheckable.py │ │ ├── ActionCheckable.svg │ │ ├── ActionCheckableChecked.svg │ │ ├── ActionMomentary.py │ │ ├── ActionMomentary.svg │ │ ├── ActionOnContext.py │ │ ├── ActionOnContext.svg │ │ ├── ActionOnDoubleClick.py │ │ ├── AppConfig.ini │ │ ├── AppSettings.py │ │ ├── AppSettings.svg │ │ ├── LICENSE.md │ │ ├── OptionCheckable.py │ │ ├── OptionCheckableGroupA.py │ │ ├── OptionCheckableGroupB.py │ │ ├── README.md │ │ ├── _AppUtilities.py │ │ ├── __init__.py │ │ ├── manifest.xml │ │ └── requirements.txt │ ├── BoxSpawner │ │ ├── AddSpawnBoxScript.png │ │ ├── AddSpawnBoxScript.py │ │ ├── AppConfig.ini │ │ ├── BoxSpawner.rdk │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── Ref_Box_IN.sld │ │ ├── Ref_Box_MM.sld │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── SpawnBox.py │ │ ├── SpawnBox.svg │ │ ├── __init__.py │ │ ├── icon.svg │ │ └── manifest.xml │ ├── CompileApp.py │ ├── CurveUtilities │ │ ├── AppConfig.ini │ │ ├── CurveToTargets.png │ │ ├── CurveToTargets.py │ │ ├── ImportSvg.py │ │ ├── LICENSE.md │ │ ├── MergeCurves.py │ │ ├── ProgToCurve.py │ │ ├── ProjectCurvePoints.py │ │ ├── README.md │ │ ├── RecalculateCurveNormals.py │ │ ├── RemoveCurveDuplicatedPoints.py │ │ ├── SetStartPoint.py │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── SimplifyCurve.py │ │ ├── SimplifyCurveStraightLines.py │ │ ├── SortCurveSegments.py │ │ ├── SplitDiscontinuousCurves.py │ │ ├── _cutools.py │ │ ├── icon.svg │ │ └── manifest.xml │ ├── CycleTime │ │ ├── AppConfig.ini │ │ ├── CycleTime.png │ │ ├── CycleTime.py │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── icon.png │ │ └── manifest.xml │ ├── GameController │ │ ├── AppConfig.ini │ │ ├── GameController.png │ │ ├── GameController.py │ │ ├── GameControllerChecked.png │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── icon.png │ │ └── manifest.xml │ ├── ItemUtilities │ │ ├── AppConfig.ini │ │ ├── AttachObjectToRobotLink.py │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── ReplaceObject.py │ │ ├── ReplaceObject.svg │ │ ├── ReplaceRobot.py │ │ ├── ReplaceRobot.svg │ │ ├── ScaleObject.py │ │ ├── SimplifyObject.py │ │ └── manifest.xml │ ├── ObjectDeleter │ │ ├── AddDeleteObjectsLoopScript.png │ │ ├── AddDeleteObjectsLoopScript.py │ │ ├── AddDeleteObjectsScript.png │ │ ├── AddDeleteObjectsScript.py │ │ ├── AppConfig.ini │ │ ├── DeleteObjects.py │ │ ├── DeleteObjects.svg │ │ ├── DeleteObjectsLoop.py │ │ ├── DeleteObjectsLoop.svg │ │ ├── LICENSE.md │ │ ├── ObjectDeleter.rdk │ │ ├── README.md │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── __init__.py │ │ ├── icon.svg │ │ └── manifest.xml │ ├── PackageCreate.py │ ├── PackageCreateOne.py │ ├── PackageExtract.py │ ├── PointUtilities │ │ ├── AddPointOnSurface.py │ │ ├── AddPointOnSurface.svg │ │ ├── AppConfig.ini │ │ ├── LICENSE.md │ │ ├── PointToTarget.png │ │ ├── PointToTarget.py │ │ ├── README.md │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── SortPoints.py │ │ ├── SurfaceInfo.py │ │ ├── _putools.py │ │ ├── icon.svg │ │ └── manifest.xml │ ├── ProgUtilities │ │ ├── AppConfig.ini │ │ ├── ConvertMoveC.png │ │ ├── ConvertMoveC.py │ │ ├── ConvertMoveC.rdk │ │ ├── ExpandPrograms.png │ │ ├── ExpandPrograms.py │ │ ├── ExpandPrograms.rdk │ │ ├── LICENSE.md │ │ ├── MergePrograms.png │ │ ├── MergePrograms.py │ │ ├── MergePrograms.rdk │ │ ├── Programs_Start.py │ │ ├── Programs_Start.svg │ │ ├── Programs_Stop.py │ │ ├── Programs_Stop.svg │ │ ├── README.md │ │ ├── RecoverProgram.png │ │ ├── RecoverProgram.py │ │ ├── RecoverPrograms.rdk │ │ ├── ReverseProgram.py │ │ ├── RunOnRobot.png │ │ ├── RunOnRobot.py │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── icon.png │ │ └── manifest.xml │ ├── README.md │ ├── Reachability │ │ ├── AppConfig.ini │ │ ├── CheckReachability.py │ │ ├── CheckReachability.svg │ │ ├── CheckReachabilityChecked.svg │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── icon.svg │ │ └── manifest.xml │ ├── Record │ │ ├── AppConfig.ini │ │ ├── AttachCamera.py │ │ ├── AttachCamera.svg │ │ ├── AttachCameraChecked.svg │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── Record.py │ │ ├── Record.svg │ │ ├── RecordChecked.svg │ │ ├── RecordSequence.py │ │ ├── RecordSequence.svg │ │ ├── RecordSequenceChecked.svg │ │ ├── SetSize.py │ │ ├── SetSize.svg │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── icon.svg │ │ └── manifest.xml │ ├── SetStyle │ │ ├── AppConfig.ini │ │ ├── Curves_Orange.py │ │ ├── Curves_Orange.svg │ │ ├── Curves_White.py │ │ ├── Curves_White.svg │ │ ├── LICENSE.md │ │ ├── Points_Cubes.py │ │ ├── Points_Cubes.svg │ │ ├── Points_Default.py │ │ ├── Points_PointCloud.py │ │ ├── Points_PointCloud.svg │ │ ├── Points_Spheres.py │ │ ├── Points_Spheres.svg │ │ ├── README.md │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── Surfaces_Green.py │ │ ├── Surfaces_Green.svg │ │ ├── Surfaces_Orange.py │ │ ├── Surfaces_Orange.svg │ │ ├── icon.svg │ │ └── manifest.xml │ ├── SettingsImportExport │ │ ├── AppConfig.ini │ │ ├── AppSettings.py │ │ ├── AppSettings.svg │ │ ├── Export.py │ │ ├── Export.svg │ │ ├── Icon.svg │ │ ├── Import.py │ │ ├── Import.svg │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── manifest.xml │ ├── Snapshot │ │ ├── AppConfig.ini │ │ ├── LICENSE.md │ │ ├── LoadView.py │ │ ├── LoadView.svg │ │ ├── LoadView2.py │ │ ├── LoadView2.svg │ │ ├── README.md │ │ ├── SaveView.py │ │ ├── SaveView.svg │ │ ├── SaveView2.py │ │ ├── SaveView2.svg │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── TakeSnapshot.py │ │ ├── TakeSnapshot.svg │ │ ├── TakeSnapshotHighRes.py │ │ ├── TakeSnapshotHighRes.svg │ │ ├── icon.svg │ │ └── manifest.xml │ ├── Sound │ │ ├── AppConfig.ini │ │ ├── README.md │ │ ├── add_script.py │ │ ├── add_script.svg │ │ ├── add_sound.py │ │ ├── add_sound.svg │ │ ├── icon.svg │ │ ├── manifest.xml │ │ ├── play_sound.py │ │ ├── requirements.txt │ │ ├── sound_emitter.py │ │ ├── sound_emitter.svg │ │ ├── sound_emitterChecked.svg │ │ └── sounds │ │ │ ├── Beeping.wav │ │ │ ├── Conveyor.wav │ │ │ ├── Drilling.wav │ │ │ ├── DrillingShort.wav │ │ │ ├── ServoMotor.wav │ │ │ ├── Vacuum.wav │ │ │ ├── WaterJet.wav │ │ │ └── Welding.wav │ ├── SurfacePatternGenerator │ │ ├── AppConfig.ini │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── Settings.py │ │ ├── Settings.svg │ │ ├── SurfacePatternGenerator.png │ │ ├── SurfacePatternGenerator.py │ │ ├── _spgtools.py │ │ ├── icon.png │ │ └── manifest.xml │ ├── ViewManager │ │ ├── AppConfig.ini │ │ ├── InterfaceSettings.py │ │ ├── Interface_Basic.py │ │ ├── Interface_Defaults.py │ │ ├── Interface_Fullscreen.py │ │ ├── Interface_VR.py │ │ ├── LICENSE.md │ │ ├── LoadView.py │ │ ├── LoadView.svg │ │ ├── Programs_Start.py │ │ ├── Programs_Start.svg │ │ ├── Programs_Stop.py │ │ ├── Programs_Stop.svg │ │ ├── README.md │ │ ├── SaveView.py │ │ ├── SaveView.svg │ │ ├── SetSize.py │ │ ├── SetSize.svg │ │ ├── ShowCoordinates.py │ │ ├── ShowCurves.py │ │ ├── ShowPoints.py │ │ ├── ShowText.py │ │ ├── ShowTextObject.py │ │ ├── View2VR.py │ │ ├── View2VR.svg │ │ ├── ViewManager.py │ │ ├── ViewManager.svg │ │ ├── icon.svg │ │ └── manifest.xml │ └── ViewUtilities │ │ ├── AppConfig.ini │ │ ├── HideAllTargets.py │ │ ├── HideChilds.py │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── ShowAll.py │ │ ├── ShowAllButSelection.py │ │ ├── ShowAllTargets.py │ │ ├── ShowCartesianTargets.png │ │ ├── ShowCartesianTargets.py │ │ ├── ShowChilds.py │ │ ├── ShowJointTargets.png │ │ ├── ShowJointTargets.py │ │ ├── ShowOnlySelection.py │ │ ├── ShowProgramTargets.png │ │ ├── ShowProgramTargets.py │ │ ├── ShowRobotTargets.png │ │ ├── ShowRobotTargets.py │ │ ├── TreeCollapse.png │ │ ├── TreeCollapse.py │ │ ├── TreeExpand.png │ │ ├── TreeExpand.py │ │ ├── _Utilities.py │ │ ├── icon.png │ │ └── manifest.xml ├── LICENSE.md ├── README.md ├── applistdelegate.cpp ├── applistdelegate.h ├── apploader.cpp ├── apploader.h ├── dialogapplist.cpp ├── dialogapplist.h ├── dialogapplist.ui ├── doc │ ├── Apps-Loaded.png │ ├── Apps-Menu.png │ └── PackageCreate.png ├── installerdialog.cpp ├── installerdialog.h ├── installerdialog.ui ├── manifest.xml ├── tableheader.h ├── unzipper.cpp ├── unzipper.h └── zip │ ├── miniz.h │ ├── zip.c │ └── zip.h ├── PluginAttachObject ├── LICENSE.md ├── PluginAttachObject.pro ├── PluginAttachObject.rdk ├── README.md ├── doc │ ├── assembly-view-portrait.png │ ├── joint-entry.png │ ├── object-menus.png │ ├── parts-view-portrait.png │ ├── robot-menus.png │ └── robot-view-portrait.png ├── manifest.xml ├── pluginattachobject.cpp └── pluginattachobject.h ├── PluginAttachView ├── LICENSE.md ├── PluginAttachView.pro ├── README.md ├── manifest.xml ├── pluginattachview.cpp └── pluginattachview.h ├── PluginBallbarTracker ├── LICENSE.md ├── PluginBallbarTracker.cpp ├── PluginBallbarTracker.h ├── PluginBallbarTracker.pro ├── README.md ├── doc │ ├── ballbar_structure.PNG │ └── menu.PNG └── manifest.xml ├── PluginCollisionSensor ├── LICENSE.md ├── PluginCollisionSensor.pro ├── README.md ├── manifest.xml ├── plugincollisionsensor.cpp └── plugincollisionsensor.h ├── PluginEmbedding ├── PluginEmbedding.pro ├── manifest.xml ├── pluginembedding.cpp ├── pluginembedding.h ├── pluginform.cpp ├── pluginform.h └── pluginform.ui ├── PluginExample ├── LICENSE.md ├── PluginExample.pro ├── formrobotpilot.cpp ├── formrobotpilot.h ├── formrobotpilot.ui ├── manifest.xml ├── pluginexample.cpp ├── pluginexample.h ├── resources │ ├── code.png │ ├── help.png │ └── information.png └── resources1.qrc ├── PluginLVDT ├── LICENSE.md ├── PluginLVDT.pro ├── README.md ├── doc │ └── linear-gage.png ├── manifest.xml ├── pluginlvdt.cpp └── pluginlvdt.h ├── PluginLockTCP ├── LICENSE.md ├── PluginLockTCP.cpp ├── PluginLockTCP.h ├── PluginLockTCP.pro ├── README.md ├── doc │ ├── locked_1.PNG │ ├── locked_2.PNG │ └── menu.PNG └── manifest.xml ├── PluginOpenGL-Shaders ├── LICENSE.md ├── LICENSE.txt ├── PluginChip8Opengl.pro ├── README.md ├── chip8core.cpp ├── chip8core.h ├── chip8roms.h ├── manifest.xml ├── plugin-opengl-shaders.gif ├── pluginchip8.cpp ├── pluginchip8.h ├── robodk_api │ ├── robodk_api.cpp │ └── robodk_api.h ├── robotplayer.cpp └── robotplayer.h ├── PluginOpenGL ├── Draw-Triangle-OpenGL.png ├── LICENSE.md ├── PluginOpengl.pro ├── README.md ├── manifest.xml ├── pluginopengl.cpp └── pluginopengl.h ├── PluginRealTime ├── LICENSE.md ├── PluginRealTime.pro ├── formrobotpilot.cpp ├── formrobotpilot.h ├── formrobotpilot.ui ├── manifest.xml ├── pluginexample.cpp ├── pluginexample.h ├── resources │ ├── code.png │ ├── help.png │ ├── information.png │ └── red-button.png └── resources1.qrc ├── PluginRoboUI ├── LICENSE.md ├── PluginRoboUI.pro ├── README.md ├── doc │ └── rdk-imgui.png ├── imgui │ ├── LICENSE.txt │ ├── imconfig.h │ ├── imgui.cpp │ ├── imgui.h │ ├── imgui_demo.cpp │ ├── imgui_draw.cpp │ ├── imgui_impl_qt.cpp │ ├── imgui_impl_qt.h │ ├── imgui_internal.h │ ├── imgui_tables.cpp │ ├── imgui_widgets.cpp │ ├── imstb_rectpack.h │ ├── imstb_textedit.h │ └── imstb_truetype.h ├── manifest.xml ├── roboui.cpp ├── roboui.h ├── roboui.qrc └── roboui.rc ├── PluginRobotPilot ├── LICENSE.md ├── PluginRobotPilot.pro ├── README.md ├── formrobotpilot.cpp ├── formrobotpilot.h ├── formrobotpilot.ui ├── manifest.xml ├── pluginrobotpilot.cpp └── pluginrobotpilot.h ├── README.md ├── plugin-example.png ├── plugin-load.png ├── qtrun.png ├── robodk_interface ├── Version.txt ├── iapprobodk.h ├── iitem.h ├── irobodk.h ├── robodk_interface.h ├── robodktools.cpp ├── robodktools.h ├── robodktypes.cpp └── robodktypes.h └── sampleoutput.png /.gitignore: -------------------------------------------------------------------------------- 1 | # This file is used to ignore files which are generated 2 | # ---------------------------------------------------------------------------- 3 | 4 | !core/ 5 | *.*# 6 | *.a 7 | *.app 8 | *.autosave 9 | *.core 10 | *.debug 11 | *.embed.manifest 12 | *.moc 13 | *.o 14 | *.obj 15 | *.orig 16 | *.prl 17 | *.qm 18 | *.rc 19 | *.rej 20 | *.res 21 | *.so 22 | *.so.* 23 | *_pch.h.cpp 24 | *_resource.rc 25 | *_wrapper.bat 26 | *_wrapper.sh 27 | *~ 28 | .#* 29 | .DS_Store 30 | .qmake.cache 31 | .qmake.stash 32 | Makefile* 33 | Thumbs.db 34 | core 35 | moc_*.cpp 36 | qrc_*.cpp 37 | tags 38 | ui_*.h 39 | wrapper.bat 40 | wrapper.sh 41 | 42 | **/build/** 43 | 44 | # qtcreator generated files 45 | *.creator.user* 46 | *.pro.user* 47 | *.pyqtc.user* 48 | *.qbs.user* 49 | *.qmlproject.user* 50 | /share/qtcreator/externaltools 51 | /share/qtcreator/fonts/ 52 | /share/qtcreator/generic-highlighter/ 53 | /src/app/Info.plist 54 | /src/plugins/**/*.json 55 | /src/plugins/coreplugin/ide_version.h 56 | /src/libs/qt-breakpad/bin 57 | app_version.h 58 | phony.c 59 | 60 | 61 | # qbs builds 62 | /*-debug/ 63 | /*-release/ 64 | PluginLockTCP/release/moc_predefs.h 65 | PluginRobotPilot/release/moc_predefs.h 66 | PluginOpenGL-Shaders/release/moc_predefs.h 67 | PluginAppLoader/release/moc_predefs.h 68 | Plugin-OPC-UA/release/moc_predefs.h 69 | build-AppLoader-Desktop_Qt_5_15_5_MSVC2019_32bit-Profile/release/moc_predefs.h 70 | build-AppLoader-Desktop_Qt_5_15_5_MSVC2019_32bit-Profile/release/AppLoader.vc.pdb 71 | 72 | __pycache__/ 73 | moc_predefs.h 74 | Plugin-OPC-UA/.qtc_clangd/** 75 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /Plug-In-Interface.pro: -------------------------------------------------------------------------------- 1 | # This file builds all plugins from the public repository RoboDK/Plug-In-Interface 2 | 3 | # CONFIG += ordered 4 | 5 | TEMPLATE = subdirs 6 | 7 | SUBDIRS += PluginAppLoader/AppLoader.pro 8 | SUBDIRS += PluginAttachObject/PluginAttachObject.pro 9 | SUBDIRS += PluginAttachView/PluginAttachView.pro 10 | SUBDIRS += PluginBallbarTracker/PluginBallbarTracker.pro 11 | SUBDIRS += PluginExample/PluginExample.pro 12 | SUBDIRS += PluginLockTCP/PluginLockTCP.pro 13 | SUBDIRS += PluginLVDT/PluginLVDT.pro 14 | win32 { 15 | SUBDIRS += Plugin-OPC-UA/PluginOPCUA.pro 16 | SUBDIRS += PluginOpenGL/PluginOpengl.pro 17 | SUBDIRS += PluginOpenGL-Shaders/PluginChip8Opengl.pro 18 | SUBDIRS += PluginRoboUI/PluginRoboUI.pro 19 | } 20 | SUBDIRS += PluginRealTime/PluginRealTime.pro 21 | SUBDIRS += PluginRobotPilot/PluginRobotPilot.pro 22 | SUBDIRS += PluginCollisionSensor/PluginCollisionSensor.pro 23 | SUBDIRS += PluginEmbedding/PluginEmbedding.pro 24 | -------------------------------------------------------------------------------- /Plugin-OPC-UA/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /Plugin-OPC-UA/dialogusernamepassword.cpp: -------------------------------------------------------------------------------- 1 | #include "dialogusernamepassword.h" 2 | #include "ui_dialogusernamepassword.h" 3 | 4 | dialogUsernamePassword::dialogUsernamePassword(QString username,QString password,QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::dialogUsernamePassword) 7 | { 8 | ui->setupUi(this); 9 | ui->leUsername->setText(username); 10 | ui->lePassword->setText(password); 11 | connect(ui->btnClose, &QPushButton::pressed, this, [this]() { 12 | this->close(); 13 | }); 14 | } 15 | 16 | QString dialogUsernamePassword::getUsername() { 17 | return ui->leUsername->text(); 18 | } 19 | 20 | QString dialogUsernamePassword::getPassword() { 21 | return ui->lePassword->text(); 22 | } 23 | 24 | dialogUsernamePassword::~dialogUsernamePassword() 25 | { 26 | delete ui; 27 | } 28 | -------------------------------------------------------------------------------- /Plugin-OPC-UA/dialogusernamepassword.h: -------------------------------------------------------------------------------- 1 | #ifndef DIALOGUSERNAMEPASSWORD_H 2 | #define DIALOGUSERNAMEPASSWORD_H 3 | 4 | #include 5 | #include 6 | 7 | namespace Ui { 8 | class dialogUsernamePassword; 9 | } 10 | 11 | class dialogUsernamePassword : public QDialog 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | explicit dialogUsernamePassword(QString username,QString password,QWidget *parent = nullptr); 17 | ~dialogUsernamePassword(); 18 | 19 | QString getUsername(); 20 | QString getPassword(); 21 | private: 22 | Ui::dialogUsernamePassword *ui; 23 | }; 24 | 25 | #endif // DIALOGUSERNAMEPASSWORD_H 26 | -------------------------------------------------------------------------------- /Plugin-OPC-UA/formopcsettings.h: -------------------------------------------------------------------------------- 1 | #ifndef FORMOPCSETTINGS_H 2 | #define FORMOPCSETTINGS_H 3 | 4 | #include 5 | 6 | #include "robodktypes.h" 7 | 8 | class PluginOPCUA; 9 | 10 | 11 | namespace Ui { 12 | class FormOpcSettings; 13 | } 14 | 15 | /// This form represents the saved settings for the server and client plugin 16 | class FormOpcSettings : public QWidget 17 | { 18 | Q_OBJECT 19 | 20 | public: 21 | explicit FormOpcSettings(RoboDK *rdk, QWidget *parent, PluginOPCUA *pluginopc); 22 | ~FormOpcSettings(); 23 | 24 | public slots: 25 | /// Update the form 26 | void FormUpdate(); 27 | void dialoglogincreds(); 28 | 29 | private slots: 30 | 31 | /// Callback for the OPC-UA server port 32 | void on_spnServerPort_valueChanged(int arg1); 33 | 34 | /// Callback for the checkbox to start the OPC-UA server on plugin load 35 | void on_chkServerAutoStart_stateChanged(int arg1); 36 | 37 | /// Button callback to start the OPC-UA server 38 | void on_btnServerStart_clicked(); 39 | 40 | /// Button callback to stop the OPC-UA server 41 | void on_btnServerStop_clicked(); 42 | 43 | /// Callback to update the client endpoint 44 | void on_txtClientEndpointURL_editingFinished(); 45 | 46 | /// Callback to list endpoints 47 | void on_btnClientListEndpoints_clicked(); 48 | 49 | /// Display an OPC-UA log window 50 | void on_btnLog_clicked(); 51 | 52 | void on_btnClientConnect_clicked(); 53 | 54 | void on_chkClientRealTime_clicked(bool checked); 55 | 56 | void on_btnClientStop_clicked(); 57 | 58 | private: 59 | /// Pointer to the user interface form 60 | Ui::FormOpcSettings *ui; 61 | 62 | /// Pointer to the RoboDK API 63 | RoboDK *RDK; 64 | 65 | /// Pointer to this plugin 66 | PluginOPCUA *pPlugin; 67 | }; 68 | 69 | #endif // FORMOPCSETTINGS_H 70 | -------------------------------------------------------------------------------- /Plugin-OPC-UA/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:20.600212Z 7 | RoboDK 8 | The OPC UA Plug-in for RoboDK allows you to add OPC UA compatibility to your RoboDK projects. 9 | com.robodk.plugin.opc-ua 10 | 11 | eng 12 | RoboDK 13 | 2024-08-15T19:50:57.051776Z 14 | 1 15 | OPC-UA 16 | 1.1.0 17 | 18 | 19 | https://robodk.com/ 20 | https://github.com/RoboDK/Plug-In-Interface/tree/master/Plugin-OPC-UA 21 | https://github.com/RoboDK/Plug-In-Interface/tree/master/Plugin-OPC-UA 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /OPC-UA.dll 27 | /README.md 28 | 29 | 30 | -------------------------------------------------------------------------------- /Plugin-OPC-UA/opcua/open62541- an open source implementation of OPC UA.url: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | URL=https://open62541.org/ 3 | -------------------------------------------------------------------------------- /Plugin-OPC-UA/opcua_client.h: -------------------------------------------------------------------------------- 1 | #ifndef OPCUA_CLIENT_H 2 | #define OPCUA_CLIENT_H 3 | 4 | #include 5 | #include 6 | 7 | class PluginOPCUA; 8 | 9 | class opcua_client : public QObject 10 | { 11 | Q_OBJECT 12 | 13 | public: 14 | explicit opcua_client(PluginOPCUA *plugin); 15 | ~opcua_client(); 16 | 17 | public: 18 | /// Start the OPC-UA Client 19 | void Start(); 20 | 21 | /// Stop the OPC-UA Client 22 | void Stop(); 23 | 24 | /// Retrieve the status of the OPC-UA server 25 | QString Status(); 26 | 27 | /// Show the list of OPC-UA end points 28 | QStringList ListEndpoints(); 29 | 30 | public slots: 31 | /// Use the OPC-UA client to connect to the server and retrieve the server variables as RoboDK station variables 32 | int Browse(bool close_connection = false); 33 | 34 | public: 35 | /// End Point URL: It contains the IP and port (for example: "opc.tcp://localhost:4840") 36 | QString EndpointUrl; 37 | QString username; 38 | QString password; 39 | 40 | /// Start the OPC-UA client on startup 41 | bool AutoStart; 42 | bool KeepConnected; 43 | 44 | /// Timer to update variables from the server 45 | QTimer BrowseServer; 46 | 47 | public: 48 | 49 | /// Pointer to the RoboDK plugin interface 50 | PluginOPCUA *pPlugin; 51 | 52 | }; 53 | 54 | #endif // OPCUA_CLIENT_H 55 | -------------------------------------------------------------------------------- /Plugin-OPC-UA/opcua_server.h: -------------------------------------------------------------------------------- 1 | #ifndef OPCUA_SERVER_H 2 | #define OPCUA_SERVER_H 3 | 4 | #include 5 | 6 | class PluginOPCUA; 7 | 8 | /// This class creates an instance of an OPC-UA server to interface with RoboDK 9 | class opcua_server : public QObject 10 | { 11 | Q_OBJECT 12 | 13 | public: 14 | explicit opcua_server(PluginOPCUA *plugin); 15 | ~opcua_server(); 16 | 17 | public: 18 | /// Start the OPC-UA Server 19 | void Start(); 20 | 21 | /// Stop the OPC-UA Server 22 | void Stop(); 23 | 24 | /// Returns true if the server is stopped. If the server is shutting down it will return false 25 | bool IsStopped(); 26 | 27 | /// Retrieve the status of the OPC-UA server 28 | QString Status(); 29 | 30 | public slots: 31 | 32 | /// Update status action 33 | void CheckStatus(); 34 | 35 | public: 36 | /// OPC-UA server port 37 | unsigned short Port; 38 | 39 | /// Start the OPC-UA server on startup 40 | bool AutoStart; 41 | 42 | public: 43 | 44 | /// Pointer to the RoboDK plugin interface 45 | PluginOPCUA *pPlugin; 46 | 47 | }; 48 | 49 | #endif // OPCUA_SERVER_H 50 | -------------------------------------------------------------------------------- /Plugin-OPC-UA/opcua_tools.h: -------------------------------------------------------------------------------- 1 | #ifndef OPCUA_TOOLS_H 2 | #define OPCUA_TOOLS_H 3 | 4 | 5 | #include 6 | #include "robodktools.h" 7 | 8 | #include "open62541.h" 9 | 10 | 11 | 12 | /// Convert an OPC-UA Variant to an item pointer 13 | bool Var_2_Item(const UA_Variant *var, IItem **item, RoboDK *rdk); 14 | 15 | /// Convert an OPC-UA variant to an int 16 | bool Var_2_Int(const UA_Variant *var, UA_Int64 *num); 17 | 18 | /// Convert an OPC-UA variant to a double 19 | bool Var_2_Double(const UA_Variant *var, UA_Double *value); 20 | 21 | /// Convert an OPC-UA variant to a QString 22 | bool Var_2_Str(const UA_Variant *var, QString &str); 23 | 24 | /// Convert an OPC-UA variant to a double array 25 | bool Var_2_DoubleArray(const UA_Variant *var, double *values, UA_UInt32 maxlen); 26 | 27 | 28 | //------------------------------------------------------------------------- 29 | /// Helper function to convert a pointer to an OPC-UA pointer 30 | 31 | /// Convert a RoboDK item pointer to a OPC-UA variant 32 | bool Item_2_Var(const UA_UInt64 item, UA_Variant *var); 33 | 34 | /// Convert an int to a OPC-UA variant 35 | bool Int_2_Var(const UA_Int64 num, UA_Variant *var); 36 | 37 | /// Convert a double variable to a OPC-UA variant 38 | bool Double_2_Var(const UA_Double value, UA_Variant *var); 39 | 40 | /// Convert a double array to an OPC-UA variant 41 | bool DoubleArray_2_Var(const double *values, unsigned long long numel, UA_Variant *var); 42 | 43 | /// Convert a QString to a OPC-UA variant 44 | bool Str_2_Var(const QString &str, UA_Variant *var); 45 | 46 | 47 | #endif // OPCUA_TOOLS_H 48 | -------------------------------------------------------------------------------- /Plugin-OPC-UA/resources/off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/Plugin-OPC-UA/resources/off.png -------------------------------------------------------------------------------- /Plugin-OPC-UA/resources/on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/Plugin-OPC-UA/resources/on.png -------------------------------------------------------------------------------- /Plugin-OPC-UA/resources/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/Plugin-OPC-UA/resources/settings.png -------------------------------------------------------------------------------- /Plugin-OPC-UA/resources1.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | resources/settings.png 4 | resources/ClientOff.svg 5 | resources/ClientOn.svg 6 | resources/ServerOff.svg 7 | resources/ServerOn.svg 8 | 9 | 10 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/AppTemplate/ActionCheckable.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/AppTemplate/ActionCheckableChecked.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/AppTemplate/ActionMomentary.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/AppTemplate/ActionOnContext.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/AppTemplate/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/AppTemplate/_AppUtilities.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Sharable module, ignored by the AppLoader when prefixed with '_'. 5 | # Sharable modules are not considered as actions and not required in the AppConfig.ini. 6 | # 7 | # More information about the RoboDK API for Python here: 8 | # https://robodk.com/doc/en/RoboDK-API.html 9 | # https://robodk.com/doc/en/PythonAPI/index.html 10 | # 11 | # More information on RoboDK Apps here: 12 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 13 | # 14 | # -------------------------------------------- 15 | 16 | from robodk import robolink 17 | 18 | 19 | def ShowMessage(RDK, action_name, message, popup): 20 | """Prefix a message with the action name and forwards it to robodk.robolink.Robolink.ShowMessage.""" 21 | s = '\n\n' if popup else ' ' 22 | RDK.ShowMessage(f"{action_name}:{s}{message}", popup) 23 | 24 | 25 | if __name__ == '__main__': 26 | """ 27 | There is no need for an entrypoint for sharable modules, as they are not expected to be run standalone. 28 | """ 29 | pass -------------------------------------------------------------------------------- /PluginAppLoader/Apps/AppTemplate/__init__.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Adding a __init__.py file to your App will make it importable from other Apps and RoboDK scripts. 5 | # This is optional, and should not be added if not needed. 6 | # 7 | # More information about the RoboDK API for Python here: 8 | # https://robodk.com/doc/en/RoboDK-API.html 9 | # https://robodk.com/doc/en/PythonAPI/index.html 10 | # 11 | # More information on RoboDK Apps here: 12 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 13 | # 14 | # -------------------------------------------- -------------------------------------------------------------------------------- /PluginAppLoader/Apps/AppTemplate/requirements.txt: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Adding a requirements.txt file to your App tells RoboDK that you have Python dependencies that needs to be pre-installed. 5 | # This is optional, and should not be added if not needed. 6 | # 7 | # If you want to install opencv for Python and pyserial, you should add: 8 | # opencv-python 9 | # pyserial 10 | # 11 | # You can also use version specifiers (https://peps.python.org/pep-0440/#version-specifiers): 12 | # numpy>=1.23 13 | # pandas~=1.4 14 | # 15 | # More information about the RoboDK API for Python here: 16 | # https://robodk.com/doc/en/RoboDK-API.html 17 | # https://robodk.com/doc/en/PythonAPI/index.html 18 | # 19 | # More information on RoboDK Apps here: 20 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 21 | # 22 | # -------------------------------------------- -------------------------------------------------------------------------------- /PluginAppLoader/Apps/BoxSpawner/AddSpawnBoxScript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/BoxSpawner/AddSpawnBoxScript.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/BoxSpawner/AddSpawnBoxScript.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Adds the Box Spawner script to your RoboDK station. 5 | # You can then call it programmatically from a RoboDK program call. 6 | # To use the spawner ID #2, call SpawnBox(2). 7 | # 8 | # More information about the RoboDK API for Python here: 9 | # https://robodk.com/doc/en/RoboDK-API.html 10 | # https://robodk.com/doc/en/PythonAPI/index.html 11 | # 12 | # More information on RoboDK Apps here: 13 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 14 | # 15 | # -------------------------------------------- 16 | 17 | from robodk import robolink, roboapps 18 | import os 19 | 20 | 21 | def AddSpawnBoxScript(): 22 | """ 23 | Adds the Box Spawner script to your RoboDK station. 24 | You can then call it programmatically from a RoboDK program call. 25 | To use the spawner ID #2, call SpawnBox(2). 26 | """ 27 | 28 | RDK = robolink.Robolink() 29 | script = RDK.AddFile(os.path.abspath(os.path.dirname(os.path.abspath(__file__)) + '/SpawnBox.py')) 30 | script.setName('SpawnBox') 31 | 32 | 33 | def runmain(): 34 | """ 35 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 36 | Important: Use the function name 'runmain()' if you want to compile this action. 37 | """ 38 | 39 | if roboapps.Unchecked(): 40 | roboapps.Exit() 41 | else: 42 | AddSpawnBoxScript() 43 | 44 | 45 | if __name__ == '__main__': 46 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/BoxSpawner/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Box Spawner 3 | MenuParent=menu-Utilities 4 | MenuPriority=45 5 | ToolbarArea=2 6 | ToolbarSizeRatio=1.5 7 | RunCommands= 8 | MenuVisible=true 9 | Version=1.0.0 10 | 11 | [SpawnBox] 12 | DisplayName=Spawn 13 | Description=Spawn a box 14 | Visible=true 15 | Shortcut= 16 | Checkable=false 17 | CheckableGroup=-1 18 | AddToToolbar=true 19 | Priority=10 20 | TypeOnContextMenu= 21 | TypeOnDoubleClick= 22 | DeveloperOnly=false 23 | AddToMenu=true 24 | 25 | [Settings] 26 | DisplayName=Edit Spawner(s) 27 | Description=Edit the Box Spawner settings 28 | Visible=true 29 | Shortcut= 30 | Checkable=false 31 | CheckableGroup=-1 32 | AddToToolbar=true 33 | Priority=20 34 | TypeOnContextMenu= 35 | TypeOnDoubleClick= 36 | DeveloperOnly=false 37 | AddToMenu=true 38 | 39 | [AddSpawnBoxScript] 40 | DisplayName=Add Script 41 | Description=Adds a Python script to the station that adds a box when called 42 | Visible=true 43 | Shortcut= 44 | Checkable=false 45 | CheckableGroup=-1 46 | AddToToolbar=false 47 | Priority=30 48 | TypeOnContextMenu= 49 | TypeOnDoubleClick= 50 | DeveloperOnly=false 51 | AddToMenu=true 52 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/BoxSpawner/BoxSpawner.rdk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/BoxSpawner/BoxSpawner.rdk -------------------------------------------------------------------------------- /PluginAppLoader/Apps/BoxSpawner/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/BoxSpawner/Ref_Box_IN.sld: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/BoxSpawner/Ref_Box_IN.sld -------------------------------------------------------------------------------- /PluginAppLoader/Apps/BoxSpawner/Ref_Box_MM.sld: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/BoxSpawner/Ref_Box_MM.sld -------------------------------------------------------------------------------- /PluginAppLoader/Apps/BoxSpawner/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/BoxSpawner/__init__.py -------------------------------------------------------------------------------- /PluginAppLoader/Apps/CurveUtilities/CurveToTargets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/CurveUtilities/CurveToTargets.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/CurveUtilities/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/CurveUtilities/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 19 | 20 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/CycleTime/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Cycle Time 3 | MenuParent=menu-Program 4 | MenuPriority=50 5 | MenuVisible=true 6 | ToolbarArea=2 7 | ToolbarSizeRatio=1.5 8 | RunCommands= 9 | Version=1.0.0 10 | 11 | [CycleTime] 12 | DisplayName=Cycle Time Report 13 | Description=Display a cycle time report 14 | Visible=true 15 | DeveloperOnly=false 16 | Shortcut= 17 | Checkable=false 18 | CheckableGroup=-1 19 | AddToMenu=true 20 | AddToToolbar=false 21 | Priority=10 22 | TypeOnContextMenu=8 23 | TypeOnDoubleClick= 24 | 25 | [Settings] 26 | DisplayName=Settings 27 | Description=Edit settings 28 | Visible=true 29 | Shortcut= 30 | Checkable=false 31 | CheckableGroup=-1 32 | AddToToolbar=false 33 | Priority=999 34 | TypeOnContextMenu= 35 | TypeOnDoubleClick= 36 | DeveloperOnly=false 37 | AddToMenu=true 38 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/CycleTime/CycleTime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/CycleTime/CycleTime.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/CycleTime/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/CycleTime/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/CycleTime/icon.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/GameController/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Game Controller 3 | MenuParent=menu-Connect 4 | MenuPriority=50 5 | ToolbarArea=2 6 | ToolbarSizeRatio=1.5 7 | RunCommands= 8 | MenuVisible=true 9 | Version=1.1.0 10 | 11 | [GameController] 12 | DisplayName=Launch Game Controller 13 | Description=Launch the game controller 14 | Visible=true 15 | Shortcut= 16 | Checkable=true 17 | CheckableGroup=-1 18 | AddToToolbar=true 19 | Priority=10 20 | TypeOnContextMenu= 21 | TypeOnDoubleClick= 22 | DeveloperOnly=false 23 | AddToMenu=true 24 | 25 | [Settings] 26 | DisplayName=Settings 27 | Description=Edit the game controller settings 28 | Visible=true 29 | Shortcut= 30 | Checkable=false 31 | CheckableGroup=-1 32 | AddToToolbar=false 33 | Priority=999 34 | TypeOnContextMenu= 35 | TypeOnDoubleClick= 36 | DeveloperOnly=false 37 | AddToMenu=true 38 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/GameController/GameController.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/GameController/GameController.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/GameController/GameControllerChecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/GameController/GameControllerChecked.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/GameController/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/GameController/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/GameController/icon.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ItemUtilities/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Item Utilities 3 | MenuParent=menu-Utilities 4 | MenuPriority=50 5 | MenuVisible=true 6 | ToolbarArea=2 7 | ToolbarSizeRatio=1.5 8 | GroupContextMenu=true 9 | RunCommands= 10 | Version=1.0.2 11 | 12 | [ReplaceObject] 13 | DisplayName=Replace Object... 14 | Description=Replace an object with a replacement object on disk 15 | Visible=true 16 | Shortcut= 17 | Checkable=false 18 | CheckableGroup=-1 19 | AddToToolbar=false 20 | Priority=300 21 | TypeOnContextMenu=5 22 | TypeOnDoubleClick= 23 | DeveloperOnly=false 24 | AddToMenu=true 25 | 26 | [ReplaceRobot] 27 | DisplayName=Replace Robot... 28 | Description=Replace a robot with a replacement robot on disk 29 | Visible=true 30 | Shortcut= 31 | Checkable=false 32 | CheckableGroup=-1 33 | AddToToolbar=false 34 | Priority=300 35 | TypeOnContextMenu=2 36 | TypeOnDoubleClick= 37 | DeveloperOnly=false 38 | AddToMenu=true 39 | 40 | [AttachObjectToRobotLink] 41 | DisplayName=Attach Object To Robot Link 42 | Description=Attach the object(s) to a robot link permanently 43 | Visible=true 44 | Shortcut= 45 | Checkable=false 46 | CheckableGroup=-1 47 | AddToToolbar=false 48 | Priority=301 49 | TypeOnContextMenu=2, 5 50 | TypeOnDoubleClick= 51 | DeveloperOnly=false 52 | AddToMenu=true 53 | 54 | [ScaleObject] 55 | DisplayName=Scale Object 56 | Description=Scale the object(s) size 57 | Visible=true 58 | Shortcut= 59 | Checkable=false 60 | CheckableGroup=-1 61 | AddToToolbar=false 62 | Priority=310 63 | TypeOnContextMenu=5 64 | TypeOnDoubleClick= 65 | DeveloperOnly=false 66 | AddToMenu=true 67 | 68 | [SimplifyObject] 69 | DisplayName=Simplify Object 70 | Description=Simplify the object(s) mesh 71 | Visible=true 72 | Shortcut= 73 | Checkable=false 74 | CheckableGroup=-1 75 | AddToToolbar=false 76 | Priority=311 77 | TypeOnContextMenu=2, 4, 5 78 | TypeOnDoubleClick= 79 | DeveloperOnly=false 80 | AddToMenu=true 81 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ItemUtilities/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ItemUtilities/ReplaceObject.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ItemUtilities/ReplaceRobot.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ObjectDeleter/AddDeleteObjectsLoopScript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ObjectDeleter/AddDeleteObjectsLoopScript.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ObjectDeleter/AddDeleteObjectsLoopScript.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # This file adds the Object Deleter (loop) script to your RoboDK station. 5 | # You can then call it programmatically from a RoboDK program call. 6 | # To use the zone ID #2, call DeleteObjectsLoop(2). 7 | # 8 | # More information about the RoboDK API for Python here: 9 | # https://robodk.com/doc/en/RoboDK-API.html 10 | # https://robodk.com/doc/en/PythonAPI/index.html 11 | # 12 | # More information on RoboDK Apps here: 13 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 14 | # 15 | # -------------------------------------------- 16 | 17 | from robodk import robolink, roboapps 18 | import os 19 | 20 | 21 | def AddDeleteObjectsLoopScript(): 22 | """ 23 | This file adds the Object Deleter script to your RoboDK station. 24 | You can then call it programmatically from a RoboDK program call. 25 | To use the zone ID #2, call DeleteObjectsLoop(2). 26 | """ 27 | 28 | RDK = robolink.Robolink() 29 | script = RDK.AddFile(os.path.abspath(os.path.dirname(os.path.abspath(__file__)) + '/DeleteObjectsLoop.py')) 30 | script.setName('DeleteObjectsLoop') 31 | 32 | 33 | def runmain(): 34 | """ 35 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 36 | Important: Use the function name 'runmain()' if you want to compile this action. 37 | """ 38 | 39 | if roboapps.Unchecked(): 40 | roboapps.Exit() 41 | else: 42 | AddDeleteObjectsLoopScript() 43 | 44 | 45 | if __name__ == '__main__': 46 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ObjectDeleter/AddDeleteObjectsScript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ObjectDeleter/AddDeleteObjectsScript.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ObjectDeleter/AddDeleteObjectsScript.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # This file adds the Object Deleter script to your RoboDK station. 5 | # You can then call it programmatically from a RoboDK program call. 6 | # To use the zone ID #2, call DeleteObjects(2). 7 | # 8 | # More information about the RoboDK API for Python here: 9 | # https://robodk.com/doc/en/RoboDK-API.html 10 | # https://robodk.com/doc/en/PythonAPI/index.html 11 | # 12 | # More information on RoboDK Apps here: 13 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 14 | # 15 | # -------------------------------------------- 16 | 17 | from robodk import robolink, roboapps 18 | import os 19 | 20 | 21 | def AddDeleteObjectsScript(): 22 | """ 23 | This file adds the Object Deleter script to your RoboDK station. 24 | You can then call it programmatically from a RoboDK program call. 25 | To use the zone ID #2, call DeleteObjectsLoop(2). 26 | """ 27 | 28 | RDK = robolink.Robolink() 29 | script = RDK.AddFile(os.path.abspath(os.path.dirname(os.path.abspath(__file__)) + '/DeleteObjects.py')) 30 | script.setName('DeleteObjects') 31 | 32 | 33 | def runmain(): 34 | """ 35 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 36 | Important: Use the function name 'runmain()' if you want to compile this action. 37 | """ 38 | 39 | if roboapps.Unchecked(): 40 | roboapps.Exit() 41 | else: 42 | AddDeleteObjectsScript() 43 | 44 | 45 | if __name__ == '__main__': 46 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ObjectDeleter/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Object Deleter 3 | MenuParent=menu-Utilities 4 | MenuPriority=50 5 | ToolbarArea=2 6 | ToolbarSizeRatio=1.5 7 | RunCommands= 8 | MenuVisible=true 9 | Version=1.0.0 10 | 11 | [DeleteObjects] 12 | DisplayName=Delete (once) 13 | Description=Delete objects in the zone 14 | Visible=true 15 | Shortcut= 16 | Checkable=false 17 | CheckableGroup=-1 18 | AddToToolbar=true 19 | Priority=45 20 | TypeOnContextMenu= 21 | TypeOnDoubleClick= 22 | DeveloperOnly=false 23 | AddToMenu=true 24 | 25 | [DeleteObjectsLoop] 26 | DisplayName=Delete (loop) 27 | Description=Delete objects in the zone indefinitely 28 | Visible=true 29 | Shortcut= 30 | Checkable=true 31 | CheckableGroup=-1 32 | AddToToolbar=true 33 | Priority=46 34 | TypeOnContextMenu= 35 | TypeOnDoubleClick= 36 | DeveloperOnly=false 37 | AddToMenu=true 38 | 39 | [Settings] 40 | DisplayName=Edit Zone(s) 41 | Description=Edit the zone settings 42 | Visible=true 43 | Shortcut= 44 | Checkable=false 45 | CheckableGroup=-1 46 | AddToToolbar=true 47 | Priority=47 48 | TypeOnContextMenu= 49 | TypeOnDoubleClick= 50 | DeveloperOnly=false 51 | AddToMenu=true 52 | 53 | [AddDeleteObjectsScript] 54 | DisplayName=Add Script 55 | Description=Adds a Python script to the station that deletes objects in the zone 56 | Visible=true 57 | Shortcut= 58 | Checkable=false 59 | CheckableGroup=-1 60 | AddToToolbar=false 61 | Priority=50 62 | TypeOnContextMenu= 63 | TypeOnDoubleClick= 64 | DeveloperOnly=false 65 | AddToMenu=true 66 | 67 | [AddDeleteObjectsLoopScript] 68 | DisplayName=Add Script (loop) 69 | Description=Adds a Python script to the station that deletes objects in the zone indefinitely 70 | Visible=true 71 | Shortcut= 72 | Checkable=false 73 | CheckableGroup=-1 74 | AddToToolbar=false 75 | Priority=51 76 | TypeOnContextMenu= 77 | TypeOnDoubleClick= 78 | DeveloperOnly=false 79 | AddToMenu=true 80 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ObjectDeleter/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ObjectDeleter/ObjectDeleter.rdk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ObjectDeleter/ObjectDeleter.rdk -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ObjectDeleter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ObjectDeleter/__init__.py -------------------------------------------------------------------------------- /PluginAppLoader/Apps/PackageCreateOne.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import shutil 4 | import glob 5 | import fnmatch 6 | from robodk.robodialogs import * 7 | 8 | ROOT_PATH = os.path.dirname(__file__) 9 | 10 | folder = getOpenFolder(ROOT_PATH, 'Select a RoboDK App to package') 11 | if not folder: 12 | print("Operation cancelled") 13 | quit() 14 | 15 | # Get the app name 16 | app_name = os.path.basename(os.path.normpath(folder)) 17 | 18 | print("Creating package " + app_name) 19 | print(folder) 20 | os.system(sys.executable + ' "%s/PackageCreate.py" "%s"' % (ROOT_PATH, folder)) 21 | print("DONE!") 22 | quit(0) 23 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/PointUtilities/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Point Utilities 3 | MenuParent=menu-Utilities 4 | MenuPriority=50 5 | MenuVisible=true 6 | ToolbarArea=2 7 | ToolbarSizeRatio=1.5 8 | GroupContextMenu=true 9 | RunCommands= 10 | Version=1.1.1 11 | 12 | [AddPointOnSurface] 13 | DisplayName=Add Point(s) On Surface 14 | Description=Add point(s) on an object surface 15 | Visible=true 16 | Shortcut= 17 | Checkable=true 18 | CheckableGroup=-1 19 | AddToToolbar=true 20 | Priority=10 21 | TypeOnContextMenu= 22 | TypeOnDoubleClick= 23 | DeveloperOnly=false 24 | AddToMenu=true 25 | 26 | [PointToTarget] 27 | DisplayName=Convert Point(s) To Target(s) 28 | Description=Convert point(s) to target(s) 29 | Visible=true 30 | Shortcut= 31 | Checkable=false 32 | CheckableGroup=-1 33 | AddToToolbar=true 34 | Priority=11 35 | TypeOnContextMenu=5 36 | TypeOnDoubleClick= 37 | DeveloperOnly=false 38 | AddToMenu=true 39 | 40 | [SortPoints] 41 | DisplayName=Sort Points 42 | Description=Sort points by distance 43 | Visible=true 44 | Shortcut= 45 | Checkable=false 46 | CheckableGroup=-1 47 | AddToToolbar=false 48 | Priority=55 49 | TypeOnContextMenu=5 50 | TypeOnDoubleClick= 51 | DeveloperOnly=false 52 | AddToMenu=true 53 | 54 | [SurfaceInfo] 55 | DisplayName=Surface Information (Click On Surface) 56 | Description=Click an object surface to print its geometry features 57 | Visible=true 58 | Shortcut= 59 | Checkable=true 60 | CheckableGroup=-1 61 | AddToToolbar=false 62 | Priority=100 63 | TypeOnContextMenu= 64 | TypeOnDoubleClick= 65 | DeveloperOnly=false 66 | AddToMenu=true 67 | 68 | [Settings] 69 | DisplayName=Settings 70 | Description=Edit settings 71 | Visible=true 72 | Shortcut= 73 | Checkable=false 74 | CheckableGroup=-1 75 | AddToToolbar=false 76 | Priority=999 77 | TypeOnContextMenu= 78 | TypeOnDoubleClick= 79 | DeveloperOnly=false 80 | AddToMenu=true 81 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/PointUtilities/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/PointUtilities/PointToTarget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/PointUtilities/PointToTarget.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/ConvertMoveC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ProgUtilities/ConvertMoveC.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/ConvertMoveC.rdk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ProgUtilities/ConvertMoveC.rdk -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/ExpandPrograms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ProgUtilities/ExpandPrograms.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/ExpandPrograms.rdk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ProgUtilities/ExpandPrograms.rdk -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/MergePrograms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ProgUtilities/MergePrograms.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/MergePrograms.rdk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ProgUtilities/MergePrograms.rdk -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/Programs_Start.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/Programs_Stop.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Stop all programs and moving robots in the station. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | 18 | def StopProgramsAndRobots(): 19 | """ 20 | Stop all programs and moving robots in the station. 21 | """ 22 | 23 | RDK = robolink.Robolink() 24 | 25 | RDK.Render(False) 26 | 27 | programs = RDK.ItemList(robolink.ITEM_TYPE_PROGRAM) 28 | robots = RDK.ItemList(robolink.ITEM_TYPE_ROBOT) 29 | 30 | for item in robots + programs: 31 | item.Stop() 32 | 33 | RDK.Render(True) 34 | 35 | 36 | def runmain(): 37 | """ 38 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 39 | Important: Use the function name 'runmain()' if you want to compile this action. 40 | """ 41 | 42 | if roboapps.Unchecked(): 43 | roboapps.Exit() 44 | else: 45 | StopProgramsAndRobots() 46 | 47 | 48 | if __name__ == '__main__': 49 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/Programs_Stop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/RecoverProgram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ProgUtilities/RecoverProgram.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/RecoverPrograms.rdk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ProgUtilities/RecoverPrograms.rdk -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/RunOnRobot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ProgUtilities/RunOnRobot.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ProgUtilities/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ProgUtilities/icon.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Reachability/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Reachability 3 | MenuParent=menu-Utilities 4 | MenuPriority=999 5 | ToolbarArea=2 6 | ToolbarSizeRatio=1.5 7 | RunCommands= 8 | MenuVisible=true 9 | Version=1.0.0 10 | 11 | [CheckReachability] 12 | DisplayName=Check reachability 13 | Description=Check robot reachability for the active tool 14 | Visible=true 15 | Shortcut=Alt+R 16 | Checkable=true 17 | CheckableGroup=2 18 | AddToToolbar=true 19 | Priority=200 20 | TypeOnContextMenu=2 21 | TypeOnDoubleClick= 22 | DeveloperOnly=false 23 | AddToMenu=true 24 | 25 | [Settings] 26 | DisplayName=Settings 27 | Description=Edit settings 28 | Visible=true 29 | Shortcut= 30 | Checkable=true 31 | CheckableGroup=2 32 | AddToToolbar=false 33 | Priority=999 34 | TypeOnContextMenu= 35 | TypeOnDoubleClick= 36 | DeveloperOnly=false 37 | AddToMenu=true 38 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Reachability/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Record/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Record 3 | MenuParent= 4 | MenuPriority=160 5 | ToolbarArea=2 6 | ToolbarSizeRatio=1.5 7 | RunCommands= 8 | MenuVisible=true 9 | Version=1.1.0 10 | 11 | [Record] 12 | DisplayName=Record Video 13 | Description=Start/stop screen recording (3D view) 14 | Visible=true 15 | Shortcut=Ctrl+F1 16 | Checkable=true 17 | CheckableGroup=-1 18 | AddToToolbar=true 19 | Priority=1 20 | TypeOnContextMenu= 21 | TypeOnDoubleClick= 22 | DeveloperOnly=false 23 | AddToMenu=true 24 | 25 | [RecordSequence] 26 | DisplayName=Record Image Sequence (.png) 27 | Description=Start/stop screen recording (3D view) with transparency 28 | Visible=true 29 | Shortcut= 30 | Checkable=true 31 | CheckableGroup=-1 32 | AddToToolbar=false 33 | Priority=1 34 | TypeOnContextMenu= 35 | TypeOnDoubleClick= 36 | DeveloperOnly=false 37 | AddToMenu=true 38 | 39 | [AttachCamera] 40 | DisplayName=Attach Camera (3D View) 41 | Description=Attach the camera (3D view point) to the currently selected item 42 | Visible=true 43 | Shortcut= 44 | Checkable=true 45 | CheckableGroup=-1 46 | AddToToolbar=true 47 | Priority=2 48 | TypeOnContextMenu= 49 | TypeOnDoubleClick= 50 | DeveloperOnly=false 51 | AddToMenu=true 52 | 53 | [SetSize] 54 | DisplayName=Set Screen Size 55 | Description=Set the size of the 3D window 56 | Visible=true 57 | Shortcut= 58 | Checkable=false 59 | CheckableGroup=-1 60 | AddToToolbar=true 61 | Priority=3 62 | TypeOnContextMenu= 63 | TypeOnDoubleClick= 64 | DeveloperOnly=false 65 | AddToMenu=true 66 | 67 | [Settings] 68 | DisplayName=Settings 69 | Description=Edit settings 70 | Visible=true 71 | Shortcut= 72 | Checkable=false 73 | CheckableGroup=-1 74 | AddToToolbar=false 75 | Priority=999 76 | TypeOnContextMenu= 77 | TypeOnDoubleClick= 78 | DeveloperOnly=false 79 | AddToMenu=true 80 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Record/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Record/SetSize.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Prompt the user to enter the size of the screen and update the main window of RoboDK accordingly. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps, robodialogs 16 | 17 | import Settings 18 | 19 | 20 | def SetSize(RDK=None, S=None): 21 | """Prompt the user to enter the size of the screen and update the main window of RoboDK accordingly.""" 22 | if RDK is None: 23 | RDK = robolink.Robolink() 24 | 25 | if S is None: 26 | S = Settings.Settings() 27 | S.Load(RDK) 28 | 29 | # Get the desired screen size from the user 30 | newsize = robodialogs.InputDialog("Set the screen size (size of the 3D window).\n Width x Height:", S.DEFAULT_SCREEN_SIZE) 31 | if newsize is None: 32 | return 33 | 34 | RDK.Command("SetSize3D", f"{newsize[0]}x{newsize[1]}") 35 | 36 | 37 | def runmain(): 38 | """ 39 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 40 | Important: Use the function name 'runmain()' if you want to compile this action. 41 | """ 42 | 43 | if roboapps.Unchecked(): 44 | roboapps.Exit() 45 | else: 46 | SetSize() 47 | 48 | 49 | if __name__ == '__main__': 50 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SetStyle/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SetStyle/Surfaces_Green.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 19 | 20 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SetStyle/Surfaces_Orange.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 19 | 20 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SettingsImportExport/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Import-Export Settings 3 | MenuParent=menu-Tools 4 | MenuPriority=1000 5 | MenuVisible=true 6 | ToolbarArea=2 7 | ToolbarSizeRatio=1.5 8 | RunCommands= 9 | Version=1.0.0 10 | 11 | [Export] 12 | DisplayName=Export Settings 13 | Description=Export RoboDK Settings 14 | Visible=true 15 | DeveloperOnly=false 16 | Shortcut= 17 | Checkable=false 18 | CheckableGroup=-1 19 | AddToMenu=true 20 | AddToToolbar=false 21 | Priority=1001 22 | TypeOnContextMenu= 23 | TypeOnDoubleClick= 24 | 25 | [Import] 26 | DisplayName=Import Settings 27 | Description=Import RoboDK Settings 28 | Visible=true 29 | DeveloperOnly=false 30 | Shortcut= 31 | Checkable=false 32 | CheckableGroup=-1 33 | AddToMenu=true 34 | AddToToolbar=false 35 | Priority=1002 36 | TypeOnContextMenu= 37 | TypeOnDoubleClick= 38 | 39 | [AppSettings] 40 | DisplayName=Settings 41 | Description=RoboDK Import/Export settings 42 | Visible=true 43 | DeveloperOnly=false 44 | Shortcut= 45 | Checkable=false 46 | CheckableGroup=-1 47 | AddToMenu=true 48 | AddToToolbar=false 49 | Priority=1003 50 | TypeOnContextMenu= 51 | TypeOnDoubleClick= 52 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SettingsImportExport/AppSettings.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # App settings action: when this action is executed it will show the settings we can configure for this App. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import roboapps 16 | 17 | 18 | class Settings(roboapps.AppSettings): 19 | """ 20 | Settings class to define configurable settings for the Import-Export Settings App 21 | """ 22 | 23 | def __init__(self, settings_param='Import-Export-Settings'): 24 | super().__init__(settings_param) 25 | 26 | from collections import OrderedDict 27 | self._FIELDS_UI = OrderedDict() # _FIELDS_UI are optional, but provides better descriptions to the user 28 | 29 | self._FIELDS_UI['SETTINGS_NAME'] = "Default settings file name" 30 | self.SETTINGS_NAME = 'RoboDK-Settings.ini' 31 | 32 | 33 | def runmain(): 34 | """ 35 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 36 | Important: Use the function name 'runmain()' if you want to compile this action. 37 | """ 38 | 39 | if roboapps.Unchecked(): 40 | roboapps.Exit() 41 | else: 42 | S = Settings() 43 | S.Load() 44 | S.ShowUI('Import/Export settings') 45 | 46 | 47 | if __name__ == '__main__': 48 | runmain() 49 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SettingsImportExport/Import.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Action to import RoboDK settings as an INI file 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps, robodialogs 16 | import os 17 | 18 | ACTION_NAME = os.path.basename(__file__) 19 | 20 | 21 | def SettingsImport(): 22 | """Import the settings""" 23 | from AppSettings import Settings 24 | 25 | path_files = os.path.expanduser("~/Desktop") 26 | 27 | S = Settings() 28 | S.Load() 29 | file_name = S.SETTINGS_NAME 30 | 31 | file_path = robodialogs.getOpenFileName(strtitle="Load RoboDK settings", path_preference=path_files, strfile=file_name, defaultextension='.ini', filetypes=[("INI files", "*.ini"), ("All files", "*.*")]) 32 | if not file_path: 33 | return 34 | 35 | RDK = robolink.Robolink() 36 | if RDK.Command("Settings", "Load=" + file_path) == "OK": 37 | RDK.ShowMessage("Successfully imported RoboDK settings from " + file_path, False) 38 | else: 39 | RDK.ShowMessage("Failed to import RoboDK settings. Make sure you are using the latest version of RoboDK.") 40 | 41 | 42 | def runmain(): 43 | """ 44 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 45 | Important: Use the function name 'runmain()' if you want to compile this action. 46 | """ 47 | 48 | if roboapps.Unchecked(): 49 | roboapps.Exit() 50 | else: 51 | SettingsImport() 52 | 53 | 54 | if __name__ == '__main__': 55 | runmain() 56 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SettingsImportExport/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Snapshot/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Snapshot/LoadView.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Restore the 3D view point from a saved station parameter. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, robomath, roboapps 16 | import ast 17 | 18 | 19 | def LoadView(view_name): 20 | """ 21 | Restore the 3D view point from a saved station parameter. 22 | """ 23 | 24 | # Start the RoboDK API 25 | RDK = robolink.Robolink() 26 | 27 | vp_str = RDK.getParam(view_name) 28 | if vp_str is None: 29 | RDK.ShowMessage(f"View \"{view_name}\" not recorded. Save a view point first", False) 30 | return 31 | 32 | # Lazy way to convert a list as a string to a list of floats 33 | vp_xyzabc = ast.literal_eval(vp_str) 34 | 35 | vp = robomath.KUKA_2_Pose(vp_xyzabc) 36 | RDK.setViewPose(vp) 37 | 38 | 39 | def runmain(): 40 | """ 41 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 42 | Important: Use the function name 'runmain()' if you want to compile this action. 43 | """ 44 | 45 | if roboapps.Unchecked(): 46 | roboapps.Exit() 47 | else: 48 | LoadView("Snapshot-View-0") 49 | 50 | 51 | if __name__ == '__main__': 52 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Snapshot/LoadView2.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Restore the 3D view point from a saved station parameter, as specified by the user. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import roboapps, robodialogs 16 | 17 | from LoadView import LoadView 18 | 19 | 20 | def runmain(): 21 | """ 22 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 23 | Important: Use the function name 'runmain()' if you want to compile this action. 24 | """ 25 | 26 | if roboapps.Unchecked(): 27 | roboapps.Exit() 28 | else: 29 | id = robodialogs.InputDialog("View ID", 0) 30 | if id is None: 31 | roboapps.Exit() # User cancel 32 | LoadView('Snapshot-View-' + str(id).strip()) 33 | 34 | 35 | if __name__ == '__main__': 36 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Snapshot/SaveView.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Save the 3D view point as a station parameter. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, robomath, roboapps 16 | 17 | 18 | def SaveView(view_name): 19 | """ 20 | Save the 3D view point as a station parameter. 21 | """ 22 | 23 | # Start the RoboDK API 24 | RDK = robolink.Robolink() 25 | 26 | # Get the 3D view pose 27 | vp = RDK.ViewPose() 28 | 29 | # Convert to a string as XYZABC 30 | vp_str = str(robomath.Pose_2_KUKA(vp)) 31 | 32 | # Save it as a station parameter (saved with the RDK file) 33 | RDK.setParam(view_name, vp_str) 34 | 35 | RDK.ShowMessage("Current view point saved: " + vp_str, False) 36 | 37 | 38 | def runmain(): 39 | """ 40 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 41 | Important: Use the function name 'runmain()' if you want to compile this action. 42 | """ 43 | 44 | if roboapps.Unchecked(): 45 | roboapps.Exit() 46 | else: 47 | SaveView("Snapshot-View-0") 48 | 49 | 50 | if __name__ == '__main__': 51 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Snapshot/SaveView2.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Save the 3D view point as a station parameter, as specified by the user. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import roboapps, robodialogs 16 | 17 | from SaveView import SaveView 18 | 19 | 20 | def runmain(): 21 | """ 22 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 23 | Important: Use the function name 'runmain()' if you want to compile this action. 24 | """ 25 | 26 | if roboapps.Unchecked(): 27 | roboapps.Exit() 28 | else: 29 | id = robodialogs.InputDialog("View ID", 0) 30 | if id is None: 31 | roboapps.Exit() # User cancel 32 | SaveView('Snapshot-View-' + str(id).strip()) 33 | 34 | 35 | if __name__ == '__main__': 36 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Sound 3 | MenuParent=menu-Utilities 4 | MenuPriority=50 5 | MenuVisible=true 6 | ToolbarArea=2 7 | ToolbarSizeRatio=1.5 8 | RunCommands= 9 | Version=1.0.1 10 | 11 | [add_sound] 12 | DisplayName=Add Sound 13 | Description=Add Sound to the current station 14 | Visible=true 15 | Shortcut= 16 | Checkable=false 17 | CheckableGroup=-1 18 | AddToToolbar=true 19 | Priority=10 20 | TypeOnContextMenu= 21 | TypeOnDoubleClick= 22 | DeveloperOnly=false 23 | AddToMenu=true 24 | Compile=false 25 | 26 | [add_script] 27 | DisplayName=Add Sound Player Script 28 | Description=Add Sound Player Script to the current station 29 | Visible=true 30 | Shortcut= 31 | Checkable=false 32 | CheckableGroup=-1 33 | AddToToolbar=false 34 | Priority=15 35 | TypeOnContextMenu= 36 | TypeOnDoubleClick= 37 | DeveloperOnly=false 38 | AddToMenu=true 39 | Compile=false 40 | 41 | [sound_emitter] 42 | DisplayName=Toggle Sounds (Mute) 43 | Description=Enable or disable sounds (mute) 44 | Visible=true 45 | Shortcut= 46 | Checkable=true 47 | CheckableGroup=-1 48 | AddToToolbar=true 49 | Priority=20 50 | TypeOnContextMenu= 51 | TypeOnDoubleClick= 52 | DeveloperOnly=false 53 | AddToMenu=true 54 | Compile=false 55 | 56 | [play_sound] 57 | DisplayName=Play Sound 58 | Description=Play Sound 59 | Visible=false 60 | DeveloperOnly=false 61 | Shortcut= 62 | Checkable=false 63 | CheckableGroup=-1 64 | AddToMenu=false 65 | AddToToolbar=false 66 | Priority=50 67 | Compile=false 68 | TypeOnContextMenu= 69 | TypeOnDoubleClick= 70 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/add_script.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from robodk import robolink, roboapps 4 | from pathlib import Path 5 | 6 | 7 | def AddScript(): 8 | RDK = robolink.Robolink() 9 | filename = "play_sound" 10 | scripts = RDK.ItemList(robolink.ITEM_TYPE_PROGRAM_PYTHON, True) 11 | if filename not in scripts: 12 | current_folder = Path(__file__).absolute().parent 13 | file_path = current_folder / f"{filename}.py" 14 | if not file_path.exists(): 15 | file_path = current_folder.parent / f"{filename}.py" 16 | if not file_path.exists(): 17 | RDK.ShowMessage("Unable to add the sound script.") 18 | return 19 | RDK.AddFile(str(file_path)) 20 | else: 21 | RDK.ShowMessage("The sound script has already been added to your station.") 22 | 23 | 24 | def runmain(): 25 | if roboapps.Unchecked(): 26 | roboapps.Exit() 27 | else: 28 | AddScript() 29 | 30 | 31 | if __name__ == '__main__': 32 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/add_script.svg: -------------------------------------------------------------------------------- 1 | 2 | code icon - Licensed under Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) - Created with Iconfu.com - Derivative work of Material icons (Copyright Google Inc.) 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/requirements.txt: -------------------------------------------------------------------------------- 1 | PySide2==5.15.* 2 | multiprocessing 3 | pygame -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/sound_emitter.svg: -------------------------------------------------------------------------------- 1 | 2 | volume_off icon - Licensed under Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) - Created with Iconfu.com - Derivative work of Material icons (Copyright Google Inc.) 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/sound_emitterChecked.svg: -------------------------------------------------------------------------------- 1 | 2 | volume_up icon - Licensed under Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) - Created with Iconfu.com - Derivative work of Material icons (Copyright Google Inc.) 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/sounds/Beeping.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/Sound/sounds/Beeping.wav -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/sounds/Conveyor.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/Sound/sounds/Conveyor.wav -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/sounds/Drilling.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/Sound/sounds/Drilling.wav -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/sounds/DrillingShort.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/Sound/sounds/DrillingShort.wav -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/sounds/ServoMotor.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/Sound/sounds/ServoMotor.wav -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/sounds/Vacuum.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/Sound/sounds/Vacuum.wav -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/sounds/WaterJet.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/Sound/sounds/WaterJet.wav -------------------------------------------------------------------------------- /PluginAppLoader/Apps/Sound/sounds/Welding.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/Sound/sounds/Welding.wav -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SurfacePatternGenerator/AppConfig.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | MenuName=Surface Pattern Generator 3 | MenuParent=menu-Utilities 4 | MenuPriority=50 5 | ToolbarArea=2 6 | ToolbarSizeRatio=1.5 7 | RunCommands= 8 | MenuVisible=true 9 | Version=1.0.2 10 | 11 | [SurfacePatternGenerator] 12 | DisplayName=Surface Pattern Generator 13 | Description=Generate simple surface patterns on object 14 | Visible=true 15 | Shortcut= 16 | Checkable=false 17 | CheckableGroup=-1 18 | AddToToolbar=true 19 | Priority=100 20 | TypeOnContextMenu=5 21 | TypeOnDoubleClick= 22 | DeveloperOnly=false 23 | AddToMenu=true 24 | 25 | [Settings] 26 | DisplayName=Settings 27 | Description=Edit settings 28 | Visible=true 29 | Shortcut= 30 | Checkable=false 31 | CheckableGroup=-1 32 | AddToToolbar=false 33 | Priority=101 34 | TypeOnContextMenu= 35 | TypeOnDoubleClick= 36 | DeveloperOnly=false 37 | AddToMenu=true 38 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SurfacePatternGenerator/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SurfacePatternGenerator/SurfacePatternGenerator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/SurfacePatternGenerator/SurfacePatternGenerator.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/SurfacePatternGenerator/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/SurfacePatternGenerator/icon.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/Interface_Basic.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Set the interface to Basic. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | import InterfaceSettings 18 | 19 | 20 | def SetInterfaceBasic(): 21 | """ 22 | Set the interface to Basic. 23 | """ 24 | 25 | S = InterfaceSettings.InterfaceSettings() 26 | 27 | S.DISPLAY_THRESHOLD = 2.0 28 | S.SHOW_CURVES = False 29 | S.SHOW_POINTS = False 30 | S.ENABLE_MOUSE_FEEDBACK = False 31 | 32 | S.FLAG_ROBODK_TREE_VISIBLE = False 33 | S.FLAG_ROBODK_REFERENCES_VISIBLE = False 34 | S.FLAG_ROBODK_LEFT_CLICK = False 35 | S.FLAG_ROBODK_RIGHT_CLICK = False 36 | S.FLAG_ROBODK_DOUBLE_CLICK = False 37 | 38 | S.WINDOW_STATE[0] = 3 # Maximized 39 | S.TOOLBAR_LAYOUT[0] = 2 # Viewer 40 | 41 | S.Apply() 42 | 43 | 44 | def runmain(): 45 | """ 46 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 47 | Important: Use the function name 'runmain()' if you want to compile this action. 48 | """ 49 | 50 | if roboapps.Unchecked(): 51 | roboapps.Exit() 52 | else: 53 | SetInterfaceBasic() 54 | 55 | 56 | if __name__ == '__main__': 57 | runmain() 58 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/Interface_Defaults.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Set the interface to default. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | import InterfaceSettings 18 | 19 | 20 | def SetInterfaceDefault(): 21 | """ 22 | Set the interface to default. 23 | """ 24 | 25 | # Default settings of InterfaceSettings are the expected defaults 26 | S = InterfaceSettings.InterfaceSettings() 27 | S.Apply() 28 | 29 | 30 | def runmain(): 31 | """ 32 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 33 | Important: Use the function name 'runmain()' if you want to compile this action. 34 | """ 35 | 36 | if roboapps.Unchecked(): 37 | roboapps.Exit() 38 | else: 39 | SetInterfaceDefault() 40 | 41 | 42 | if __name__ == '__main__': 43 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/Interface_Fullscreen.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Set the interface to Fullscreen. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | import InterfaceSettings 18 | 19 | 20 | def SetInterfaceFullscreen(): 21 | """ 22 | Set the interface to Fullscreen. 23 | """ 24 | 25 | S = InterfaceSettings.InterfaceSettings() 26 | 27 | S.DISPLAY_THRESHOLD = 2.0 28 | S.SHOW_CURVES = False 29 | S.SHOW_POINTS = False 30 | S.ENABLE_MOUSE_FEEDBACK = False 31 | 32 | S.FLAG_ROBODK_TREE_VISIBLE = False 33 | S.FLAG_ROBODK_REFERENCES_VISIBLE = False 34 | S.FLAG_ROBODK_LEFT_CLICK = False 35 | S.FLAG_ROBODK_RIGHT_CLICK = False 36 | S.FLAG_ROBODK_DOUBLE_CLICK = False 37 | 38 | S.WINDOW_STATE[0] = 5 # Cinema 39 | S.TOOLBAR_LAYOUT[0] = 0 # Default 40 | 41 | S.Apply() 42 | 43 | 44 | def runmain(): 45 | """ 46 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 47 | Important: Use the function name 'runmain()' if you want to compile this action. 48 | """ 49 | 50 | if roboapps.Unchecked(): 51 | roboapps.Exit() 52 | else: 53 | SetInterfaceFullscreen() 54 | 55 | 56 | if __name__ == '__main__': 57 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/Interface_VR.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Set the interface to VR. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | import InterfaceSettings 18 | 19 | 20 | def SetInterfaceVR(): 21 | """ 22 | Set the interface to VR. 23 | """ 24 | 25 | S = InterfaceSettings.InterfaceSettings() 26 | 27 | S.DISPLAY_THRESHOLD = 2.0 28 | S.SHOW_CURVES = False 29 | S.SHOW_POINTS = False 30 | S.ENABLE_MOUSE_FEEDBACK = False 31 | 32 | S.FLAG_ROBODK_TREE_VISIBLE = False 33 | S.FLAG_ROBODK_REFERENCES_VISIBLE = False 34 | S.FLAG_ROBODK_LEFT_CLICK = False 35 | S.FLAG_ROBODK_RIGHT_CLICK = False 36 | S.FLAG_ROBODK_DOUBLE_CLICK = False 37 | 38 | S.WINDOW_STATE[0] = 3 # Maximized 39 | S.TOOLBAR_LAYOUT[0] = 2 # Viewer 40 | 41 | S.Apply() 42 | 43 | 44 | def runmain(): 45 | """ 46 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 47 | Important: Use the function name 'runmain()' if you want to compile this action. 48 | """ 49 | 50 | if roboapps.Unchecked(): 51 | roboapps.Exit() 52 | else: 53 | SetInterfaceVR() 54 | 55 | 56 | if __name__ == '__main__': 57 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/LoadView.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Restore the 3D view point from a saved station parameter. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, robomath, roboapps 16 | import ast 17 | 18 | 19 | def LoadView(view_name): 20 | """ 21 | Restore the 3D view point from a saved station parameter. 22 | """ 23 | 24 | # Start the RoboDK API 25 | RDK = robolink.Robolink() 26 | 27 | vp_str = RDK.getParam(view_name) 28 | if vp_str is None: 29 | RDK.ShowMessage(f"View \"{view_name}\" not recorded. Save a view point first", False) 30 | return 31 | 32 | # Lazy way to convert a list as a string to a list of floats 33 | vp_xyzabc = ast.literal_eval(vp_str) 34 | 35 | vp = robomath.KUKA_2_Pose(vp_xyzabc) 36 | RDK.setViewPose(vp) 37 | 38 | 39 | def runmain(): 40 | """ 41 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 42 | Important: Use the function name 'runmain()' if you want to compile this action. 43 | """ 44 | 45 | if roboapps.Unchecked(): 46 | roboapps.Exit() 47 | else: 48 | LoadView("ViewManager-View-0") 49 | 50 | 51 | if __name__ == '__main__': 52 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/Programs_Start.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/Programs_Stop.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Stop all programs and moving robots in the station. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | 18 | def StopProgramsAndRobots(): 19 | """ 20 | Stop all programs and moving robots in the station. 21 | """ 22 | 23 | RDK = robolink.Robolink() 24 | 25 | RDK.Render(False) 26 | 27 | programs = RDK.ItemList(robolink.ITEM_TYPE_PROGRAM) 28 | robots = RDK.ItemList(robolink.ITEM_TYPE_ROBOT) 29 | 30 | for item in robots + programs: 31 | item.Stop() 32 | 33 | RDK.Render(True) 34 | 35 | 36 | def runmain(): 37 | """ 38 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 39 | Important: Use the function name 'runmain()' if you want to compile this action. 40 | """ 41 | 42 | if roboapps.Unchecked(): 43 | roboapps.Exit() 44 | else: 45 | StopProgramsAndRobots() 46 | 47 | 48 | if __name__ == '__main__': 49 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/Programs_Stop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/SaveView.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Save the 3D view point as a station parameter. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, robomath, roboapps 16 | 17 | 18 | def SaveView(view_name): 19 | """ 20 | Save the 3D view point as a station parameter. 21 | """ 22 | 23 | # Start the RoboDK API 24 | RDK = robolink.Robolink() 25 | 26 | # Get the 3D view pose 27 | vp = RDK.ViewPose() 28 | 29 | # Convert to a string as XYZABC 30 | vp_str = str(robomath.Pose_2_KUKA(vp)) 31 | 32 | # Save it as a station parameter (saved with the RDK file) 33 | RDK.setParam(view_name, vp_str) 34 | 35 | RDK.ShowMessage("Current view point saved: " + vp_str, False) 36 | 37 | 38 | def runmain(): 39 | """ 40 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 41 | Important: Use the function name 'runmain()' if you want to compile this action. 42 | """ 43 | 44 | if roboapps.Unchecked(): 45 | roboapps.Exit() 46 | else: 47 | SaveView("ViewManager-View-0") 48 | 49 | 50 | if __name__ == '__main__': 51 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/SetSize.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Prompt the user to enter the size of the screen and update the main window of RoboDK accordingly. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps, robodialogs 16 | 17 | 18 | def SetSize(RDK=None): 19 | """ 20 | Prompt the user to enter the size of the screen and update the main window of RoboDK accordingly. 21 | """ 22 | if RDK is None: 23 | RDK = robolink.Robolink() 24 | 25 | # Get the desired screen size from the user 26 | entry = [1920, 1080] 27 | 28 | # If available, use the current size 29 | current_size = RDK.Command('SetSize3D') 30 | if len(current_size.split('x', maxsplit=2)) == 2: 31 | entry = current_size.split('x') 32 | 33 | newsize = robodialogs.InputDialog("Set the screen size (size of the 3D window).\nEnter ' ' to unlock the screen\nWidth x Height:", value=entry) 34 | if newsize is None: 35 | return 36 | 37 | RDK.Command("SetSize3D", f"{newsize[0]}x{newsize[1]}") 38 | 39 | 40 | def runmain(): 41 | """ 42 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 43 | Important: Use the function name 'runmain()' if you want to compile this action. 44 | """ 45 | 46 | if roboapps.Unchecked(): 47 | roboapps.Exit() 48 | else: 49 | SetSize() 50 | 51 | 52 | if __name__ == '__main__': 53 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/ShowCoordinates.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show/hide the reference frames in the 3D view. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | 18 | def ActionChecked(): 19 | """Hide the reference frames in the 3D view.""" 20 | 21 | RDK = robolink.Robolink() 22 | RDK.Command("ShowCoords", "0") 23 | 24 | 25 | def ActionUnchecked(): 26 | """Show the reference frames in the 3D view.""" 27 | 28 | RDK = robolink.Robolink() 29 | RDK.Command("ShowCoords", "1") 30 | 31 | 32 | def runmain(): 33 | """ 34 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 35 | Important: Use the function name 'runmain()' if you want to compile this action. 36 | """ 37 | 38 | if roboapps.Unchecked(): 39 | ActionUnchecked() 40 | else: 41 | roboapps.KeepChecked() 42 | ActionChecked() 43 | 44 | 45 | if __name__ == '__main__': 46 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/ShowCurves.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show/hide the curves in the 3D view. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | 18 | def ActionChecked(): 19 | """Hide the curves in the 3D view.""" 20 | 21 | RDK = robolink.Robolink() 22 | RDK.Command("DisplayCurves", 0) 23 | 24 | 25 | def ActionUnchecked(): 26 | """Show the curves in the 3D view.""" 27 | 28 | RDK = robolink.Robolink() 29 | RDK.Command("DisplayCurves", 1) 30 | 31 | 32 | def runmain(): 33 | """ 34 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 35 | Important: Use the function name 'runmain()' if you want to compile this action. 36 | """ 37 | 38 | if roboapps.Unchecked(): 39 | ActionUnchecked() 40 | else: 41 | roboapps.KeepChecked() 42 | ActionChecked() 43 | 44 | 45 | if __name__ == '__main__': 46 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/ShowPoints.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show/hide the points in the 3D view. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | 18 | def ActionChecked(): 19 | """Hide the points in the 3D view.""" 20 | 21 | RDK = robolink.Robolink() 22 | RDK.Command("DisplayPoints", 0) 23 | 24 | 25 | def ActionUnchecked(): 26 | """Show the points in the 3D view.""" 27 | 28 | RDK = robolink.Robolink() 29 | RDK.Command("DisplayPoints", 1) 30 | 31 | 32 | def runmain(): 33 | """ 34 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 35 | Important: Use the function name 'runmain()' if you want to compile this action. 36 | """ 37 | 38 | if roboapps.Unchecked(): 39 | ActionUnchecked() 40 | else: 41 | roboapps.KeepChecked() 42 | ActionChecked() 43 | 44 | 45 | if __name__ == '__main__': 46 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/ShowText.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show/hide the text in the 3D view. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | 18 | def ActionChecked(): 19 | """Hide the text in the 3D view.""" 20 | 21 | RDK = robolink.Robolink() 22 | RDK.Command("ShowText", "0") 23 | 24 | 25 | def ActionUnchecked(): 26 | """Show the text in the 3D view.""" 27 | 28 | RDK = robolink.Robolink() 29 | RDK.Command("ShowText", "1") 30 | 31 | 32 | def runmain(): 33 | """ 34 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 35 | Important: Use the function name 'runmain()' if you want to compile this action. 36 | """ 37 | 38 | if roboapps.Unchecked(): 39 | ActionUnchecked() 40 | else: 41 | roboapps.KeepChecked() 42 | ActionChecked() 43 | 44 | 45 | if __name__ == '__main__': 46 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/ShowTextObject.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show/hide the object text in the 3D view. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | 17 | 18 | def ActionChecked(): 19 | """Hide the object text in the 3D view.""" 20 | 21 | RDK = robolink.Robolink() 22 | RDK.Command("ShowTextObject", "0") 23 | 24 | 25 | def ActionUnchecked(): 26 | """Show the object text in the 3D view.""" 27 | 28 | RDK = robolink.Robolink() 29 | RDK.Command("ShowTextObject", "1") 30 | 31 | 32 | def runmain(): 33 | """ 34 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 35 | Important: Use the function name 'runmain()' if you want to compile this action. 36 | """ 37 | 38 | if roboapps.Unchecked(): 39 | ActionUnchecked() 40 | else: 41 | roboapps.KeepChecked() 42 | ActionChecked() 43 | 44 | 45 | if __name__ == '__main__': 46 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewManager/View2VR.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Set the current view in the RoboDK main window to the VR headset. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, robomath, roboapps 16 | 17 | 18 | def View2VR(RDK=None): 19 | """ 20 | Set the current view in the RoboDK main window to the VR headset. 21 | """ 22 | if RDK is None: 23 | RDK = robolink.Robolink() 24 | 25 | vp = RDK.ViewPose() 26 | 27 | result = RDK.Command("VR") # open the VR view 28 | 29 | strpose = str(robomath.Pose_2_TxyzRxyz(robomath.transl(0, 0, +2000) * vp))[1:-1] 30 | result = RDK.Command("ViewPoseVR", strpose) 31 | print(strpose) 32 | 33 | if result != "OK": 34 | RDK.ShowMessage("Problems setting VR view: " + result, False) 35 | return 36 | 37 | RDK.ShowMessage("Window view sent to VR headset", False) 38 | 39 | 40 | def runmain(): 41 | """ 42 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 43 | Important: Use the function name 'runmain()' if you want to compile this action. 44 | """ 45 | 46 | if roboapps.Unchecked(): 47 | roboapps.Exit() 48 | else: 49 | View2VR() 50 | 51 | 52 | if __name__ == '__main__': 53 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/HideAllTargets.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Hide all targets in the station. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | import _Utilities as utils 17 | 18 | 19 | def HideAllTargets(): 20 | """Hide all targets in the station.""" 21 | RDK = robolink.Robolink() 22 | 23 | targets = utils.getTargets(RDK) 24 | if targets: 25 | RDK.Render(False) 26 | for target in targets: 27 | target.setVisible(False) 28 | RDK.Render(True) 29 | 30 | 31 | def runmain(): 32 | """ 33 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 34 | Important: Use the function name 'runmain()' if you want to compile this action. 35 | """ 36 | 37 | if roboapps.Unchecked(): 38 | roboapps.Exit() 39 | else: 40 | HideAllTargets() 41 | 42 | 43 | if __name__ == '__main__': 44 | runmain() 45 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/HideChilds.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Hide (set invisible) all children of the selected items. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | import _Utilities as utils 17 | 18 | 19 | def ShowAll(): 20 | """ 21 | Hide (set invisible) all children of the selected items. 22 | """ 23 | RDK = robolink.Robolink() 24 | 25 | selection = RDK.Selection() 26 | if not selection: 27 | return 28 | 29 | RDK.Render(False) 30 | 31 | # for item in selection: 32 | # item.setParam('VisibleChilds', 0) # RoboDK 5.6.7 33 | 34 | def recurse(item): 35 | for child in item.Childs(): 36 | child.setVisible(False) 37 | recurse(child) 38 | 39 | for item in selection: 40 | recurse(item) 41 | 42 | RDK.Render(True) 43 | 44 | 45 | def runmain(): 46 | """ 47 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 48 | Important: Use the function name 'runmain()' if you want to compile this action. 49 | """ 50 | 51 | if roboapps.Unchecked(): 52 | roboapps.Exit() 53 | else: 54 | ShowAll() 55 | 56 | 57 | if __name__ == '__main__': 58 | runmain() 59 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowAll.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show (set visible) every item in the station. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | import _Utilities as utils 17 | 18 | 19 | def ShowAll(): 20 | """ 21 | Show (set visible) every item in the station. 22 | """ 23 | RDK = robolink.Robolink() 24 | 25 | RDK.Render(False) 26 | 27 | for item in RDK.ItemList(): 28 | item.setVisible(True) 29 | 30 | RDK.Render(True) 31 | 32 | 33 | def runmain(): 34 | """ 35 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 36 | Important: Use the function name 'runmain()' if you want to compile this action. 37 | """ 38 | 39 | if roboapps.Unchecked(): 40 | roboapps.Exit() 41 | else: 42 | ShowAll() 43 | 44 | 45 | if __name__ == '__main__': 46 | runmain() 47 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowAllButSelection.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show (set visible) every item in the station, except the user selection. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | import _Utilities as utils 17 | 18 | 19 | def ShowAllButSelection(): 20 | """ 21 | Show (set visible) every item in the station, except the user selection. 22 | """ 23 | RDK = robolink.Robolink() 24 | 25 | selection = RDK.Selection() 26 | if not selection: 27 | return 28 | 29 | RDK.Render(False) 30 | 31 | for item in RDK.ItemList(): 32 | if item in selection: 33 | item.setVisible(False) 34 | else: 35 | item.setVisible(True) 36 | 37 | RDK.Render(True) 38 | 39 | 40 | def runmain(): 41 | """ 42 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 43 | Important: Use the function name 'runmain()' if you want to compile this action. 44 | """ 45 | 46 | if roboapps.Unchecked(): 47 | roboapps.Exit() 48 | else: 49 | ShowAllButSelection() 50 | 51 | 52 | if __name__ == '__main__': 53 | runmain() 54 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowAllTargets.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show all targets in the station. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | from robodk import robolink, roboapps 15 | import _Utilities as utils 16 | 17 | 18 | def ShowAllTargets(): 19 | """Show all targets in the station.""" 20 | RDK = robolink.Robolink() 21 | 22 | targets = utils.getTargets(RDK) 23 | if targets: 24 | RDK.Render(False) 25 | for target in targets: 26 | target.setVisible(True) 27 | RDK.Render(True) 28 | 29 | 30 | def runmain(): 31 | """ 32 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 33 | Important: Use the function name 'runmain()' if you want to compile this action. 34 | """ 35 | 36 | if roboapps.Unchecked(): 37 | roboapps.Exit() 38 | else: 39 | ShowAllTargets() 40 | 41 | 42 | if __name__ == '__main__': 43 | runmain() -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowCartesianTargets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ViewUtilities/ShowCartesianTargets.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowCartesianTargets.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show all cartesian targets and hide joint targets in the station. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | import _Utilities as utils 17 | 18 | 19 | def ShowCartesianTargets(): 20 | """Show all cartesian targets and hide joint targets in the station.""" 21 | RDK = robolink.Robolink() 22 | 23 | show_targets = utils.getCartesianTargets(RDK) 24 | all_targets = utils.getTargets(RDK) 25 | if all_targets: 26 | RDK.Render(False) 27 | for target in all_targets: 28 | if target in show_targets: 29 | target.setVisible(True) 30 | else: 31 | target.setVisible(False) 32 | RDK.Render(True) 33 | 34 | 35 | def runmain(): 36 | """ 37 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 38 | Important: Use the function name 'runmain()' if you want to compile this action. 39 | """ 40 | 41 | if roboapps.Unchecked(): 42 | roboapps.Exit() 43 | else: 44 | ShowCartesianTargets() 45 | 46 | 47 | if __name__ == '__main__': 48 | runmain() 49 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowChilds.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show (set visible) all children of the selected items. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | import _Utilities as utils 17 | 18 | 19 | def ShowAll(): 20 | """ 21 | Show (set visible) all children of the selected items. 22 | """ 23 | RDK = robolink.Robolink() 24 | 25 | selection = RDK.Selection() 26 | if not selection: 27 | return 28 | 29 | RDK.Render(False) 30 | 31 | # for item in selection: 32 | # item.setParam('VisibleChilds', 1) # RoboDK 5.6.7 33 | 34 | def recurse(item): 35 | for child in item.Childs(): 36 | child.setVisible(True) 37 | recurse(child) 38 | 39 | for item in selection: 40 | recurse(item) 41 | 42 | RDK.Render(True) 43 | 44 | 45 | def runmain(): 46 | """ 47 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 48 | Important: Use the function name 'runmain()' if you want to compile this action. 49 | """ 50 | 51 | if roboapps.Unchecked(): 52 | roboapps.Exit() 53 | else: 54 | ShowAll() 55 | 56 | 57 | if __name__ == '__main__': 58 | runmain() 59 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowJointTargets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ViewUtilities/ShowJointTargets.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowJointTargets.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show all joint targets and hide cartesian targets in the station. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | import _Utilities as utils 17 | 18 | 19 | def ShowJointTargets(): 20 | """Show all joint targets and hide cartesian targets in the station.""" 21 | RDK = robolink.Robolink() 22 | 23 | show_targets = utils.getJointTargets(RDK) 24 | all_targets = utils.getTargets(RDK) 25 | if all_targets: 26 | RDK.Render(False) 27 | for target in all_targets: 28 | if target in show_targets: 29 | target.setVisible(True) 30 | else: 31 | target.setVisible(False) 32 | RDK.Render(True) 33 | 34 | 35 | def runmain(): 36 | """ 37 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 38 | Important: Use the function name 'runmain()' if you want to compile this action. 39 | """ 40 | 41 | if roboapps.Unchecked(): 42 | roboapps.Exit() 43 | else: 44 | ShowJointTargets() 45 | 46 | 47 | if __name__ == '__main__': 48 | runmain() 49 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowOnlySelection.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show (set visible) the selected items, and hide (set invisible) all other items. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | import _Utilities as utils 17 | 18 | 19 | def ShowOnlySelection(): 20 | """ 21 | Show (set visible) the selected items, and hide (set invisible) all other items. 22 | """ 23 | RDK = robolink.Robolink() 24 | 25 | selection = RDK.Selection() 26 | if not selection: 27 | return 28 | 29 | RDK.Render(False) 30 | 31 | for item in RDK.ItemList(): 32 | if item in selection: 33 | item.setVisible(True) 34 | else: 35 | item.setVisible(False) 36 | 37 | RDK.Render(True) 38 | 39 | 40 | def runmain(): 41 | """ 42 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 43 | Important: Use the function name 'runmain()' if you want to compile this action. 44 | """ 45 | 46 | if roboapps.Unchecked(): 47 | roboapps.Exit() 48 | else: 49 | ShowOnlySelection() 50 | 51 | 52 | if __name__ == '__main__': 53 | runmain() 54 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowProgramTargets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ViewUtilities/ShowProgramTargets.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowProgramTargets.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show targets from selected program(s) and hide all others. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | import _Utilities as utils 17 | 18 | 19 | def ShowProgramTargets(): 20 | """Show targets from selected program(s) and hide all others.""" 21 | RDK = robolink.Robolink() 22 | 23 | programs = [x for x in RDK.Selection() if x.Type() == robolink.ITEM_TYPE_PROGRAM] 24 | if not programs: 25 | return 26 | 27 | show_targets = [] 28 | for program in programs: 29 | show_targets.extend(utils.getProgramTargets(program)) 30 | 31 | all_targets = utils.getTargets(RDK) 32 | if all_targets: 33 | RDK.Render(False) 34 | for target in all_targets: 35 | if target in show_targets: 36 | target.setVisible(True) 37 | else: 38 | target.setVisible(False) 39 | RDK.Render(True) 40 | 41 | 42 | def runmain(): 43 | """ 44 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 45 | Important: Use the function name 'runmain()' if you want to compile this action. 46 | """ 47 | 48 | if roboapps.Unchecked(): 49 | roboapps.Exit() 50 | else: 51 | ShowProgramTargets() 52 | 53 | 54 | if __name__ == '__main__': 55 | runmain() 56 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowRobotTargets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ViewUtilities/ShowRobotTargets.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/ShowRobotTargets.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Show targets from selected robot(s) and hide all others. 5 | # 6 | # More information about the RoboDK API for Python here: 7 | # https://robodk.com/doc/en/RoboDK-API.html 8 | # https://robodk.com/doc/en/PythonAPI/index.html 9 | # 10 | # More information on RoboDK Apps here: 11 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 12 | # 13 | # -------------------------------------------- 14 | 15 | from robodk import robolink, roboapps 16 | import _Utilities as utils 17 | 18 | 19 | def ShowRobotTargets(): 20 | """Show targets from selected robot(s) and hide all others.""" 21 | RDK = robolink.Robolink() 22 | 23 | robots = [x for x in RDK.Selection() if x.Type() == robolink.ITEM_TYPE_ROBOT] 24 | if not robots: 25 | return 26 | 27 | show_targets = [] 28 | for robot in robots: 29 | show_targets.extend(utils.getRobotTargets(robot)) 30 | 31 | all_targets = utils.getTargets(RDK) 32 | if all_targets: 33 | RDK.Render(False) 34 | for target in all_targets: 35 | if target in show_targets: 36 | target.setVisible(True) 37 | else: 38 | target.setVisible(False) 39 | RDK.Render(True) 40 | 41 | 42 | def runmain(): 43 | """ 44 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 45 | Important: Use the function name 'runmain()' if you want to compile this action. 46 | """ 47 | 48 | if roboapps.Unchecked(): 49 | roboapps.Exit() 50 | else: 51 | ShowRobotTargets() 52 | 53 | 54 | if __name__ == '__main__': 55 | runmain() 56 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/TreeCollapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ViewUtilities/TreeCollapse.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/TreeCollapse.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Collapse the selected items and their children in the tree. 5 | # This also collapse (hide instructions) of programs. 6 | # 7 | # More information about the RoboDK API for Python here: 8 | # https://robodk.com/doc/en/RoboDK-API.html 9 | # https://robodk.com/doc/en/PythonAPI/index.html 10 | # 11 | # More information on RoboDK Apps here: 12 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 13 | # 14 | # -------------------------------------------- 15 | 16 | from robodk import robolink, roboapps 17 | import _Utilities as utils 18 | 19 | 20 | def TreeCollapse(): 21 | """ 22 | Collapse the selected items and their children in the tree. 23 | This also collapse (hide instructions) of programs. 24 | """ 25 | RDK = robolink.Robolink() 26 | 27 | selection = RDK.Selection() 28 | if not selection: 29 | return 30 | 31 | RDK.Render(False) 32 | 33 | def recurse(item): 34 | for child in item.Childs(): 35 | utils.collapse(child) 36 | recurse(child) 37 | 38 | for item in selection: 39 | utils.collapse(item) 40 | recurse(item) 41 | 42 | RDK.Render(True) 43 | 44 | 45 | def runmain(): 46 | """ 47 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 48 | Important: Use the function name 'runmain()' if you want to compile this action. 49 | """ 50 | 51 | if roboapps.Unchecked(): 52 | roboapps.Exit() 53 | else: 54 | TreeCollapse() 55 | 56 | 57 | if __name__ == '__main__': 58 | runmain() 59 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/TreeExpand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ViewUtilities/TreeExpand.png -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/TreeExpand.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------- 2 | # --------------- DESCRIPTION ---------------- 3 | # 4 | # Expand the selected items and their children in the tree. 5 | # This also expand (show instructions) of programs. 6 | # 7 | # More information about the RoboDK API for Python here: 8 | # https://robodk.com/doc/en/RoboDK-API.html 9 | # https://robodk.com/doc/en/PythonAPI/index.html 10 | # 11 | # More information on RoboDK Apps here: 12 | # https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAppLoader 13 | # 14 | # -------------------------------------------- 15 | 16 | from robodk import robolink, roboapps 17 | import _Utilities as utils 18 | 19 | 20 | def TreeExpand(): 21 | """ 22 | Expand the selected items and their children in the tree. 23 | This also expand (show instructions) of programs. 24 | """ 25 | RDK = robolink.Robolink() 26 | 27 | selection = RDK.Selection() 28 | if not selection: 29 | return 30 | 31 | RDK.Render(False) 32 | 33 | def recurse(item): 34 | for child in item.Childs(): 35 | utils.expand(child) 36 | recurse(child) 37 | 38 | for item in selection: 39 | utils.expand(item) 40 | recurse(item) 41 | 42 | RDK.Render(True) 43 | 44 | 45 | def runmain(): 46 | """ 47 | Entrypoint of this action when it is executed on its own or interacted with in RoboDK. 48 | Important: Use the function name 'runmain()' if you want to compile this action. 49 | """ 50 | 51 | if roboapps.Unchecked(): 52 | roboapps.Exit() 53 | else: 54 | TreeExpand() 55 | 56 | 57 | if __name__ == '__main__': 58 | runmain() 59 | -------------------------------------------------------------------------------- /PluginAppLoader/Apps/ViewUtilities/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/Apps/ViewUtilities/icon.png -------------------------------------------------------------------------------- /PluginAppLoader/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAppLoader/applistdelegate.cpp: -------------------------------------------------------------------------------- 1 | #include "applistdelegate.h" 2 | 3 | #include 4 | 5 | 6 | QVariant AppListProxyModel::data(const QModelIndex& proxyIndex, int role) const 7 | { 8 | if (role == Qt::DisplayRole) 9 | { 10 | QVariant var = QIdentityProxyModel::data(proxyIndex, Qt::UserRole); 11 | if (!var.isNull()) 12 | return var; 13 | } 14 | 15 | return QIdentityProxyModel::data(proxyIndex, role); 16 | } 17 | 18 | AppListDelegate::AppListDelegate(QObject* parent) 19 | : QStyledItemDelegate(parent) 20 | , _proxy(new AppListProxyModel()) 21 | { 22 | } 23 | 24 | void AppListDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const 25 | { 26 | if (_proxy->sourceModel() != index.model()) 27 | _proxy->setSourceModel(const_cast(index.model())); 28 | 29 | QStyledItemDelegate::paint(painter, option, _proxy->mapFromSource(index)); 30 | } 31 | 32 | QSize AppListDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const 33 | { 34 | if (_proxy->sourceModel() != index.model()) 35 | _proxy->setSourceModel(const_cast(index.model())); 36 | 37 | QSize hint = QStyledItemDelegate::sizeHint(option, _proxy->mapFromSource(index)); 38 | if (index.column() == 0 && hint.width() < 100) 39 | hint.setWidth(100); 40 | 41 | return hint; 42 | } 43 | -------------------------------------------------------------------------------- /PluginAppLoader/applistdelegate.h: -------------------------------------------------------------------------------- 1 | #ifndef APPLISTDELEGATE_H 2 | #define APPLISTDELEGATE_H 3 | 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | 10 | class AppListProxyModel : public QIdentityProxyModel 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | QVariant data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const override; 16 | }; 17 | 18 | class AppListDelegate : public QStyledItemDelegate 19 | { 20 | Q_OBJECT 21 | public: 22 | explicit AppListDelegate(QObject* parent = nullptr); 23 | 24 | void paint(QPainter* painter, const QStyleOptionViewItem& option, 25 | const QModelIndex& index) const override; 26 | QSize sizeHint(const QStyleOptionViewItem& option, 27 | const QModelIndex& index) const override; 28 | 29 | private: 30 | QScopedPointer _proxy; 31 | }; 32 | 33 | 34 | #endif // APPLISTDELEGATE_H 35 | -------------------------------------------------------------------------------- /PluginAppLoader/dialogapplist.h: -------------------------------------------------------------------------------- 1 | #ifndef FORMPLUGINMANAGER_H 2 | #define FORMPLUGINMANAGER_H 3 | 4 | #include 5 | 6 | class AppLoader; 7 | 8 | namespace Ui { 9 | class DialogAppList; 10 | } 11 | 12 | class DialogAppList : public QDialog 13 | { 14 | 15 | Q_OBJECT 16 | 17 | public: 18 | explicit DialogAppList(AppLoader *apploader, QWidget *parent = nullptr); 19 | ~DialogAppList(); 20 | 21 | void UpdateForm(); 22 | 23 | 24 | 25 | private slots: 26 | /// OK button selected 27 | void on_btnOk_clicked(); 28 | 29 | /// Stop actions started by apps 30 | void on_btnStopAppActions_clicked(); 31 | 32 | /// Scan for app changes and reload all 33 | void on_btnReload_clicked(); 34 | 35 | /// Enable/Disable application 36 | void onButtonActionClicked(); 37 | 38 | /// Open application location 39 | void onButtonFolderClicked(); 40 | 41 | void on_tableWidget_cellDoubleClicked(int row, int column); 42 | 43 | private: 44 | AppLoader *pAppLoader; 45 | Ui::DialogAppList *ui; 46 | }; 47 | 48 | #endif // FORMPLUGINMANAGER_H 49 | -------------------------------------------------------------------------------- /PluginAppLoader/doc/Apps-Loaded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/doc/Apps-Loaded.png -------------------------------------------------------------------------------- /PluginAppLoader/doc/Apps-Menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/doc/Apps-Menu.png -------------------------------------------------------------------------------- /PluginAppLoader/doc/PackageCreate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAppLoader/doc/PackageCreate.png -------------------------------------------------------------------------------- /PluginAppLoader/installerdialog.h: -------------------------------------------------------------------------------- 1 | #ifndef INSTALLERDIALOG_H 2 | #define INSTALLERDIALOG_H 3 | 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | 11 | class AppLoader; 12 | 13 | namespace Ui { 14 | class InstallerDialog; 15 | } 16 | 17 | 18 | struct ApplicationRecord 19 | { 20 | QString name; 21 | QString path; 22 | QVersionNumber installedVersion; 23 | QVersionNumber proposedVersion; 24 | bool global; 25 | 26 | void clear(){ 27 | name.clear(); 28 | path.clear(); 29 | installedVersion = QVersionNumber(); 30 | proposedVersion = QVersionNumber(); 31 | global = false; 32 | } 33 | }; 34 | 35 | 36 | class InstallerDialog : public QDialog 37 | { 38 | Q_OBJECT 39 | 40 | public: 41 | explicit InstallerDialog(AppLoader *apploader, QWidget* parent = nullptr); 42 | ~InstallerDialog(); 43 | 44 | bool processPackage(const QString& package); 45 | bool addExistingApp(ApplicationRecord& record, const QDir& folder, bool global); 46 | void populateTable(int limit, bool installed); 47 | 48 | private slots: 49 | void on_buttonBox_accepted(); 50 | 51 | private: 52 | Ui::InstallerDialog* ui; 53 | AppLoader* pAppLoader; 54 | QString packageName; 55 | QList records; 56 | }; 57 | 58 | #endif // INSTALLERDIALOG_H 59 | -------------------------------------------------------------------------------- /PluginAppLoader/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T19:57:28.314764Z 7 | RoboDK 8 | The App Loader Plug-in for RoboDK is a manager for RoboDK Apps. It is the predecessor to the Add-in Manager. 9 | com.robodk.plugin.apploader 10 | 11 | eng 12 | RoboDK 13 | 2023-11-03T19:50:56.864595Z 14 | 1 15 | App Loader 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | 21 | 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /AppLoader.dll 27 | /README.md 28 | /doc/Apps-Loaded.png 29 | /doc/Apps-Menu.png 30 | /doc/PackageCreate.png 31 | 32 | 33 | -------------------------------------------------------------------------------- /PluginAppLoader/tableheader.h: -------------------------------------------------------------------------------- 1 | #ifndef TABLEHEADER_H 2 | #define TABLEHEADER_H 3 | 4 | 5 | #include 6 | #include 7 | 8 | 9 | class TableHeader : public QHeaderView 10 | { 11 | Q_OBJECT 12 | 13 | public: 14 | TableHeader(Qt::Orientation orientation, QWidget* parent = nullptr): 15 | QHeaderView(orientation, parent){ 16 | setSectionsClickable(true); 17 | } 18 | 19 | protected: 20 | virtual void mousePressEvent(QMouseEvent *e){ 21 | int index = logicalIndexAt(e->pos()); 22 | 23 | bool clickable = sectionsClickable(); 24 | 25 | if (index == 3 || index == 6) 26 | setSectionsClickable(false); 27 | 28 | QHeaderView::mousePressEvent(e); 29 | 30 | setSectionsClickable(clickable); 31 | } 32 | 33 | virtual void mouseReleaseEvent(QMouseEvent *e){ 34 | int index = logicalIndexAt(e->pos()); 35 | 36 | bool clickable = sectionsClickable(); 37 | 38 | if (index == 3 || index == 6) 39 | setSectionsClickable(false); 40 | 41 | QHeaderView::mouseReleaseEvent(e); 42 | 43 | setSectionsClickable(clickable); 44 | } 45 | }; 46 | 47 | 48 | #endif // TABLEHEADER_H 49 | -------------------------------------------------------------------------------- /PluginAppLoader/unzipper.cpp: -------------------------------------------------------------------------------- 1 | #include "unzipper.h" 2 | 3 | #include 4 | 5 | #include "zip.h" 6 | 7 | 8 | static size_t callbackExtract(void* argument, uint64_t offset, const void *buffer, size_t size) { 9 | QFile* file = static_cast(argument); 10 | if (!file->seek(static_cast(offset))) 11 | return 0; 12 | 13 | qint64 result = file->write(static_cast(buffer), static_cast(size)); 14 | if (result < 0) 15 | return 0; 16 | 17 | return static_cast(result); 18 | } 19 | 20 | 21 | Unzipper::Unzipper(const QString& fileName) 22 | : _fileName(fileName) 23 | , _zip(nullptr) 24 | { 25 | } 26 | 27 | Unzipper::~Unzipper() { 28 | close(); 29 | } 30 | 31 | bool Unzipper::open() { 32 | if (isOpen() || _fileName.isEmpty()) 33 | return false; 34 | 35 | _zip = zip_open(_fileName.toUtf8().data(), 0, 'r'); 36 | if (!_zip) 37 | return false; 38 | 39 | return true; 40 | } 41 | 42 | void Unzipper::close() { 43 | zip_close(_zip); 44 | _zip = nullptr; 45 | } 46 | 47 | bool Unzipper::selectEntry(quint32 index) { 48 | return (zip_entry_openbyindex(_zip, index) == 0); 49 | } 50 | 51 | quint32 Unzipper::entriesCount() const { 52 | ssize_t result = zip_entries_total(_zip); 53 | return (result < 0) ? 0 : static_cast(result); 54 | } 55 | 56 | QString Unzipper::entryName() const { 57 | return QString::fromUtf8(zip_entry_name(_zip)); 58 | } 59 | 60 | bool Unzipper::entryIsDirectory() const { 61 | return (zip_entry_isdir(_zip) == 1); 62 | } 63 | 64 | bool Unzipper::entryExtract(const QString& destination, bool overwrite) { 65 | QFile file(destination); 66 | 67 | if (entryIsDirectory()) 68 | return false; 69 | 70 | if (!file.open(overwrite ? QFile::WriteOnly : QFile::NewOnly)) 71 | return false; 72 | 73 | return (zip_entry_extract(_zip, &callbackExtract, &file) >= 0); 74 | } 75 | 76 | bool Unzipper::isOpen() const { 77 | return (_zip != nullptr); 78 | } 79 | -------------------------------------------------------------------------------- /PluginAppLoader/unzipper.h: -------------------------------------------------------------------------------- 1 | #ifndef UNZIPPER_H 2 | #define UNZIPPER_H 3 | 4 | 5 | #include 6 | 7 | 8 | struct zip_t; 9 | 10 | 11 | class Unzipper 12 | { 13 | public: 14 | Unzipper(const QString &fileName); 15 | ~Unzipper(); 16 | 17 | bool open(); 18 | void close(); 19 | 20 | bool selectEntry(quint32 index); 21 | 22 | quint32 entriesCount() const; 23 | QString entryName() const; 24 | bool entryIsDirectory() const; 25 | bool entryExtract(const QString& destination, bool overwrite = true); 26 | 27 | bool isOpen() const; 28 | 29 | private: 30 | QString _fileName; 31 | 32 | zip_t* _zip; 33 | }; 34 | 35 | #endif // UNZIPPER_H 36 | -------------------------------------------------------------------------------- /PluginAttachObject/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAttachObject/PluginAttachObject.rdk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAttachObject/PluginAttachObject.rdk -------------------------------------------------------------------------------- /PluginAttachObject/doc/assembly-view-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAttachObject/doc/assembly-view-portrait.png -------------------------------------------------------------------------------- /PluginAttachObject/doc/joint-entry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAttachObject/doc/joint-entry.png -------------------------------------------------------------------------------- /PluginAttachObject/doc/object-menus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAttachObject/doc/object-menus.png -------------------------------------------------------------------------------- /PluginAttachObject/doc/parts-view-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAttachObject/doc/parts-view-portrait.png -------------------------------------------------------------------------------- /PluginAttachObject/doc/robot-menus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAttachObject/doc/robot-menus.png -------------------------------------------------------------------------------- /PluginAttachObject/doc/robot-view-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginAttachObject/doc/robot-view-portrait.png -------------------------------------------------------------------------------- /PluginAttachView/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginAttachView/README.md: -------------------------------------------------------------------------------- 1 | # Attach View 2 | 3 | The Attach View Plug-in for RoboDK adds the ability to anchor the position of the view to a robot, tool or frame. 4 | It can be used to create targets at the view location, or create cinematic effects. 5 | 6 | 7 | ## Features 8 | 9 | - Attach the view position to a robot, tool or frame 10 | - Attach a robot, tool or frame to the view position 11 | 12 | 13 | ## Prerequisites 14 | - [RoboDK](https://robodk.com/download) 15 | 16 | 17 | ## Installation 18 | 19 | Plug-ins are usually packaged as RoboDK Packages (.rdkp), which are automatically installed when opened with RoboDK. 20 | To manually install this Plug-in, copy the content of this folder to your RoboDK Plug-ins folder (typically `C:/RoboDK/bin/plugins`). 21 | 22 | 23 | ## Configuration 24 | 25 | 1. Enable the Plug-in (Tools->Add-ins or Shift+I) 26 | 27 | 28 | ## About RoboDK Plug-ins 29 | 30 | The RoboDK Plug-In Interface allows you to extend or customize RoboDK software with Plug-ins linked natively into the core of RoboDK. 31 | 32 | You can integrate your Plug-in as part of the RoboDK user interface and easily customize RoboDK for offline programming and simulation purposes. 33 | For instance, by adding buttons in the menu and the toolbar, processing events, synchronizing with render, accept API command calls, and more. 34 | 35 | Once you complete developing your Plug-in, you can easily distribute your Plug-in as a self-contained package file (.rdkp). 36 | 37 | Plug-ins are handled by RoboDK with the Add-in Manager, and the [Plug-In Interface](https://github.com/RoboDK/Plug-In-Interface) provides the necessary C++ tools to build your Plug-in. 38 | 39 | You can find more information about the Plug-In Interface and sample Plug-ins in the [Plug-In Interface GitHub](https://github.com/RoboDK/Plug-In-Interface) and the [documentation](https://robodk.com/doc/en/PlugIns/index.html). 40 | -------------------------------------------------------------------------------- /PluginAttachView/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:21.118336Z 7 | RoboDK 8 | The Attach View Plug-in for RoboDK adds the ability to anchor the position of the view to a robot, tool or frame. 9 | com.robodk.plugin.pluginattachview 10 | 11 | eng 12 | RoboDK 13 | 2023-11-03T19:50:57.220779Z 14 | 1 15 | Attach View 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAttachView 21 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginAttachView 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /PluginAttachView.dll 27 | /README.md 28 | 29 | 30 | -------------------------------------------------------------------------------- /PluginBallbarTracker/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginBallbarTracker/doc/ballbar_structure.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginBallbarTracker/doc/ballbar_structure.PNG -------------------------------------------------------------------------------- /PluginBallbarTracker/doc/menu.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginBallbarTracker/doc/menu.PNG -------------------------------------------------------------------------------- /PluginBallbarTracker/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:21.290172Z 7 | RoboDK 8 | The Ballbar Tracker Plug-in for RoboDK allows you to attach a ballbar to a robot. 9 | com.robodk.plugin.pluginballbartracker 10 | 11 | eng 12 | RoboDK 13 | 2023-11-03T19:50:57.268096Z 14 | 1 15 | Ballbar Tracker 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginBallbarTracker 21 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginBallbarTracker 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /PluginBallbarTracker.dll 27 | /README.md 28 | /doc/ballbar_structure.PNG 29 | /doc/menu.PNG 30 | 31 | 32 | -------------------------------------------------------------------------------- /PluginCollisionSensor/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginCollisionSensor/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:21.645367Z 7 | RoboDK 8 | The Collision Sensor Plug-in for RoboDK adds the ability to simulate sensors, such as a laser sensors or contact switches. 9 | com.robodk.plugin.plugincollisionsensor 10 | 11 | eng 12 | RoboDK 13 | 2023-11-03T19:50:57.345133Z 14 | 1 15 | Collision Sensor 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginCollisionSensor 21 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginCollisionSensor 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /PluginCollisionSensor.dll 27 | /README.md 28 | 29 | 30 | -------------------------------------------------------------------------------- /PluginEmbedding/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2024-10-10T17:20:22.096047Z 7 | RoboDK 8 | Embedding Example Plug-in for RoboDK 9 | com.robodk.plugin.pluginembedding 10 | 11 | eng 12 | RoboDK 13 | 2024-10-10T17:20:22.096047Z 14 | 1 15 | Embedding Example 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | 21 | 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /PluginEmbedding.dll 27 | 28 | 29 | -------------------------------------------------------------------------------- /PluginEmbedding/pluginform.h: -------------------------------------------------------------------------------- 1 | #ifndef PLUGINFORM_H 2 | #define PLUGINFORM_H 3 | 4 | 5 | #include "ui_pluginform.h" 6 | 7 | #include 8 | 9 | 10 | class QMainWindow; 11 | class IRoboDK; 12 | 13 | 14 | class PluginForm : public QWidget, private Ui::PluginForm 15 | { 16 | Q_OBJECT 17 | 18 | public: 19 | explicit PluginForm(QMainWindow* mainWindow, IRoboDK* rdk, QWidget* parent = nullptr); 20 | 21 | bool isAttached() const; 22 | 23 | public slots: 24 | void attachRoboDK(); 25 | void detachRoboDK(); 26 | void minimizeRoboDK(); 27 | void maximizeRoboDK(); 28 | void restoreRoboDK(); 29 | void hideRoboDKMenu(); 30 | void showRoboDKMenu(); 31 | void hideRoboDKToolBar(); 32 | void showRoboDKToolBar(); 33 | void hideRoboDKStatusBar(); 34 | void showRoboDKStatusBar(); 35 | 36 | signals: 37 | void visibilityChanged(bool visible); 38 | void attachmentChanged(bool attached); 39 | 40 | protected: 41 | void changeEvent(QEvent* event) override; 42 | void showEvent(QShowEvent*) override; 43 | void closeEvent(QCloseEvent*) override; 44 | 45 | private: 46 | QMainWindow* _mainWindow; 47 | IRoboDK* _rdk; 48 | 49 | QByteArray _savedGeometry; 50 | QByteArray _savedState; 51 | }; 52 | 53 | 54 | #endif // PLUGINFORM_H 55 | -------------------------------------------------------------------------------- /PluginExample/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginExample/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:22.102701Z 7 | RoboDK 8 | The Example Plug-in is a RoboDK Plugin that showcases the Plug-in Interface. 9 | com.robodk.plugin.pluginexample 10 | 11 | eng 12 | RoboDK 13 | 2023-11-03T19:50:57.469722Z 14 | 1 15 | Plug-in Example 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | 21 | 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /PluginExample.dll 27 | 28 | 29 | -------------------------------------------------------------------------------- /PluginExample/resources/code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginExample/resources/code.png -------------------------------------------------------------------------------- /PluginExample/resources/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginExample/resources/help.png -------------------------------------------------------------------------------- /PluginExample/resources/information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginExample/resources/information.png -------------------------------------------------------------------------------- /PluginExample/resources1.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | resources/code.png 4 | resources/help.png 5 | resources/information.png 6 | 7 | 8 | -------------------------------------------------------------------------------- /PluginLVDT/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginLVDT/doc/linear-gage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginLVDT/doc/linear-gage.png -------------------------------------------------------------------------------- /PluginLVDT/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:22.812470Z 7 | RoboDK 8 | The Linear Gage Sensor (LVDT) Plug-in for RoboDK can dynamically move a linear gage sensor, such as an LVDT. 9 | com.robodk.plugin.pluginlvdt 10 | 11 | eng 12 | RoboDK 13 | 2023-11-03T19:50:57.684068Z 14 | 1 15 | Linear Sensor (LVDT) 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginLVDT 21 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginLVDT 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /PluginLVDT.dll 27 | /README.md 28 | /doc/linear-gage.png 29 | 30 | 31 | -------------------------------------------------------------------------------- /PluginLockTCP/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginLockTCP/doc/locked_1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginLockTCP/doc/locked_1.PNG -------------------------------------------------------------------------------- /PluginLockTCP/doc/locked_2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginLockTCP/doc/locked_2.PNG -------------------------------------------------------------------------------- /PluginLockTCP/doc/menu.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginLockTCP/doc/menu.PNG -------------------------------------------------------------------------------- /PluginLockTCP/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:22.562275Z 7 | RoboDK 8 | The Lock TCP Plug-in for RoboDK adds the ability to lock the TCP position for a 6 axis robot mounted on a synchronized external axis. 9 | com.robodk.plugin.pluginlocktcp 10 | 11 | eng 12 | RoboDK 13 | 2023-11-03T19:50:57.593306Z 14 | 1 15 | Lock TCP 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginLockTCP 21 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginLockTCP 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /PluginLockTCP.dll 27 | /README.md 28 | /doc/locked_1.PNG 29 | /doc/locked_2.PNG 30 | /doc/menu.PNG 31 | 32 | 33 | -------------------------------------------------------------------------------- /PluginOpenGL-Shaders/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginOpenGL-Shaders/LICENSE.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------- 2 | MIT license 3 | Copyright (c) 2020 RoboDK Inc. 4 | Created by Phillip May 5 | To illustrate how to use the RoboDK Plugin Interface, OpenGL and the RoboDK API 6 | -------------------------------------- 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PluginOpenGL-Shaders/chip8core.h: -------------------------------------------------------------------------------- 1 | #ifndef CHIP8CORE_H 2 | #define CHIP8CORE_H 3 | #include 4 | 5 | void chip8Init(RoboDK*); 6 | void chip8EmulateCycle(); 7 | void chip8EmulationLoop(); 8 | void chip8EndEmulationLoop(); 9 | void chip8UpdateButtons(bool *input); 10 | void chip8Render(RoboDK *RDK,Item); 11 | void chip8LoadFile(QByteArray); 12 | 13 | #endif // CHIP8CORE_H 14 | -------------------------------------------------------------------------------- /PluginOpenGL-Shaders/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:23.031127Z 7 | RoboDK 8 | The OpenGL (Shaders) Plug-in for RoboDK shows how to draw OpenGL shaders with RoboDK. 9 | com.robodk.plugin.pluginopenglshaders 10 | 11 | eng 12 | 13 | 2023-01-11T02:21:23.031127Z 14 | 1 15 | OpenGL (Shaders) 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | 21 | 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /PluginOpenGL.dll 27 | /README.md 28 | 29 | 30 | -------------------------------------------------------------------------------- /PluginOpenGL-Shaders/plugin-opengl-shaders.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginOpenGL-Shaders/plugin-opengl-shaders.gif -------------------------------------------------------------------------------- /PluginOpenGL-Shaders/robotplayer.h: -------------------------------------------------------------------------------- 1 | #ifndef ROBOTPLAYER_H 2 | #define ROBOTPLAYER_H 3 | 4 | //#include "irobodk.h" 5 | #include "robodk_api/robodk_api.h" 6 | 7 | #include 8 | 9 | class RobotPlayer : public QThread { 10 | 11 | Q_OBJECT 12 | 13 | public: 14 | RobotPlayer(QObject *pPlugin, const QString &robot_name, bool &paused); 15 | 16 | /// Configures the items used by the autonomous control 17 | bool InitItems(RoboDK_API::RoboDK *rdk); 18 | 19 | // Run main thread loop 20 | void run(void); 21 | 22 | // reference to paused flag (menu checkbox) 23 | bool &isPaused; 24 | 25 | // remember the screen reference and the robot items 26 | QString RobotName; 27 | RoboDK_API::Item ItemRef; 28 | RoboDK_API::Item ItemRobot; 29 | }; 30 | 31 | #endif // ROBOTPLAYER_H 32 | -------------------------------------------------------------------------------- /PluginOpenGL/Draw-Triangle-OpenGL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginOpenGL/Draw-Triangle-OpenGL.png -------------------------------------------------------------------------------- /PluginOpenGL/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginOpenGL/README.md: -------------------------------------------------------------------------------- 1 | Example to draw OpenGL in the 3D view of RoboDK 2 | =========================== 3 | 4 | This example shows how to call plain OpenGL commands (2). 5 | 6 | There are 2 ways of drawing OpenGL with RoboDK: 7 | 8 | 1. If you are using shaders you should use the default binary: C:/RoboDK/bin/**RoboDK**.exe. Using RoboDK with this binary allows you to use RoboDK shaders. To draw primitives such as Triangles, Lines or points you should call RDK->DrawGeometry. 9 | 10 | 2. If you are using Desktop OpenGL (no shaders), you should use the GL2 compatible binary: C:/RoboDK/bin/**RoboDK-GL2**.exe. This binary allows you to use PushMatrix(), MulMatrix(), PopMatrix(), GLBegin(), GLEnd(), etc. 11 | 12 | 13 | Qt Project settings 14 | ======= 15 | 16 | *.pro file 17 | ---------- 18 | 19 | The following configuration is required in the PRO file to build with support for OpenGL: 20 | * QT += opengl 21 | * LIBS += opengl32.lib 22 | 23 | 24 | Run settings 25 | ----------- 26 | 27 | You should enter the following information in the **Projects-Run settings** window: 28 | * Executable: **C:/RoboDK/bin/RoboDK-GL2.exe** 29 | * Arguments: **-PLUGINSUNLOAD -PLUGINLOAD=%{CurrentProject:FileBaseName}** -------------------------------------------------------------------------------- /PluginOpenGL/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:23.031127Z 7 | RoboDK 8 | The OpenGL Plug-in for RoboDK shows how to call plain OpenGL commands with RoboDK. 9 | com.robodk.plugin.pluginopengl 10 | 11 | eng 12 | RoboDK 13 | 2023-11-03T19:50:57.733977Z 14 | 1 15 | OpenGL 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | 21 | 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /PluginOpenGL.dll 27 | /README.md 28 | 29 | 30 | -------------------------------------------------------------------------------- /PluginRealTime/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginRealTime/formrobotpilot.h: -------------------------------------------------------------------------------- 1 | #ifndef FORMROBOTPILOT_H 2 | #define FORMROBOTPILOT_H 3 | 4 | #include 5 | #include "irobodk.h" 6 | #include "iitem.h" 7 | 8 | namespace Ui { 9 | class FormRobotPilot; 10 | } 11 | 12 | class FormRobotPilot : public QWidget 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | explicit FormRobotPilot(RoboDK *rdk, QWidget *parent = nullptr); 18 | ~FormRobotPilot(); 19 | 20 | /// 21 | /// \brief Select a robot in the Robot variable 22 | /// \return True if a robot was properly retrieved 23 | /// 24 | bool SelectRobot(); 25 | 26 | void IncrementalMove(int id, double sense); 27 | 28 | private: 29 | /// 30 | /// \brief Set the jog button text as joint movements 31 | /// 32 | void setup_btn_joints(); 33 | 34 | /// 35 | /// \brief Set the jog button text as Cartesian movement 36 | /// 37 | void setup_btn_cartesian(); 38 | 39 | private slots: 40 | void on_btnSelectRobot_clicked(); 41 | 42 | // Radio buttons 43 | void on_radCartesianTool_clicked(); 44 | void on_radJoints_clicked(); 45 | void on_radCartesianReference_clicked(); 46 | 47 | // 6x2 buttons: 48 | void on_btnTXn_clicked(); 49 | void on_btnTYn_clicked(); 50 | void on_btnTZn_clicked(); 51 | void on_btnRXn_clicked(); 52 | void on_btnRYn_clicked(); 53 | void on_btnRZn_clicked(); 54 | void on_btnTXp_clicked(); 55 | void on_btnTYp_clicked(); 56 | void on_btnTZp_clicked(); 57 | void on_btnRXp_clicked(); 58 | void on_btnRYp_clicked(); 59 | void on_btnRZp_clicked(); 60 | 61 | private: 62 | Ui::FormRobotPilot *ui; 63 | RoboDK *RDK; 64 | Item Robot; 65 | 66 | }; 67 | 68 | #endif // FORMROBOTPILOT_H 69 | -------------------------------------------------------------------------------- /PluginRealTime/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:23.529294Z 7 | RoboDK 8 | The Real Time Plug-in is a RoboDK Plugin that showcases the Plug-in Interface. 9 | com.robodk.plugin.pluginrealtime 10 | 11 | eng 12 | RoboDK 13 | 2023-11-03T19:50:57.907904Z 14 | 1 15 | Real Time 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | 21 | 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /PluginRealTime.dll 27 | 28 | 29 | -------------------------------------------------------------------------------- /PluginRealTime/resources/code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginRealTime/resources/code.png -------------------------------------------------------------------------------- /PluginRealTime/resources/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginRealTime/resources/help.png -------------------------------------------------------------------------------- /PluginRealTime/resources/information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginRealTime/resources/information.png -------------------------------------------------------------------------------- /PluginRealTime/resources/red-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginRealTime/resources/red-button.png -------------------------------------------------------------------------------- /PluginRealTime/resources1.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | resources/code.png 4 | resources/help.png 5 | resources/information.png 6 | resources/red-button.png 7 | 8 | 9 | -------------------------------------------------------------------------------- /PluginRoboUI/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginRoboUI/README.md: -------------------------------------------------------------------------------- 1 | # RoboUI 2 | 3 | This example shows the possibility of integrating a third-party library (ImGUI) to render a customized user interface in the RoboDK 3D scene window. 4 | 5 | ![RoboUI](./doc/rdk-imgui.png) 6 | 7 | 8 | ## Features 9 | - Drawing a graphical user interface on top of a RoboDK 3D scene 10 | - Determination of mouse position and the ability to switch between elements of the customized interface and the original application interface 11 | 12 | 13 | ## Prerequisites 14 | - [RoboDK](https://robodk.com/download) 15 | 16 | 17 | ## Installation 18 | 19 | Plug-ins are usually packaged as RoboDK Packages (.rdkp), which are automatically installed when opened with RoboDK. 20 | To manually install this Plug-in, copy the content of this folder to your RoboDK Plug-ins folder (typically `C:/RoboDK/bin/plugins`). 21 | 22 | 23 | ## Configuration 24 | 25 | 1. Enable the Plug-in (Tools->Add-ins or Shift+I) 26 | 27 | 28 | ## About RoboDK Plug-ins 29 | 30 | The RoboDK Plug-In Interface allows you to extend or customize RoboDK software with Plug-ins linked natively into the core of RoboDK. 31 | 32 | You can integrate your Plug-in as part of the RoboDK user interface and easily customize RoboDK for offline programming and simulation purposes. 33 | For instance, by adding buttons in the menu and the toolbar, processing events, synchronizing with render, accept API command calls, and more. 34 | 35 | Once you complete developing your Plug-in, you can easily distribute your Plug-in as a self-contained package file (.rdkp). 36 | 37 | Plug-ins are handled by RoboDK with the Add-in Manager, and the [Plug-In Interface](https://github.com/RoboDK/Plug-In-Interface) provides the necessary C++ tools to build your Plug-in. 38 | 39 | You can find more information about the Plug-In Interface and sample Plug-ins in the [Plug-In Interface GitHub](https://github.com/RoboDK/Plug-In-Interface) and the [documentation](https://robodk.com/doc/en/PlugIns/index.html). 40 | -------------------------------------------------------------------------------- /PluginRoboUI/doc/rdk-imgui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/PluginRoboUI/doc/rdk-imgui.png -------------------------------------------------------------------------------- /PluginRoboUI/imgui/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014-2023 Omar Cornut 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PluginRoboUI/imgui/imgui_impl_qt.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "imgui.h" // IMGUI_IMPL_API 4 | 5 | IMGUI_IMPL_API bool ImGui_ImplQt_Init(); 6 | IMGUI_IMPL_API void ImGui_ImplQt_Shutdown(); 7 | IMGUI_IMPL_API void ImGui_ImplQt_NewFrame(); 8 | IMGUI_IMPL_API void ImGui_ImplQt_RenderDrawData(ImDrawData* draw_data); 9 | 10 | // Called by Init/NewFrame/Shutdown 11 | IMGUI_IMPL_API bool ImGui_ImplQt_CreateFontsTexture(); 12 | IMGUI_IMPL_API void ImGui_ImplQt_DestroyFontsTexture(); 13 | IMGUI_IMPL_API bool ImGui_ImplQt_CreateDeviceObjects(); 14 | IMGUI_IMPL_API void ImGui_ImplQt_DestroyDeviceObjects(); 15 | -------------------------------------------------------------------------------- /PluginRoboUI/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-07-11T12:38:00.000000Z 7 | RoboDK 8 | The RoboUI Plug-in for RoboDK shows the possibility of integrating the ImGUI library to render a customized UI in the 3D scene window. 9 | com.robodk.plugin.roboui 10 | 11 | eng 12 | RoboDK 13 | 2023-07-11T12:38:00.000000Z 14 | 1 15 | RoboUI 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginRoboUI 21 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginRoboUI 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /README.md 27 | /RoboUI.dll 28 | /doc/rdk-imgui.png 29 | 30 | 31 | -------------------------------------------------------------------------------- /PluginRoboUI/roboui.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /PluginRoboUI/roboui.rc: -------------------------------------------------------------------------------- 1 | #include 2 | #include "roboui.h" 3 | 4 | ///////////////////////////////////////////////////////////////////////////// 5 | // English (United States) resources 6 | 7 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 8 | 9 | ///////////////////////////////////////////////////////////////////////////// 10 | // 11 | // Version 12 | // 13 | 14 | VS_VERSION_INFO VERSIONINFO 15 | FILEVERSION APP_VERSION_MAJOR,APP_VERSION_MINOR,APP_VERSION_PATCH,APP_VERSION_BUILD 16 | PRODUCTVERSION APP_VERSION_MAJOR,APP_VERSION_MINOR,APP_VERSION_PATCH,APP_VERSION_BUILD 17 | FILEFLAGSMASK 0x3fL 18 | #ifdef _DEBUG 19 | FILEFLAGS 0x1L 20 | #else 21 | FILEFLAGS 0x0L 22 | #endif 23 | FILEOS 0x40004L 24 | FILETYPE 0x1L 25 | FILESUBTYPE 0x0L 26 | BEGIN 27 | BLOCK "StringFileInfo" 28 | BEGIN 29 | BLOCK "040904b0" 30 | BEGIN 31 | VALUE "CompanyName", APP_COMPANY 32 | VALUE "FileDescription", APP_NAME 33 | VALUE "FileVersion", APP_VERSION_STRING 34 | VALUE "InternalName", APP_INTERNALNAME 35 | VALUE "LegalCopyright", APP_COPYRIGHT 36 | VALUE "OriginalFilename", APP_FILENAME 37 | VALUE "ProductName", APP_NAME 38 | VALUE "ProductVersion", APP_VERSION_STRING 39 | END 40 | END 41 | BLOCK "VarFileInfo" 42 | BEGIN 43 | VALUE "Translation", 0x0409, 1200 44 | END 45 | END 46 | -------------------------------------------------------------------------------- /PluginRobotPilot/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RoboDK Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | RoboDK is a registered trademark of RoboDK Inc. 24 | -------------------------------------------------------------------------------- /PluginRobotPilot/manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin 5 | Final 6 | 2023-01-11T02:21:24.286687Z 7 | RoboDK 8 | The Robot Pilot Plug-in for RoboDK allows you to move the robot by incremental steps from the GUI. 9 | com.robodk.plugin.robotpilot 10 | 11 | eng 12 | RoboDK 13 | 2023-11-03T19:50:58.186288Z 14 | 1 15 | Robot Pilot 16 | 1.0.0 17 | 18 | 19 | https://robodk.com/ 20 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginRobotPilot 21 | https://github.com/RoboDK/Plug-In-Interface/tree/master/PluginRobotPilot 22 | RoboDK Inc. 23 | info@robodk.com 24 | 25 | 26 | /README.md 27 | /RobotPilot.dll 28 | 29 | 30 | -------------------------------------------------------------------------------- /plugin-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/plugin-example.png -------------------------------------------------------------------------------- /plugin-load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/plugin-load.png -------------------------------------------------------------------------------- /qtrun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/qtrun.png -------------------------------------------------------------------------------- /robodk_interface/Version.txt: -------------------------------------------------------------------------------- 1 | RoboDK Plugin interface for Version 5.3.* and later 2 | -------------------------------------------------------------------------------- /robodk_interface/robodk_interface.h: -------------------------------------------------------------------------------- 1 | #ifndef ROBODKINTERFACE_H 2 | #define ROBODKINTERFACE_H 3 | 4 | /// Plugin interface 5 | #include "iapprobodk.h" 6 | 7 | /// RoboDK API inteface 8 | #include "irobodk.h" 9 | 10 | /// Item interface 11 | #include "iitem.h" 12 | 13 | /// Useful tools to interact with the RoboDK API and Qt Plugins 14 | #include "robodktools.h" 15 | 16 | /// Useful types used by the RoboDK API 17 | #include "robodktypes.h" 18 | 19 | 20 | 21 | #endif // ROBODKINTERFACE_H 22 | -------------------------------------------------------------------------------- /robodk_interface/robodktools.h: -------------------------------------------------------------------------------- 1 | #ifndef ROBODKTOOLS_H 2 | #define ROBODKTOOLS_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include "robodktypes.h" 10 | 11 | /// \brief Check if an item is valid. Contrary to the default RoboDK API where we have a Item.Valid() function, we can just check if the item is valid by checking if the item is a null pointer. 12 | /// We can also use class: IRoboDK::Valid to check if an item has been deleted. 13 | /// It is recommended to use the plugin event callback class: IAppRoboDK::PluginEvent to check if the item still exists. If not, force the Item pointer to be nullptr. 14 | bool ItemValid(const Item item); 15 | 16 | /// \brief Add a Widget to the Main Window as a Docked Widget. Docked widgets can be moved and "docked" inside the main window of RoboDK. 17 | QDockWidget* AddDockWidget(QMainWindow *mw, QWidget *widget, const QString &strtitle, Qt::DockWidgetAreas allowed = Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea, Qt::DockWidgetArea add_where = Qt::LeftDockWidgetArea, bool closable = true, bool delete_on_close = true); 18 | 19 | /// Convert a string given to a double array given the size of the array (in/out) and the value separator 20 | void string_2_doubles(const QString &str, double *values, int *size_inout, const QString &separator=","); 21 | 22 | /// Convert a double array to a string given the size of the array, the number of decimals and the value separator 23 | QString doubles_2_string(const double *values, int size, int precision=3, const QString &separator=","); 24 | 25 | 26 | #endif // ROBODKTOOLS_H 27 | -------------------------------------------------------------------------------- /sampleoutput.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoboDK/Plug-In-Interface/7f0fe30b2b55f8ad29aaca283bbaa63888f46a4c/sampleoutput.png --------------------------------------------------------------------------------