FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
Loading...
Searching...
No Matches
CNFDB_402.cpp
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright (c) 2019 FrontISTR Commons
3 * This software is released under the MIT License, see LICENSE.txt
4 *****************************************************************************/
5/*
6 CNFDB_402 Ver.1.0
7 -----------------------------
8 402 Properties ( of element )
9*/
10
11#include "CNFData.h"
12#include "CNFDB_402.h"
13
14// 402 Properties ( of element )
15
17 num_lam = 0;
18 lam_MID = 0;
19 num_val = 0;
20 Value = 0;
21 num_outline = 0;
22 u = 0;
23 v = 0;
24 draw = 0;
25 num_outline_2 = 0;
26 u_2 = 0;
27 v_2 = 0;
28 draw_2 = 0;
29}
30
32
34 delete[] lam_MID;
35 delete[] Value;
36 delete[] u;
37 delete[] v;
38 delete[] draw;
39 delete[] u_2;
40 delete[] v_2;
41 delete[] draw_2;
42 num_lam = 0;
43 lam_MID = 0;
44 num_val = 0;
45 Value = 0;
46 num_outline = 0;
47 u = 0;
48 v = 0;
49 draw = 0;
50 num_outline_2 = 0;
51 u_2 = 0;
52 v_2 = 0;
53 draw_2 = 0;
54}
55
57 char buff[256];
58 int i;
59 Clear();
60 // #1
61 nfd->ReadLineEx(buff);
62 nfd->ReadRecord(buff, "IIIIII", &ID, &color, &matID, &type, &layer, &refCS);
63 // #2
64 nfd->ReadLineEx(buff);
65 nfd->ReadStr(buff, title, sizeof(title));
66 // #3
67 nfd->ReadLineEx(buff);
68 nfd->ReadRecord(buff, "IIII", &floag[0], &floag[1], &floag[2], &floag[3]);
69 // #4
70 nfd->ReadLineEx(buff);
71 nfd->ReadRecord(buff, "I", &num_lam);
72 // # ----------------------
73 // 8 values par record;
74 lam_MID = new nf_int[num_lam];
75 nfd->ReadMultRec('I', 8, num_lam, lam_MID);
76 // # ----------------------
77 nfd->ReadLineEx(buff);
78 nfd->ReadRecord(buff, "I", &num_val);
79 // # ----------------------
80 // 5 values par record;
81 Value = new nf_float[num_val];
82 nfd->ReadMultRec('F', 5, num_val, Value);
83
84 // ======= Ver.6.0 ========================
85 if (nfd->version < 6.0) return;
86
87 // # ----------------------
88 nfd->ReadLineEx(buff);
89 nfd->ReadRecord(buff, "I", &num_outline);
90 // # ----------------------
91 u = new nf_float[num_outline];
92 v = new nf_float[num_outline];
93 draw = new nf_int[num_outline];
94
95 for (i = 0; i < num_outline; i++) {
96 nfd->ReadLineEx(buff);
97 nfd->ReadRecord(buff, "FFI", &u[i], &v[i], &draw[i]);
98 }
99
100 // ======= Ver.8.1 ========================
101 if (nfd->version < 8.1) return;
102
103 // # ----------------------
104 nfd->ReadLineEx(buff);
105 nfd->ReadRecord(buff, "I", &num_outline_2);
106 // # ----------------------
110
111 for (i = 0; i < num_outline_2; i++) {
112 nfd->ReadLineEx(buff);
113 nfd->ReadRecord(buff, "FFI", &u_2[i], &v_2[i], &draw_2[i]);
114 }
115}
116
117//*****************************************************************************
118
119void CNFDB_402::WriteData(class CNFData *nfd, FILE *fp) {
120 int i;
121 // #1
122 nfd->WriteData(fp, "IIIIIIn", ID, color, matID, type, layer, refCS);
123 // #2
124 nfd->WriteStr(fp, title);
125 // #3
126 nfd->WriteData(fp, "IIIIn", floag[0], floag[1], floag[2], floag[3]);
127 // #4
128 nfd->WriteData(fp, "In", num_lam);
129
130 // # ----------------------
131 // 8 values par record;
132 for (i = 0; i < num_lam; i++) {
133 nfd->WriteData(fp, "I", lam_MID[i]);
134
135 if (i % 8 == 7) nfd->WriteData(fp, "n");
136 }
137
138 if (i % 8 != 0) nfd->WriteData(fp, "n");
139
140 // # ----------------------
141 nfd->WriteData(fp, "In", num_val);
142
143 // # ----------------------
144 // 5 values par record;
145 for (i = 0; i < num_val; i++) {
146 nfd->WriteData(fp, "F", Value[i]);
147
148 if (i % 5 == 4) nfd->WriteData(fp, "n");
149 }
150
151 if (i % 5 != 0) nfd->WriteData(fp, "n");
152
153 // ======= Ver.6.0 ========================
154 if (nfd->version < 6.0) return;
155
156 // # ----------------------
157 nfd->WriteData(fp, "In", num_outline);
158
159 // # ----------------------
160 for (i = 0; i < num_outline; i++) {
161 nfd->WriteData(fp, "FFIn", u[i], v[i], draw[i]);
162 }
163
164 // ======= Ver.8.1 ========================
165 if (nfd->version < 8.1) return;
166
167 // # ----------------------
168 nfd->WriteData(fp, "In", num_outline_2);
169
170 // # ----------------------
171 for (i = 0; i < num_outline_2; i++) {
172 nfd->WriteData(fp, "FFIn", u_2[i], v_2[i], draw_2[i]);
173 }
174}
int nf_int
Definition: CNFDataBlock.h:19
double nf_float
Definition: CNFDataBlock.h:21
virtual ~CNFDB_402()
Definition: CNFDB_402.cpp:31
nf_int num_lam
Definition: CNFDB_402.h:40
nf_float * v
Definition: CNFDB_402.h:56
nf_int * lam_MID
Definition: CNFDB_402.h:43
nf_int num_outline_2
Definition: CNFDB_402.h:62
nf_int refCS
Definition: CNFDB_402.h:34
nf_int type
Definition: CNFDB_402.h:32
nf_int * draw_2
Definition: CNFDB_402.h:66
nf_int num_outline
Definition: CNFDB_402.h:53
nf_int color
Definition: CNFDB_402.h:30
virtual void Clear()
Definition: CNFDB_402.cpp:33
nf_float * Value
Definition: CNFDB_402.h:48
nf_int layer
Definition: CNFDB_402.h:33
nf_int num_val
Definition: CNFDB_402.h:45
virtual void Read(class CNFData *nfd)
Definition: CNFDB_402.cpp:56
nf_char title[26]
Definition: CNFDB_402.h:36
nf_int ID
Definition: CNFDB_402.h:29
nf_float * u_2
Definition: CNFDB_402.h:64
nf_float * v_2
Definition: CNFDB_402.h:65
nf_float * u
Definition: CNFDB_402.h:55
nf_int floag[4]
Definition: CNFDB_402.h:38
virtual void WriteData(class CNFData *nfd, FILE *fp)
Definition: CNFDB_402.cpp:119
nf_int * draw
Definition: CNFDB_402.h:57
nf_int matID
Definition: CNFDB_402.h:31
void WriteStr(FILE *fp, const char *s)
Definition: CNFData.cpp:452
void ReadStr(char *buff, char *s, int size)
Definition: CNFData.cpp:373
void ReadLineEx(char *buff, int size=255)
Definition: CNFData.cpp:367
double version
Definition: CNFData.h:48
void WriteData(FILE *fp, const char *fmt,...)
Definition: CNFData.cpp:486
void ReadRecord(char *buff, const char *fmt,...)
Definition: CNFData.cpp:308
void ReadMultRec(char type, int n_in_rec, int val_n, void *val)
Definition: CNFData.cpp:394