I tried installing DataCAD 15 to answer this myself, but was unable to (downloaded from
https://www.datacad.com/download/datacad/DataCAD_15.html and installed .. I hoped it would give me a trial period as I had never previously had v15 installed, but it immediately said that my trial had expired .... ??).
The reason I am asking this question is that I have developed a way to add entities with features not supported by DCAL by creating a layer file that contains an entity with the desired feature and, and then reading the layer file in my macro and copying and updating the entity with other desired properties that are supported by DCAL. As I am creating my layer file using DataCAD 19, I want to be able to accurately tell potential users the compatibility with previous versions of DataCAD.
If anybody is interested, an example of the logic I am using is below. This example creates a text entity with Knockout (which is not supported by DCAL, although once a text entity with knockout is added the macro can update the Knockout_ENL attribute that specifies the size of the knockout), but I can think of several other cases where similar logic could be used to add things that are not supported by DCAL.
Code: Select allMODULE TextAdd;
# INCLUDE 'Settings.inc'
PROCEDURE AddTextEnt (ent : IN OUT entity); PUBLIC;
VAR
doKnockOut : boolean;
templyr : layer;
tempent,
newent : entity;
lyrfilename : str255;
mode : mode_type;
svlyr : layer;
i : integer;
addr : entaddr;
BEGIN
doKnockOut := GetSvdBln ('dhBlockerKO', false);
if doKnockOut then
! DCAL does not support knockout, so we need to effectively copy an entity that already has knockout, so we
! read a layer file into a temp layer, then copy a text entity with knockout from that layer, and then update
! that entity to have the attributes of the entity being added.
getpath (lyrfilename, pathsup);
strcat (lyrfilename, 'dhsoftware/Knockout'); ! layer file created as part of the macro installation
lyr_init (templyr);
i := lyr_read (templyr, lyrfilename, true, false);
mode_init (mode);
mode_1lyr (mode, templyr);
mode_enttype (mode, enttxt);
addr := ent_first (mode);
if ent_get (tempent, addr) then
ent_copy (tempent, newent, true, true);
newent.ltype := ent.ltype;
newent.width := ent.width;
newent.spacing := ent.spacing;
newent.ovrshut := ent.ovrshut;
newent.color := ent.color;
newent.attr := ent.attr;
newent.txtPnt := ent.txtpnt;
newent.txtSize := ent.txtSize;
newent.txtAng := ent.txtAng;
newent.txtSlant := ent.txtSlant;
newent.txtAspect := ent.txtAspect;
strassign (newent.txtStr, ent.txtStr);
newent.txtBase := ent.txtBase;
newent.txtHite := ent.txtHite;
strassign (newent.txtFont, ent.txtFont);
ent_update (newent);
if not ent_get (ent, newent.addr) then
ent_add (ent); ! just in case there was a problem, create the entity in the normal way
end;
end;
lyr_term (templyr);
else
ent_add (ent);
end;
END AddTextEnt;
END TextAdd.