15 #ifndef SURF_IGESLINE_H
16 #define SURF_IGESLINE_H
18 #include <genua/defines.h>
25 inline void iges_insert(
char a[],
int len,
int x)
37 while (x != 0 and i >= 0) {
59 inline void iges_insert(
char a[],
int len,
int x,
char pad)
61 for (
int k=0; k<len; ++k)
63 iges_insert(a, len, x);
96 int nc = std::min(72u, n);
104 iges_insert(&
ms[8*i], 8, v,
' ');
110 const char *pos = &
ms[8*i];
115 v = strtol(pos, &tail, 10);
121 void statusCode(uint blank, uint subswitch, uint useflag, uint hierarchy) {
123 assert(subswitch < 100);
124 assert(useflag < 100);
125 assert(hierarchy < 100);
126 iges_insert(&
ms[64], 4, 100*blank + subswitch,
'0');
127 iges_insert(&
ms[68], 4, 100*useflag + hierarchy,
'0');
132 assert(sl ==
'S' or sl ==
'G' or sl ==
'D' or sl ==
'P' or sl ==
'T');
141 assert(ln < 9999999);
142 iges_insert(&
ms[73], 7, ln,
' ');
147 return atoi(&
ms[73]);
151 void write(std::ostream & os)
const {
153 char *pms =
const_cast<char*
>(
ms);
155 os << pms << std::endl;
161 std::getline(is, line);
162 int n = std::min(line.length(), size_t(80));
163 memcpy(
ms, line.c_str(), n);
173 typedef std::vector<IgesLine> IgesLineArray;
void read(std::istream &is)
read from stream
Definition: igesline.h:159
char section() const
retrieve section letter
Definition: igesline.h:137
void statusCode(uint blank, uint subswitch, uint useflag, uint hierarchy)
assemble a status code for the directory section
Definition: igesline.h:121
IgesLine()
create an undefined line
Definition: igesline.h:80
char ms[81]
line string
Definition: igesline.h:170
char * content()
pointer to start of data block (72 chars long)
Definition: igesline.h:92
void fixedNumber(int i, int v)
put an integer v in position i of a fixed format line
Definition: igesline.h:102
void section(char sl)
set section letter
Definition: igesline.h:131
void write(std::ostream &os) const
write line to stream
Definition: igesline.h:151
Line in IGES file.
Definition: igesline.h:75
void number(uint ln)
set line number
Definition: igesline.h:140
uint number() const
retrieve line number
Definition: igesline.h:146
const char * content() const
pointer to start of data block (72 chars long)
Definition: igesline.h:89
int fixedInteger(int i) const
convert fixed-format field i to integer
Definition: igesline.h:108
uint copyContent(uint n, const char *src)
copy character data into data block (max 72 bytes)
Definition: igesline.h:95
void erase()
erase line, fill with blanks
Definition: igesline.h:83