13.3 Reverse import
13.3.1 Reverse Import Guide
This command is mainly used for semi-automatic processing of drawings which is already arranged. Compared to manual processing of drawings, this method is simple, convenient, and has a lower requirment of CAD operation and understanding of drawings by users.
Taking a project as an example, here is the usage of this tool.

13.3.1.1 Step 1: Layer detection and processing
This step is a preprocessing step for the "Reverse Import Guide", some of which require manual completion.

The steps that need to be manually completed are as follows:
①Place different types of squares and numbers (if any) on different layers. If there is no number, only the arrays can be processed.
②Place the transformer and its number (if any) on a separate layer. If there is no number, only the transformer can be processed.
③Place the convergence device and its number (if any) on different layers. If there is no number, only the combine devices can be processed.
④Place the cable path (if any) on a separate layer.
⑤After completing each step of the above steps, users need to manually check the box on the left side of "Processing" and switch the status to "Completed". If there is no need to import transformers, combine devices, or cables in reverse, there is no need to follow the corresponding steps above. Simply uncheck the box on the left side of the manual processing item.
After clicking the "Processing" button, the software will automatically detect whether the blocks with the same name are in different layers. When an error occurs, the following interface will pop up for prompt. Please left click the left arrow button with the mouse to automatically locate and select the block which is corresponding to the current row for manual modification.

After manual modification, it can be rechecked. After passing the inspection, the software automatically changes the layer of the elements within the block to the layer where the block is located.
13.3.1.2 Step 2: Handle the photovoltaic array
In this step, it is necessary to manually select the arrays rectangle layer and its corresponding string number layer. If there are multiple different types of arrays in the drawing, the corresponding layers can be selected for processing in sequence.

The software will automatically detect whether the array is a rectangle.
①Array is rectangular: If the element is not a block property, it is automatically converted to a block . If there are only modules in the array block, rectangles will be automatically added and useless elements in the rectangular block will be cleared.
②Array is not rectangular: When the software detects that the array in the selected layer is not a rectangle, the left box of the "Manual" in three steps will be automatically checked, and the "No treatment" after it will be automatically changed to "Undone". The users need to manually process it one by one, and after each step is completed, the left box of "Undone" needs to be switched the status to "Completed".

③The block is in the form of a string. When the string number layer name is not "Array_name ", users need to check the "Matrix matching number, move the number to the corresponding layer" below. After the array processing is completed, a layer will be automatically created and the Array number will be moved to the corresponding layer and placed in the "Arrayname" layer. For example, if the layer name of the array is "array3", the synthesized array number will be placed in "array3name".
④The block is in the form of two strings. When the string numbering layer is the string number instead of the large bracket's array number, users need to check the "Automatically merge string numbers into matrix numbers" option below. After the array processing is completed, the string numbers will be automatically merged into the large array number, and a layer will be created and the array number will be moved to the corresponding layer. If the string numbers "G01.01.01" and "G01.01.02" are merged into "G01.01.01.02/02", and the array layer name is "array3", the array number will be placed in "array3name".
13.3.1.3 Step 3: Handle the transformer
In this step, it is necessary to manually select the layer where the transformer rectangle is located and the layer where the transformer number is located. If users don't want to import the transformer, users can simply click "Next" button.

After selecting the corresponding layer, the software will automatically convert non-block transformer rectangles into rectangular blocks and the blocks will be detected and the block names will be adjusted. The block names for different types of transformers are "Transformer 1" and "Transformer 2". Finally, the software will add block attributes to the transformer block and check if the transformer number is empty or duplicated automatically.
When an error occurs, the following interface will pop up for prompt. Left click the left arrow button with the mouse to locate and select the transformer element corresponding to the current row for manual modification.
When the transformer number is found to be empty, users can click the "Auto code" button on the pop-up interface to process it.

After manual modification, it can be rechecked. Only after passing the inspection can we proceed to the next step.
13.3.1.4 Step 4: Set trf/array parameters and associate
In this step, it is necessary to manually select the "Association between Tr". If the method used is "By polylines", the "Power block" layer also needs to be manually selected. If the method used is "By color", it is necessary to change the color of the array block and transformer block to be consistent, and the color between adjacent power blocks should not be the same (Users can try the interface automatic coloring function to quickly modify).

The software supports the form of associating the array with the transformer by array number. It will automatically use the first number in the string number as the transformer number, for example, "G01.02.03", and the software will recognize the connected transformer number as "01". Therefore, when both "X-01.0.01" and "Y-01.01.01" appear in the drawing, it is recommended to use the "FIND" command to replace "X -" and "Y -" with distinguishable numbers such as "11" and "22". It also supports association through level 1 combine devices.
After clicking the "Handle" button, in the pop-up "Export data" interface,user should check the array blocks that need to be exported and set the relevant parameters.

When a array is not associated with a transformer, the following interface will pop up for prompt, and manual processing is required at this time. If no further action is required, click "Ignore".

After processing, it will automatically enter the "Array’s parameters" interface, enter the relevant parameters, and click "OK" to proceed.

If the wrong association method is selected in the "Association between Tr" section, the above operation must be completed before selecting the association method again for reprocessing.
13.3.1.5 Step 5: Handle combiner and code (can be skipped)
In this step, it is necessary to manually select the "Level 1 combiner layer" and "Level 1 combiner code lyaer", and their positions in the drawing cannot be too far apart.

After clicking "Handle", the software will automatically convert level 1 combine device rectangles that are rectangles but not block attributes into block and match them with codes.
This step can also be applied to semi-automatic processing of level 2 combiner device and its code.
13.3.1.6 Step 6: Handle cable paths (can be skipped)
In this step, it is necessary to manually select the "Cable layer" and "Cable number". After clicking "Handle" button, the software will automatically place the elements in the selected "Cable layer" into the "Trench" layer, and automatically place the elements in the selected "Cable number" into the "Trenchname" layer.
After completing this step, the *.c2c" file can be exported.

13.3.2 Generate C2C file (gc2c)
This command is used to reverse the layout of arrays and electrical connection from CAD to SU
13.3.2.1 Reverse import of layout generated by Candela3D
If the "*.dwg" layout file generated by Candela3D is copied and moved using existing elements, while keeping the properties and code rules of the elements in the original layer unchanged, it can generally be directly imported in reverse using the "gc2c" command.
When importing from a "*.dwg" file (layout and electrical connection generated by using Candela3D software) in reverse, the following points should be noted:
When modifying the electrical connection, it should be achieved by changing the numbering of the array, first level, and second level convergence;
When adding a array, it should be achieved by copying the existing array and modifying the code. Attention should be paid to adjusting the corresponding power block lines to include the added array (if any);
When modifying the cable route, it is possible to reach the modified or added array by copying or stretching; The cable route should be tree-shaped;
The code of the device should follow Candela3D's default code rules, such as array: "G01.01.01", combiner box: "H01.01".
If the layout is not generated by Candela3D or the reverse import is unsuccessful, users can refer to the following rules to process and check the "*.dwg" file, or directly use the "Reverse Import Guide" for processing.
13.3.2.2 DWG drawing processing
| No. | Item, | Layer name | Describtion |
| 1 | PV Array | Array*** | It must be a block, and inside of the block must be a rectangle or parallelogram; If it is not a block, users can use the "gblock" command to convert them into blocks. |
| 2 | PV array code | Layer name of the array + name The name of the array block + name |
For example, if the name of the array block is "Array 1", it corresponds to the layer of "Array 1 name". If the name of the array block is "PV array", it corresponds to the layer of "PV array name" The code text must be inside the array. For arrays composed of multiple strings, array code must be formed by string code (exceed duplicate parts). For example: "G01.01.01" and "G01.01.02" are combined into " G01.01.01/02"; "G01.02.01" and "G01.01.01" are combined into "G01.02.01/G01.01.01". |
| 3 | Transformer | Transformer | It must be block, and the name of the block must be "Transformer"; The creation method is described in section 13.3.5. |
| 4 | Transformer code | / | Double click the block and fill in the block attribute "Code" |
| 5 | Range lines of power block (not necessary) |
Power block (not necessary) |
There are three types of connection between arrays and power blocks: 1) By polylines: The range lines must be closed, enclosing both the transformer and the array within the power block. 2) By color: The arrays and corresponding transformer are of the same color; power blocks that are closer together should use different colors. 3) By array code: Using the first number in the string code as the transformer code. |
| 6 | Level 1 device | Combiner1 | It must be a block and the name of block is "Combiner1". |
| 7 | Code of Level 1 device | Combiner1name | Code as close to the block as possible. |
| 8 | Level 2 device | Combiner2 | It must be a block and the name of block is "Combiner2". |
| 9 | Code of Level 2 device | Combiner2name | Code as close to the block as possible. |
| 10 | Cable route | Trench | It must start from the center of the transformer and be a tree-shaped |
When importing in reverse, the code of the array and combiner is matched nearest by identifying the distance between the center of the array/device and the text. The code of the arrays must be in text (multiline text can only have one line).The code rules for string and combiner can be represented by the initial letter and complete letter such as "G01.01.01"、"XB01.NB01.G01"、"N01.01" or "XB01.NB01". The code of the arrays is formed by concatenating the code of the strings, as shown in the table above.
13.3.2.3 Command of "gc2c"
Users can enter the "gc2c" command and complete the relevant settings in order:


13.3.2.4 Format description of "*.c2c" files
If it is found that the tilt and number of strings per row of the array are filled in incorrectly after generating the "*.c2c" file, users can open the "*.c2c" file with the "Notepad" and modify the data corresponding to the array.

The fields corresponding to the above data are:
| No. | Field | Notes |
| 1 | Name of the block | Module model. |
| 2 | Module orientation | 1. Vertical; 2 Horizontal. |
| 3 | Module power | |
| 4 | Module length | |
| 5 | Module width | |
| 6 | Module thickness | |
| 7 | Each column of modules | Nb Y module. |
| 8 | Each row of modules | Nb X module. |
| 9 | Horizontal gap | Module X spacing. |
| 10 | Vertical gap | Module Y spacing. |
| 11 | Number of strings per column | Strings in length. |
| 12 | Number of strings per row | Strings in width. |
| 13 | Cable direction | "1", "2", and "3" correspond to the "Same direction", "L+R-", and "L-R+". |
| 14 | Array tilt | |
| 15 | Height from the ground |
13.3.2.5 Associate the arrays with the layout zone
The "*.dwg" files generated by versions 2.1 and later have directly completed the association between the array and the layout zone. If the arrays and layout zone in "*.dwg" are not associated for various reasons, the following methods can be used for association:
In "PVarea" and "PVareaname" layers, users can add range lines and attribute text for the zone:

Users can add the attribute "Zone code" to the block of the arrays and fill in the corresponding zone code value.
13.3.2.6 Arrays of half string
When importing in reverse, the pairing of half string arrays is identified by the suffix "-1#", "-2#" of the array's code. For example, "G01.01.01-1#" and "G01.01.01-2#" indicate that both arrays are half string arrays, forming a whole string.
13.3.3 Edit the CAD block of the square matrix (zjxx)
This command is ised to set arrays’ parameters during the reverse import.
13.3.4 Set array's properties (SetAttrib)
This command is used to determine the orientation and area of the reverse imported array in special situation. When using this function, users can first select the array that users want to modify the same attribute, and then click the command. Users can also click the command first, and the software will automatically prompt users to select the array.

The "Area No." is used to set the number of the zone to which the array belongs.
The "Orientation basis" is used to confirm whether the lower edge of the array is the "Long side" or the "Short side" after reverse import. To avoid the situation where the software mistakenly identifies the longer side of the array as the lower side of the array when the side length in the N-S direction is greater than the side length in the E-W direction after reverse import, resulting in incorrect orientation.
The "Array orientation" is used to unify the orientation of the selected array, especially the N-S horizenal axis tracker, to "+90 °" or "-90 °", to avoid situations where some azimuth of N-S horizenal axis trackers are "+90 °" and some are "-90 °".
"Facing north?" applies to situations where the project location is in the northern hemisphere but the arrays need to be arranged facing north.
When the above parameters are not filled in, no relevant modifications will be made by default.
13.3.5 Rectangles to CAD block (gblock)
When generating "*.c2c" file in section 13.3.2, the array must be a rectangular /parallelogram block. If it is not a block, it needs to be generated using the "gblock" command.
This command can batch convert rectangles of the same size in CAD drawings into blocks (excluding hidden layers). When using this command, users can enter "S" to set the tolerance value for recognizing rectangules. This command recognizes and converts parallelograms within the tolerance range into rectangles. However, if the slope of the parallelogram is too large, it is recommended to use the "Poly2block" command for conversion.
13.3.6 Component to square array (Module2array)
This command is mainly used to convert rows of adjacent modules into a array for reverse import when drawing layout diagrams with modules as the smallest unit. Widely applicable for reverse import of flexible brackets or N-S horizenal axis tracker projects.
| Before | After |
![]() |
![]() |
The specific operation steps are as follows:
Using this command, the software will pop up an operation prompt. Click "OK" to proceed with the operation.

Select modules that make up the array as the sample for transformation, and after selecting, right-click to confirm the selection.

The software will automatically recognize all modules in the selected layer that match the sample and convert them into a array form. Users can input the name of the array block after conversion After the conversion is completed, the layer where the original module is located will be automatically hidden, and all converted arrays will be placed in the "module2array" layer.

13.3.7 Convert polys to arrays (Poly2block)
This command can convert non rectangular blocks into specified rectangular blocks.
| Before | After |
![]() |
![]() |
As shown in the table above, the purple color in the image before conversion represents the non rectangular block to be converted, and the yellow color represents the outer rectangle of the non rectangular array block.
When using this command, the software will process it in the following steps:
The software will automatically read the length, width, and angle of the selected non rectangular block (purple), and virtually generate the outer rectangle (yellow) of the non rectangular array block based on the read data.

Users need to fill in the "Real length", "Real width", "Allowance error", "Azimuth tolerance" and "Area tolerance" of the rectangular block according to the actual situation. The software will regenerate the rectangular block according to the filled values. When the rectangular block is compared with the outer rectangle (yellow) of the non rectangular array block and does not meet any of the set error and tolerance values, it will not be generated.
The center coordinates of the outer rectangle of the regenerated rectangular array block are consistent with those of the non rectangular block. The regenerated rectangular array blocks will be automatically placed in the "Poly2block" layer.
13.3.8 String number To Array number (ConvertCode)
The function of this command is to merge the code of multiple strings contained in a array into a array code.
| Before | After |
![]() |
![]() |
The main operating steps are as follows:
After using "ConvertCode", the software will prompt users to select the string code first to determine the layer of the string code. At this time, the selected string code should meet the following conditions:
①The selected string codes should be on the same layer;
②The selected string codes should use the same code rules;
Users need to select the array shape to determine the layer of the array, and the generated code will be placed in the "Array layer name_name". At this time, the selected array should meet the following conditions:
①The selected arrays should be on the same layer;
②The selected arrays must be a block.
When the upper electrcial connection level of two strings have the same code, the software will automatically remove the duplicate parts in the code.
| Before | After |
![]() |
![]() |
13.3.9 Array number To lnverter number (MakeInverterNumByArrayNum)
This command is used to generate inverter codes by sequentially selecting the array layer, array code layer, and inverter layer.
| Before | After |
![]() |
![]() |