CIDOC-CRM ProjectProject specific questions and answers from the project CIDOC-CRM.RE: Change font in the GraphRepSabin Popescuhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=233262013-07-26T04:51:07Z2013-07-26T04:50:27ZHello.<br /><br />for changind the font settings used for displaying various texts in the graphical representation of a class, you have to use the statement FONT. The FONT statement must be placed before the ATTR or TEXT statement and has the following syntax:<br /><br /><div class="code"><span class="code-lines">1</span>FONT [ strExpr ] [ h: measureExpr ] FontStyle [ color: ColorSpecOrExpr ] [ line-orientation: realExpr ]</div><br /><br />where:<br /> - the term <em>strExpr</em> following the word <strong>FONT</strong> is a string expression containing the font name ,like "Helvetica", "Times New Roman", "Arial" and so on <br /> - the value of the parameter <strong>h:</strong> specifies the font's height; the accepted measuring units are <strong>pt</strong> or <strong>cm</strong><br /> - the value of the parameter <strong>color:</strong> specifies the color of the font and it may be an integer expression, a string name of a color or an RGB representation<br /> - term <em>FontStyle</em> specifies the style of the font and may have one of the following values: bold, underline, strikeout, italic, outline, shadow<br /> - the parameter <strong>line-orientation:</strong> specifies the text angle in degrees relative to the standard (horizontal left-to-right)<br />All fonts available in the operating system can be used. Default is "Helvetica" 10pt. <br /><br />Examples:<br />FONT "Arial" style:"bold" h:9.0pt color: ("forestgreen")<br />FONT "Times New Roman" h:2cm line-orientation:90 style:"outline" color:$000080Sabin Popescu2013-07-26T04:50:27ZChange font in the GraphRephttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=233192014-03-27T11:13:25Z2013-07-26T04:31:05ZHi all.<br /><br />Could you please tell me how can I have a different font for the name attribute and for the text into the graph?2013-07-26T04:31:05ZRE: How to import files in an ADOxx application library?Sabin Popescuhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=227322013-07-19T05:59:11Z2013-07-19T05:57:57ZThe ADOxx Development Toolkit offers its own internal file management system. This enables the developer to import <strong>any kind</strong> of files (.asc, .leo, .txt, .dll, .png, etc...) into the application library.<br />In order to import a file into an existing application library, please follow the steps below:<br /><br />a. Open the ADOxx Development Toolkit<br />b. Navigate in the menu to "Extras" -> "File Management..." (see attachment File_Management_1.PNG)<br />c. Select application library (see attachment File_Management_2.PNG)<br />d. Click on "Import"<br />e. Select file(s) and click on "Open" to import(see attachments Open_Files.bmp, Success_Message.PNG)<br /><br />After having successfully imported your file into the application library, you can access that file by adding the prefix "db:\\" to the file name (e.g. "db:\\MyfileName.asc") and use it in the AdoScript command calls or library or class attributes.<br /><br />When exporting the library in .abl format, the option "Include files", which i checked by default, allows you to include all the imported files in the resulting .adl file (see attached file Export_Library_Dialog.PNG).<br /><br />At any time, the files existing in an application library can be deleted or exported using the File Management functionality.Sabin Popescu2013-07-19T05:57:57ZHow to import files in an ADOxx application library?https://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=227262014-03-27T11:13:46Z2013-07-19T05:41:19ZHow can I import an .asc file in my application library developed with ADOxx?2013-07-19T05:41:19ZRE: Calculate Class HierarchySabin Popescuhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=224862013-07-26T10:40:07Z2013-07-18T11:06:37ZThe solution below is slightly easier to implement, but it is limited to returning only a list of concrete classes (without abstract classes) that are superclasses of a selected instance, without any hierarchy.<br /><strong><br /></strong>1. Add a context menu item named "Get all parent classes..." for the context "drawingarea.mobject" that triggers the script in the file "getAllParentClasses_Lib.asc" . (see attached file ExtCoupl_ClassHierarcyCalc.asc)<br /><br /><div class="code"><span class="code-lines">1</span>ON_EVENT "AppInitialized" {<br /><span class="code-lines">2</span>...<br /><span class="code-lines">3</span>CC "Application" INSERT_CONTEXT_MENU_ITEM context: "drawingarea.mobject" item: "Get all parent classes..."<br /><span class="code-lines">4</span>CC "Application" SET_CMI_SELECT_HDL context: "drawingarea.mobject" item: "Get all parent classes..." { <br /><span class="code-lines">5</span>EXECUTE file: ("db:\\getAllParentClasses_Lib.asc")<br /><span class="code-lines">6</span>}<br /><span class="code-lines">7</span>...<br /><span class="code-lines">8</span>}<br /></div><br /><br />2. Import the file "getAllParentClasses_Lib.asc" into the application library.<br /><br />3. Right-click on any object and click the context menu item "Get all parent classes..." to trigger the script and get a list of all concrete superclasses of the selected object.<br /><br />4. The file "getAllParentClasses_MT.asc" only returns the concrete superclasses of the current object that are included in the current model type.Sabin Popescu2013-07-18T11:06:37ZRE: Calculate Class HierarchyWilfrid Utzhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=224222013-07-26T10:39:56Z2013-07-18T10:26:54ZThe underlying class hierarchy can be calculated from any instance created by following the steps below and using the resources attached to this message:<br /><br /><strong>Library Prerequesites:</strong><br />- Class Hierarchy Calculation Module is available in the library and loaded<br />- Instance Attributes have been defined to hold the results of the calculation<br />- Trigger is defined according to the needs<br /><br /><strong>For the following example snipplet the following is assumed:</strong><br />- The trigger for the calculation is the user, clicking on a button in the notebook of the instance<br />- The attributes "Class hierarchy (ID)" and "Class hierarchy (Name)" are available in the instance to store the return values of the procedure<br />- The PROCEDURE of the Calculation module is loaded during application startup <br /><br /><strong>Steps:</strong><br />1. Add 3 attributes to the root object of the library "__D-contruct__" (this makes sure that it is available for all classes)<br />a. Attribute name: "Class hierarchy (ID)" TYPE: STRING; this attribute is set after calculation with class ID tree of parent classes<br />b. Attribute name: "Class hierarchy (Name)" TYPE: STRING; this attribute is set after calculation with class name tree of parent classes<br />c. Attribute name: "Calculate class hierarchy" TYPE: PROGRAMCALL; this attribute shows the button in the notebook to trigger the calculation of the class hierarchy<br /><br />2. Define the AdoScript to be run on PROGRAMMCALL: see attached file triggerClassHierarchyCalculation.asc: add the content of the file to the facets of the attribute<br /><br />3. Add attributes to the AttrRep of classes<br /><div class="code"><span class="code-lines">1</span>CHAPTER "ClassHierarchy"<br /><span class="code-lines">2</span>ATTR "Class hierarchy (ID)"<br /><span class="code-lines">3</span>ATTR "Class hierarchy (Name)"<br /><span class="code-lines">4</span>ATTR "Calculate class hierarchy" no-param push-button<br /></div><br /><br />4. Add file using library file management function "class_hierarchy.bin"<br /><br />5. Load file "class_hierarchy.bin" ON_EVENT "AppInitialized"<br /><br /><div class="code"><span class="code-lines">1</span>ON_EVENT "AppInitialized" {<br /><span class="code-lines">2</span>...<br /><span class="code-lines">3</span>EXECUTE file: ("db:\\class_hierarchy.bin") <br /><span class="code-lines">4</span>...<br /><span class="code-lines">5</span>}<br /></div><br />6. Test for the class, using the notebook button for calculation. Remove the INFOBOX commands to remove the UI interaction.<br /><br />.Wilfrid Utz2013-07-18T10:26:54ZCalculate Class Hierarchyhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=224092014-03-27T11:12:46Z2013-07-18T10:25:22ZIs it possible to calculate the underlying class hierarchy in ADOxx from an instance modelled?2013-07-18T10:25:22ZRE: Attribute-dependant dimensions of graphical representation...Sabin Popescuhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=216852013-07-11T06:36:07Z2013-07-11T06:30:54ZThe code sequence below creates a graphical representation that includes the features that you mentioned<br /><br />In the first block, the TEXT element displays a standard text (in this case "E5 Event"), the element TEXTBOX does not produce direct output to the drawing area, but it calculates the needed (rectangle) area for the TEXT element. The results are stored in the global variables textx1, texty1, textx2 and texty2 respectively. As these global variables will be overwritten by the element ATTRBOX in the second block, we save them in the local variables n_text1_x1, n_text1_x2, n_text1_y1, n_text1_y2 respectively.<br /><br /><div class="code"><span class="code-lines"> 1</span>GRAPHREP<br /><span class="code-lines"> 2</span>SHADOW off<br /><span class="code-lines"> 3</span>FONT color: black <br /><span class="code-lines"> 4</span><br /><span class="code-lines"> 5</span>TEXT "E5 Event" x: -0.95cm y: -0.4cm<br /><span class="code-lines"> 6</span>TEXTBOX "E5 Event" x: -0.95cm y: -0.4cm <br /><span class="code-lines"> 7</span>SET n_text1_x1: (textx1)<br /><span class="code-lines"> 8</span>SET n_text1_x2: (textx2)<br /><span class="code-lines"> 9</span>SET n_text1_y1: (texty1)<br /><span class="code-lines">10</span>SET n_text1_y2: (texty2)<br /></div><br />The second block uses the elements ATTR and ATTRBOX to display the contents of the attribute "Name", calculate the needed rectangular area needed for the ATTR element and saves the results in the local variables n_text2_x1, n_text2_x2, n_text2_y1, n_text2_y2.<br /><br /><div class="code"><span class="code-lines">1</span>ATTR "Name" x: -0.95cm y: (texty2 + 0.1cm) w:l<br /><span class="code-lines">2</span>ATTRBOX "Name" x: -0.95cm y: (texty2 + 0.1cm) w:l<br /><span class="code-lines">3</span>SET n_text2_x1: (textx1)<br /><span class="code-lines">4</span>SET n_text2_x2: (textx2)<br /><span class="code-lines">5</span>SET n_text2_y1: (texty1)<br /><span class="code-lines">6</span>SET n_text2_y2: (texty2)<br /></div><br />The third block draws a rectabgle aroung the two texts displayed by the first two blocks and a line between the area needed for the TEXT element and the area needed by the ATTR element.For consistency reasons the dimensions of the rectangle are calculated as follows:<br /> * the <strong>x-coordinate of the upper left corner</strong> is the left-most upper-left corner of the two text areas<br /> * the <strong>y-coordinate of the upper-left corner</strong> is the y-coordinate of the upper-left corner of the first text area<br /> * the <strong>width</strong> is the difference between the right-most lower-right corner of the two text areas and the left-most upper-left corner of the two text areas <br /> * the <strong>height</strong> is the difference between the y-coordinate of the bottom-right corner of the second text area and the y-coordinate of the top-left corner of the first text area.<br /><br /><div class="code"><span class="code-lines">1</span>RECTANGLE x: ( min(n_text1_x1, n_text2_x1) - 0.05cm ) y: (n_text1_y1) <br /><span class="code-lines">2</span> w: (max(n_text1_x2, n_text2_x2) - min(n_text1_x1, n_text2_x1) + 0.1cm) h: (n_text2_y2 - n_text1_y1)<br /><span class="code-lines">3</span>LINE x1: (min(n_text1_x1, n_text2_x1) - 0.05cm ) y1: ((n_text1_y2 + n_text2_y1) / 2) <br /><span class="code-lines">4</span> x2: (max(n_text1_x2, n_text2_x2) + 0.05cm) y2: ((n_text1_y2 + n_text2_y1) / 2)<br /></div>Sabin Popescu2013-07-11T06:30:54ZAttribute-dependant dimensions of graphical representation...https://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=216452014-03-27T11:14:12Z2013-07-10T13:48:49ZHow can I create a GraphRep that is a rectangle with two boxes:<br /> - in the first box I want to have some standard text <br /> - in the second box the value of the attribute Name<br />Is it possible that this rectangular is adapted depending on the length of the attribute?2013-07-10T13:48:49ZRE: Name - dependant graphical representationSabin Popescuhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=205622013-07-04T12:36:45Z2013-07-04T12:29:37ZYes, it is possible to display the contents of the attribute "Name" or any other attribute using the graphrep statement ATTR.<br />Please see the example below:<br /><br /><div class="code"><span class="code-lines">1</span>GRAPHREP<br /><span class="code-lines">2</span>SHADOW off<br /><span class="code-lines">3</span>FILL color:gray <br /><span class="code-lines">4</span>ELLIPSE x:0.00cm y:0cm rx:1cm ry:1cm<br /><span class="code-lines">5</span>ATTR "Name" x:0.00cm y:1.0cm w:c<br /><span class="code-lines">6</span>FONT "Arial" h:32pt<br /><span class="code-lines">7</span>TEXT "A" x:0.00cm y:0.00cm w:c h:c<br /></div><br /><br />The graphical representation described below demonstrates the use of the statements ATTR and TEXT.<br />ATTR displays the contents of an attribute, in this case the attribute "Name" (line 5), while TEXT displays a predefined string, in this case "A" (line 7) .Sabin Popescu2013-07-04T12:29:37ZName - dependant graphical representationhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=205402014-03-27T11:14:33Z2013-07-04T12:23:09ZIs it possible when I define the Name of an instance to display it in the modelling Toolkit and change the displayed name every time the name changes?2013-07-04T12:23:09ZRE: Two objects with the same name...Sabin Popescuhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=203672013-07-03T10:23:41Z2013-07-03T10:23:41ZTwo instances of the same class may not have the same value in the attribute Name. <br />Two objects may have the same Name if they are instances of different classes.<br /><br />Two connectors may have the same name even if they are instances of the same relation class.Sabin Popescu2013-07-03T10:23:41ZTwo objects with the same name...https://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=203612014-03-27T11:14:56Z2013-07-03T10:22:30ZIs it possible to have the same value in the attribute Name of the Notebook in two or more objects in the modelling tool?2013-07-03T10:22:30ZRE: Follow Up "Multiple Inheritance": Implicit relation inheritanceSabin Popescuhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=201772013-06-27T14:16:18Z2013-06-27T14:06:23ZThe functionality you mentionad is also implicitly available in ADOxx.<br />The issue can be solved by changing the event handlers for the events "CreateRelationInstance", "BeforeCreateRelationInstance" and "DeleteRelationInstance".<br />I have further developed the application library for Implementation 2b into version 1.2 and added the classes AA and BB derived from A and B, respectively. Please see attachment <strong>CIDOC_MultipleInheritance_Implementation-2b_1.2.abl</strong> .<br /><br />I have also changed the implementation of the event handlers in the file "ExternalCoupling.asc" to allow the connectors between A and BB, AA and B and AA and BB, respectively. Please see attachment <strong>ExternalCoupling.asc </strong> .Sabin Popescu2013-06-27T14:06:23ZFollow Up "Multiple Inheritance": Implicit relation inheritancehttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=201722014-03-27T11:17:01Z2013-06-27T13:20:59ZI have two classes A and B, a relation aPb from A to B and two sub-classes, AA and BB respectively.<br />According to CIDOC, due to the inheritance I should be able to have this relation between AA and BB too. ADOxx supports this if I were to use relations.<br />But now that we use INTERREF attributes, ADOxx gives me only the possibility (because the attributes are inherited) to connect A with B and AA with B, but there is not a connection between A and BB or betwen AA and BB, that is very important.<br />How could I solve it?2013-06-27T13:20:59ZRE: Library attribute "External coupling" is limited to 32000 charactersSabin Popescuhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=201562013-06-26T12:35:17Z2013-06-26T12:35:17ZAnother solution would involve storing the whole content of the library attribute "External Coupling" (event handlers and menu item definitions) in a file and using the INCLUDE keyword for referencing the content of this file in the library attribute "External coupling":<br /><br />1. copy the contents of the library attribute "External coupling" in the file "ExternalCoupling.asc" and save the file in the folder "C:\example"<br /><br />2. change the contents of the library attribute External coupling as follows:<br /><br /><div class="code"><span class="code-lines">1</span>@INCLUDE "c:\\example\\ExternalCoupling.asc" </div>Sabin Popescu2013-06-26T12:35:17ZRE: Library attribute "External coupling" is limited to 32000 charactersSabin Popescuhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=201322013-06-26T12:18:09Z2013-06-26T12:09:09ZIf the functionality that your are implementing involves more than 32000, we recommend that you save the implementation for each event handler (ON_EVENT) and each menu item (ITEM) in text files and use the AdoScript commands to run those scripts.<br /><br />Example:<br /><br />1. copy the AdoScript code in the file "event_BeforeCreateRelationInstance.asc" and save the file in the folder "C:\example"<br /><br />2. change the contents of the library attribute External coupling<br /><br /><div class="code"><span class="code-lines"> 1</span>ON_EVENT "BeforeCreateRelationInstance"<br /><span class="code-lines"> 2</span>{<br /><span class="code-lines"> 3</span>[color=#b0b0b0]#save event parameters in GLOBAL variables[/color]<br /><span class="code-lines"> 4</span>SETG id_fromInstID: (frominstid)<br /><span class="code-lines"> 5</span>SETG id_toInstID: (toinstid)<br /><span class="code-lines"> 6</span>SETG id_relationClassID: (relationclassid)<br /><span class="code-lines"> 7</span>SETG id_modelID: (componentid) <br /><span class="code-lines"> 8</span><br /><span class="code-lines"> 9</span>CC "AdoScript" FREAD file: ("C:\\example\\event_BeforeCreatingRelationInstance.asc)<br /><span class="code-lines">10</span>[color=#b0b0b0] # --> RESULT ecode: intValue text: strValue[/color]<br /><span class="code-lines">11</span>EXECUTE (text)<br /><span class="code-lines">12</span>}<br /></div>Sabin Popescu2013-06-26T12:09:09ZLibrary attribute "External coupling" is limited to 32000 charactershttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=200782014-03-27T11:29:14Z2013-06-26T11:48:38ZThe library attribute "External coupling" is limited to 32000 characters. How can I implement scripts that are longer than that?2013-06-26T11:48:38ZRE: Follow Up "Multiple Inheritance" : Constraints on drawing the connectorSabin Popescuhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=200662013-06-24T10:16:38Z2013-06-24T09:17:00ZThe event "BeforeCreateRelationInstance" is triggered <em>before</em> a relation (connector) is created. You can an event handler for this event in the library attribute "Modi" and exit the creation process with the code "-1". Thus the process of creating the relation instance is aborted without displaying any error message.<br />An example of a possible implementation of the event handler can be seen below:<br /><br /><div class="code"><span class="code-lines"> 1</span>...<br /><span class="code-lines"> 2</span>ON_EVENT "BeforeCreateRelationInstance"<br /><span class="code-lines"> 3</span>{<br /><span class="code-lines"> 4</span>#Event triggered before a relation instance (connector) is created<br /><span class="code-lines"> 5</span>#componentid contains the ID of the affected component<br /><span class="code-lines"> 6</span>#relationclassid the ID of the new relation's class<br /><span class="code-lines"> 7</span>#frominstid the ID of the from-instance of the relation<br /><span class="code-lines"> 8</span>#toinstid the ID of the to-instance of the new relation. <br /><span class="code-lines"> 9</span>#The Event Handler returns one of these values: 0 - no abortion, -1 - abortion without error, -2 - abortion with error, >0 - abort with core error code. <br /><span class="code-lines">10</span><br /><span class="code-lines">11</span>SET id_relationclassid: (relationclassid)<br /><span class="code-lines">12</span>SET id_frominstanceid: (frominstid)<br /><span class="code-lines">13</span>SET id_toinstanceid: (toinsid)<br /><span class="code-lines">14</span>SET id_componentid: (componentid)<br /><span class="code-lines">15</span><br /><span class="code-lines">16</span>CC "Core" GET_CLASS_NAME classid: (relationclassid)<br /><span class="code-lines">17</span> # --> RESULT ecode: intValue classname: strValue isrel: intValue <br /><span class="code-lines">18</span>SET str_classname: (classname)<br /><span class="code-lines">19</span> IF (str_classname = "any2any")<br /><span class="code-lines">20</span> {<br /><span class="code-lines">21</span> #determine the interref name<br /><span class="code-lines">22</span> CC "Core" GET_CLASS_ID objid: (id_frominstanceid) <br /><span class="code-lines">23</span> #--> RESULT ecode: intValue classid: intValue isrel: intValue . <br /><span class="code-lines">24</span> SET id_fromClassID: (classid)<br /><span class="code-lines">25</span> CC "Core" GET_CLASS_NAME classid: (id_fromClassID) <br /><span class="code-lines">26</span> #--> RESULT ecode: intValue classname: strValue isrel: intValue .<br /><span class="code-lines">27</span> SET str_fromClassName: (classname)<br /><span class="code-lines">28</span> CC "Core" GET_CLASS_ID objid: (id_toinstanceid) <br /><span class="code-lines">29</span> #--> RESULT ecode: intValue classid: intValue isrel: intValue .<br /><span class="code-lines">30</span> SET id_toClassID: (classid) <br /><span class="code-lines">31</span> CC "Core" GET_CLASS_NAME classid: (id_toClassID) <br /><span class="code-lines">32</span> #--> RESULT ecode: intValue classname: strValue isrel: intValue .<br /><span class="code-lines">33</span> SET str_toClassName: (classname)<br /><span class="code-lines">34</span> <br /><span class="code-lines">35</span> IF (str_fromClassName = "A") <br /><span class="code-lines">36</span> {<br /><span class="code-lines">37</span> IF (str_toClassName = "B") <br /><span class="code-lines">38</span> {<br /><span class="code-lines">39</span> EXIT -1<br /><span class="code-lines">40</span> }<br /><span class="code-lines">41</span> IF (str_toClassName = "A") <br /><span class="code-lines">42</span> {<br /><span class="code-lines">43</span> EXIT -1<br /><span class="code-lines">44</span> }<br /><span class="code-lines">45</span> IF (str_toClassName = "E") <br /><span class="code-lines">46</span> {<br /><span class="code-lines">47</span> EXIT -1<br /><span class="code-lines">48</span> }<br /><span class="code-lines">49</span> IF (str_toClassName = "Y") <br /><span class="code-lines">50</span> {<br /><span class="code-lines">51</span> EXIT -1<br /><span class="code-lines">52</span> }<br /><span class="code-lines">53</span> }<br /><span class="code-lines">54</span> ELSIF (str_fromClassName = "B") <br /><span class="code-lines">55</span> {<br /><span class="code-lines">56</span> IF (str_toClassName != "Y") <br /><span class="code-lines">57</span> {<br /><span class="code-lines">58</span> EXIT -1<br /><span class="code-lines">59</span> }<br /><span class="code-lines">60</span> }<br /><span class="code-lines">61</span> ELSIF (str_fromClassName = "E") <br /><span class="code-lines">62</span> {<br /><span class="code-lines">63</span> IF (str_toClassName = "A") <br /><span class="code-lines">64</span> {<br /><span class="code-lines">65</span> EXIT -1<br /><span class="code-lines">66</span> }<br /><span class="code-lines">67</span> IF (str_toClassName = "B") <br /><span class="code-lines">68</span> {<br /><span class="code-lines">69</span> EXIT -1<br /><span class="code-lines">70</span> }<br /><span class="code-lines">71</span> } <br /><span class="code-lines">72</span> }<br /><span class="code-lines">73</span>}<br /></div>Sabin Popescu2013-06-24T09:17:00ZFollow Up "Multiple Inheritance" : Constraints on drawing the connectorhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=200582014-03-27T11:17:23Z2013-06-24T09:13:36ZWhen there is not a relation (an attribute in my case) that connects two classes and i am trying to do so, a window without attributes appears and then when the user clicks on "Cancel" there is a connection (a simple arrow) between the classes but without any actual meaning. Could I avoid it and prevent the connector to be drawn if it is not allowed?2013-06-24T09:13:36Z