1.编译和运行时信息
1.1编制和执行
编译和运行基于C的应用程序需要以下步骤:
编译:
- 所有3DGS应用:
- hoops.lib
- 使用HOOPS/MVO的应用:
- hoops_mvo.lib
- 使用HOOPS/Stream的应用:
- hoops_stream.lib
执行:确保以下本地DLL位于应用程序的目录或PATH中。
- 所有3DGS应用:
- hoops< version > _v< Visual Studio version >.dll
- 使用HOOPS/MVO的应用:
- hoops_mvo< version >_v< Visual Studio version >.dll
- hoops_mvo_mgk< version >_v< Visual Studio version >.dll
- 使用HOOPS/Stream的应用:
- hoops_stream< version >_v< Visual Studio version >.dll
如果您正在使用文件reader插件(如HOOPS Exchange或DWG),则还必须在应用程序的运行时环境中提供相应的.hio文件。例如,要使用HOOPS Exchange读取文件,请确保提供hioexchange<version>.hio。请注意,这些HIO文件仅是接口-您仍然需要支持的第三方库来使用HIO功能。
上述文件位于/bin/nt_i386_vc<Visual Studio版本>目录中。
2.C/C++定义
为了访问包括HOOPS可视化API的HC_rountines函数原型,HOOPS Visualize的用户需要在他们的程序中包含头文件hc.h。
HOOPS I.M.的用户还应包含hic.h来访问中间模式例程。中间模式例程不是Visualize之上的一层。中间模式例程直接访问HOOPS Visualize本身使用的数据和过程。包含hic.h自动为用户包含hoop.h。可视化本身的约定和编码风格体现在hoops.h中。通过查看驱动程序源代码,可以轻松识别这种编码风格。以下词语在hoops.h中定义:
null
countof
true, false
forever
until
global, globaldata
local
nobreak
stack
在HOOPS I.M.程序中不要使用这些词汇。
3.例程名称
3.1例程名称:前缀
Visualize程序中的每个例程名称(例如::Insert_Polyline)必须有前缀,才能在计算机系统上实际使用该名称。前缀取决于您使用的语言,有时还取决于您所使用的语言的品牌。当从C和C++调用时,用户必须在例程前面加上HC_,如::Reset_System。
3.2通用名称
所有HOOPS Visualize例程的名称都遵循一个标准模式:名称的第一部分是一个主动动词,表示要做什么,第二部分是描述性名词。最常见的动词有:
- Define:更改全局系统状态,或将某些内容添加到系统范围的表中。
- Insert:将新的图片元素合并到当前片段中,并返回对该元素的引用。
- DInsert:Insert的双精度版本。传递double而不是float。
- Edit:更改现有图片元素的定义。
- DEdit:编辑的双精度版本。传递double而不是float。
- Set:为属性加载显式新值。
- UnSet:取消设置。(允许再次从更高级别继承属性值。)
- Show:从系统中检索一项信息。
- DShow:双精度版本。返回double而不是float。
- Begin:初始化数据库信息搜索。
- Find:逐步进行信息搜索。
- End:完成信息搜索。
请注意,各种状态修改例程中会出现许多其他动词,例如::Dolly_Camer和::Rename_Seggment。这些不太频繁出现的动词通常是不言自明的。
最常用的名词:
- Segment: The routine works with a graphics segment (a place for storing picture elements) as one element.
- Camera: The routine positions or moves the viewing camera.
- Object: The routine works with the “real” objects (as organized into segments) from which your scene is composed.
- Text: The routine affects the text labels appearing in the scene.
4.C/C++中的数据类型名称和语言声明
4.1HC_ 约定
HC_subroutines(子例程)使用的数据类型转换如下:
由于HOOPS使用的位模式可能与“TRUE”宏的位模式不相同,请避免将“布尔值”与“TRUE值”进行显式比较。相反,请依赖“不等于零”的C属性。
如果例程定义指定“通过引用传递”,则C中的参数必须是前面有“&”的简单变量或指针值。
如果例程定义指定了return子句,则可以忽略C中的返回值。这在其他语言中可能不正确。
如果实际参数(字符串)被指定为通过引用传递。返回给用户时,必须提供一个足够大的简单变量的地址,以容纳可能返回的内容。(调用::Define_System_Options可用于指定HOOPS应返回的最大C字符串长度。)
4.2 HIC约定
HIC_子例程使用的其他数据类型转换如下:
HIC_Marker, HIC_Point, HIC_Polygon, HIC_Polyline, and HIC_Text