Le module custom shape vous permet de créer de nouvelles formes pour Dia sans avoir à écrire de code C. À la place, il suffit d'écrire un fichier XML décrivant la forme. Les non programmeurs peuvent ainsi créer de nouvelles formes pour Dia.
La forme elle-même est décrite en utilisant un sous-ensemble de la spécification SVG. Les éléments line, polyline, polygon, rect, circle, ellipse, path et g sont supportés. Notez que l'élément path prend seulement en charge les commandes M,m,L,l,H,h,V,v,C,c,S,s,Z et z. Les transformations et unités CSS ne sont pas prises en charge (seules les unités « user » le sont), et seul un jeu limité d'attributs CSS est pris en charge.
Des points de connexion peuvent être associés à la forme. Ils sont spécifiés dans le même système de coordonnées que la description SVG de la forme.
Une boîte de texte peut être associée à la forme. La boîte de texte est également spécifiée dans le même repère de coordonnées que la forme.
Pour choisir la taille et la position de la boîte de texte, vous pouvez penser à un rectangle contenant la boîte de texte, et un autre contenant tous les autres éléments SVG (appelons-le le rectangle Image) : lorsque vous obtenez la forme sur le canevas, et y écrivez du texte, tout le texte doit entrer dans la boîte de texte. Si nécessaire, la boîte de texte s'agrandira, et, dans les mêmes proportions, le rectangle Image s'agrandira également.
Dia prend soin du reste pour vous (changement de taille, de position, connexion de lignes, chargement, enregistrement, etc).