-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathfaq.txt
More file actions
227 lines (155 loc) · 7.8 KB
/
faq.txt
File metadata and controls
227 lines (155 loc) · 7.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
/* $Header: $ */
/* $NoKeywords: $ */
Legal Stuff:
Copyright (c) 1993-2012 Robert McNeel & Associates. All Rights Reserved.
Rhinoceros is a registered trademark of Robert McNeel & Associates.
THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
WARRANTY. ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR
PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.
====================================================================
Answers to frequently asked questions.
====================================================================
Support:
If you have a question concerning the openNURBS Toolkit that
is not answered in faq.txt or covered in the examples,
then please post your question on the support newsgroup at
<news://news.mcneel.com/opennurbs>.
If you are at a location that does not permit access to
<news://news.mcneel.com/opennurbs>, then you can use the web
version of the newsgroup at
<http://news2.mcneel.com/scripts/dnewsweb.exe?cmd=xover&group=opennurbs>
You can search archived newsgroup messages at
<http://news2.mcneel.com/scripts/dnewsweb.exe?cmd=f_search&utag=>
====================================================================
Versions of 3DM files.
Version 1 3DM files:
The openNURBS toolkit will read version 1 files.
Rhino 1 and other applications using the old Rhino I/O toolkit
create version 1 files.
Version 2 3DM files:
The openNURBS toolkit will read and write version 2 files.
Rhino 2 and applications using an openNURBS toolkit released on
or after December 2000 create version 2 files. (Rhino 1 and
the old Rhino I/O toolkit will not read version 2 files.)
Version 3 3DM files:
The openNURBS toolkit will read and write version 3 files.
Rhino 3 and applications using an openNURBS toolkit released on
or after October 2002 create version 3 files. (Rhino 1 and
Rhino 2 will not read version 2 files.)
Version 4 3DM files:
The openNURBS toolkit will read and write version 4 files.
Rhino 4 and applications using an openNURBS toolkit released on
or after September 2006 create version 4 files. (Rhino 1,
Rhino 2, and Rhino 3 will not read version 4 files.)
Version 5 3DM files:
The openNURBS toolkit will read and write version 5 files.
Rhino 5 and applications using an openNURBS toolkit released on
or after September 2009 create version 5 files. (Rhino 1,
Rhino 2, Rhino 3 and Rhino 4 will not read version 5 files.)
====================================================================
Supported compilers:
Question:
Can I use my brand X C++ compiler?
Answer:
The C++ openNURBS toolkit has been tested with
Microsoft Visual Studio 2010 (VC 10.0 SP1) (Windows 7 Professional SP1)
To build opennurbs and the examples with Visual Studio 2010 SP1,
use the solution build_opennurbs_vs2010.sln.
gcc version 4.2.1 (Apple Build 5658)
To build opennurbs and the examples with gcc use the makefile.
Apple Xcode 4.5 (4G182) (OSX 10.8.2)
To build opennurbs and the examples with Xcode 4.5, use the
workspace build_opennurbs_xcode.workspace.
The openNURBS C++ source code is clean and fairly simple. You
should be able to use any good C++ compiler that has 32-bit
integers, 32-bit or 64-bit pointers, and wchar_t support.
OpenNURBS uses UTF-16 to store text information in
3DM files and provides tools for converting UTF-16
strings to UTF-8 and UTF-32 strings. The ON_wString
has wchar_t characters.
Excellent compilers and make utilities are available from
The Free Software Foundation <http://www.fsf.org>. You have
the option of using these tools free of charge.
If you are using a good quality C++ compiler and run into
some toolkit code that causes problems, please let us know
and we'll attempt to change the code to accommodate the
compiler.
====================================================================
Microsoft Visual C++ 6.0 Users:
You are on your own. Support for this compiler is no longer
provided.
====================================================================
Microsoft Visual Studio 2003 users:
You are on your own. Support for this compiler is no longer
provided.
====================================================================
Microsoft Visual Studio 2005 users:
You are on your own. Support for this compiler is no longer
provided.
====================================================================
Microsoft Visual Studio 2010 users:
This is the current platform for opennurbs development.
====================================================================
The Open GL example:
Past versions of opennurbs have included a crude version of an
Open GL example. The code for this example is still included in
the current version, but we no longer provide support for using
OpenGL with opennurbs. Nothing has changed in opennurbs to with
respect to using OpenGL; we simply do not have the resources to
provide quality OpenGL support on the wide variety of platforms
where opennurbs is used.
====================================================================
Vertex ordering in ON_Mesh faces:
All faces in a ON_Mesh are stored with vertices listed in
counter-clockwise order. In particular, for quads the
vertices are ordered as
v3-----v2
| |
v0-----v1
The quads may be non-planar.
The definition of
void ON_GL( const ON_Mesh& )
in opennurbs_gl.cpp demonstrates how to go through an ON_Mesh and
render all the quads as two triangles.
====================================================================
Orientation of ON_Brep faces:
The "UV" orientation of surfaces in a Brep is arbitrary. If the
BOOL ON_BrepFace::m_bRev
member is FALSE, then the face's orientation agrees with the
surface's natural Du X Dv orientation. When the member is TRUE,
the face's orientation is opposite the surface's natural Du X Dv
orientation.
If your application cannot handle ON_BrepFaces that have a
TRUE m_bRev flag, then call ON_Brep::FlipReversedSurfaces().
See the comments in ON_Brep::FlipReversedSurfaces() and
ON_Brep::SwapFaceParameters() for details.
====================================================================
Trimming loop order and nesting:
The ON_BrepLoop::m_type member records the type of boundary
(inner, outer, etc.). A ON_BrepFace has exactly one outer
loop and it is the first loop referenced in the
ON_BrepFace::m_li[] array. The inner loops all define "holes"
in the ON_BrepFace. All of the inner holes lie inside of the
outer loop. A ON_BrepFace is always path connected.
In particular, inner loops are not "nested".
====================================================================
Surfaces in Rhino are read as ON_Breps
Internally, Rhino stores all surfaces as some type of b-rep and the
openNURBS toolkit reads these objects as b-reps. To see if an entire
ON_Brep is really just a surface, use
BOOL ON_Brep::IsSurface().
If ON_Brep::IsSurface() returns TRUE, then the b-rep geometry
is the same as the surface ON_Brep::m_S[0].
To see of a particular face in a b-rep is really just a surface,
use
BOOL ON_Brep::FaceIsSurface( face_index ).
If ON_Brep::FaceIsSurface( face_index ) returns TRUE, then the
face's geometry is the same as the surface ON_Brep::m_S[face.m_si].
====================================================================
For details about Rhino, please visit the Rhino web site at
<http://www.rhino3d.com>.
If you have questions or comments about Rhino that do not directly
pertain to Rhino toolkits, please use the Rhino discussion list.
To subscribe or learn more about the Rhino discussion list, please
visit <http://www.rhino3d.com/support/forum.html>.
====================================================================