DLL function: Calling own functions from DLL
This command allows calling own functions for the generation of new
elements. The functions must be provided in one or more DLL files.
Following dialog shows the available options:
DLL file
Load new DLL: Clicking this button, a file selection box pops up, where the file of
the DLL to be loaded must be selected.
Delete DLL:
All loaded DLLs are show in the list box. After selecting a DLL it can be
deleted by clicking the button.
DLL
function
Call function: A function name must be given in the input field. Clicking the button,
this function will be called. If the function is called the first time, the
name of the DLL where the file is contained in must also be selected in the
list of DLL names.
The list
shows all the functions that have previously called; these functions can be
called several times.
When the command is invoked the first time, it
is checked, whether there exists a file „maka_interface.ini“ in the “bin”
folder of MAKROS that contains some lines of following type:
#dll kf
function path
„kf“ is the type ID of the function, „function“
is the function name of an exported function in the DLL and path is the path of
the DLL, the function is contained in.
For
example:
#dll 0
funct1 G:\boege\makrosa\testdll\dll1\debug\dll1.dll
#dll 0
funct2 G:\boege\makrosa\testdll\dllmfc\debug\dllmfc.dll
#dll 1
Interface G:\boege\makrosa\testdll\interf\debug\interface.dll
If lines of this type are found, the DLLs are automatically loaded and
the entry points of the functions are searched and stored. The DLL and function
names are shown in the list boxes of the dialog window.
Prototype
of functions
All functions must have the following prototype:
typedef
struct
{
int ne; // number of elements
int
nn1; // array
length of one element
int npv; // number of nodes
int **nel; // elements: nel[nev+1][nn1]
float (*pkt)[3]; //
node coordinates
} festruct;
extern “C”
void
function (CWnd *pWnd, festruct *in, festruct *out,
int kfree, int
kzf, void *p);
pWnd is a pointer to the protocol window of MAKROS.
If the function uses dialogs, pWnd should be used as the parent window.
in is a pointer to a structure that contains the
elements and the nodes of the active element structure. For each element
following data is given: external element ID, type ID of the element,
mechanical type ID, group ID and indices of the element nodes. Elements and
nodes are stored beginning with index 1.
out is a pointer to a structure, that can be used
to give new elements and nodes back to MAKROS. New elements are added to
existing elements.
kfree is a parameter. The function is invoked twice,
the first time kfree has the value 0, in this case new elements can be returned
to MAKROS. After these elements have been added to the structure, the function
is called again with kfree = 1, in this case only the allocated memory for the
new elements should be freed.
kzf is the ID of the function type and must be 0
with this type.
p is a pointer to a structure and is not used
with this type of functions.