J'ai commencé ce soir par curiosité, je n'ai pas été très loin, pour l'instant je me contente d'envoyer une requête et d'afficher la réponse dans un MessageRequester. Pour ceux qui ont du courage, il est possible d'écrire ses propres plugins pour importer ou exporter dans un format particulier, ou encore modifier la scène en cours d'édition. Les échanges entre le PlugIn et Deled se font en XML !
C'est pas cool ça ? Bref voila le début de mon code, des fois que ça intéresse quelqu'un de bosser sur le sujet

Il faut compiler avec le format de l' exécutable = Shared Dll.
Et ensuite il suffit de copier la Dll dans le répertoire PlugIn de Deled et de lancer Deled , pour vérifier si le plugIn est correctement chargé allez dans le menu de Deled Plugins --> Plugin information, vous devriez apercevoir votre plugin avec ses caractéristiques.
Pour voir une réponse intéressante, créer une nouvelle scène et ajouter un objet (Un cube par exemple) puis lancez le plugIn.
Par exemple en ajoutant un simple rectangle, j'obtiens la réponse :
Code : Tout sélectionner
---------------------------
Réponse CallBack
---------------------------
<scene version="1.6">
<primitives highestID="1">
<primitive id="1" name="rectangle1" type="rectangle" visible="true" snap="vertex" autoUV="true" groupID="-1">
<tag>User info</tag>
<vertices>
<vertex id="0" x="-384" y="192" z="0" />
<vertex id="1" x="128" y="192" z="0" />
<vertex id="2" x="128" y="-320" z="0" />
<vertex id="3" x="-384" y="-320" z="0" />
</vertices>
<polygons>
<poly mid="0">
<vertex vid="0" u0="-3" v0="-1.5" />
<vertex vid="1" u0="1" v0="-1.5" />
<vertex vid="2" u0="1" v0="2.5" />
<vertex vid="3" u0="-3" v0="2.5" />
</poly>
</polygons>
</primitive>
</primitives>
</scene>
---------------------------
OK
---------------------------
ATTENTION : Je n'ai pas lu toute la doc, j'ai sûrement oublié de faire des trucs, et je n'ai pas testé à fond ce début d'essai .
Code : Tout sélectionner
;This chapter lists all methods that should be exported through a DeleD plugin DLL file.
Enumeration
#PR_GETMEM
#PR_GETDATA
#PR_SETDATA
EndEnumeration
Structure TCallBackRecord
RequestID.l ;reason for executing callback (0,1 or 2)
*RequestXML ;XML Data send by the plugin To DeleD
*ResponseXML ;XML data send by DeleD to the plugin
ResponseSize.l ;size of the response XML data in bytes
EndStructure
Global PluginName.s
Global PluginDescription.s
Global PluginDeleDVersion.s
Global PluginVersion.s
Global PluginAuthor.s
Global PluginEmail.s
Prototype TCallBackProc(*ACallBackRecord.TCallBackRecord)
Global DeledCallBack.TCallBackProc
ProcedureDLL PluginName()
;This function returns a pointer To a character string
;containing the name of the plugin As being displayed
;in the Plugin menu With DeleD. Typically,
;this character string is between 10 And 20 characters in size.
PluginName = "PlugIn PureBasic"
ProcedureReturn @PluginName
EndProcedure
ProcedureDLL PluginDescription()
;This function returns a pointer To a character string
;containing the description of the plugin.
;This description is displayed in the Plugin window within DeleD.
PluginDescription = "Description"
ProcedureReturn @PluginDescription
EndProcedure
ProcedureDLL PluginDeleDVersion()
;This function returns a pointer To a character string
;showing the minimal version of DeleD needed To execute this plugin.
;DeleD uses this version number To determine If the plugin can be run And thus,
;If it should be listed in the Plugin menu.
PluginDeleDVersion = "1.7"
ProcedureReturn @PluginDeleDVersion
EndProcedure
ProcedureDLL PluginVersion()
;This function returns a pointer To a character string
;showing the current version of the plugin itself.
PluginVersion = "1.0 beta 1"
ProcedureReturn @PluginVersion
EndProcedure
ProcedureDLL PluginAuthor()
;This function returns a pointer To a character string
;showing the name of the author of the plugin.
PluginAuthor = "Comtois"
ProcedureReturn @PluginAuthor
EndProcedure
ProcedureDLL PluginEmail()
;This function returns a pointer To a character string
;showing the emailaddress of the author of the plugin.
PluginEmail = "Comtois@Truc.fr"
ProcedureReturn @PluginEmail
EndProcedure
ProcedureDLL PluginSetCallback(aCallBackProc.TCallBackProc)
;At startup, DeleD initializes all available plugins And calls
;the PluginSetCallback routine automatically For each plugin.
;This Procedure saves a pointer To DeleD's callback routine
;(As provided in the TCallBack parameter) into a parameter local To the plugin.
;The plugin then uses that local parameter To issue a callback To DeleD.
DeledCallBack = aCallBackProc
EndProcedure
ProcedureDLL PluginExecute(); stdcall;
;This Procedure is executed when the user executes a plugin
;from the Plugin menu within DeleD.
;
Protected MaVariable.TCallBackRecord
If OpenWindow(0, 0, 0, 222, 200, "ButtonGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
ButtonGadget(1, 10, 40, 200, 20, "Quitter", #PB_Button_Left)
;CallBack
MaVariable\RequestID = #PR_GETMEM
Texte$= "<request> <primitives subset="+Chr(34)+"all"+Chr(34)+ "retrieveID="+Chr(34)+"false"+Chr(34)+ "/> </request>"
MaVariable\RequestXML = @Texte$
DeledCallBack(@MaVariable)
MaVariable\ResponseXML=AllocateMemory(MaVariable\ResponseSize)
MaVariable\RequestID = #PR_GETDATA
DeledCallBack(@MaVariable)
MessageRequester("Réponse CallBack",PeekS(MaVariable\ResponseXML),0)
FreeMemory(MaVariable\ResponseXML)
Repeat
event = WindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Quit = 1
EndSelect
EndSelect
Until quit
CloseWindow(0)
EndIf
EndProcedure