CREO Toolkit二次开发-绘图与视图
Creo二次开发自动出图一直是热烈讨论的话题。个人认为出图的工作是其实也是设计的工作,特别是尺寸、公差等标注更是需要工程人员大量的知识、经验积累才能完成。通过二次开发可能在特定场合能够完成自动出图的工作,想做一个通用的全自动出图至少目前是很难做到,不过可以通过二次开发做一些预置的辅助工作,减少设计人员的一些机械化常规工作。
1.同名绘图的创建
生成绘图文件可以使用ProDrawingFromTmpltCreate函数完成,其中第一个参数为文件名,第二个参数为绘图模板文件,只需如下调用即可:
1 | status = ProDrawingFromTmpltCreate(data.name, wtemplatename, &model, options, &created_drawing, &errors); |
其中name可以通过获取当前模型的模型名获得:
1 | status = ProMdlDataGet(mdl, &data); |
2.视图的基本操作
视图在Toolkit中使用ProView句柄进行描述,对视图的修改最常见的包括以下几种:
2.1 视图的位置和比例
如果视图的ProView句柄已获得,则可以通过ProDrawingViewMove
和ProDrawingViewScaleSet
设定其位置和比例,注意移动视图的坐标系采用的是Screen coordinate system,而这两个操作都必须保证视图在当前窗口打开。对于希望以程序生成的视图,其位置一般都可以通过生成对应视图的函数参数设定,留在第三节进行说明。
2.2 视图的样式
视图的样式由proDrawingViewDisplay这个结构体进行描述:
1 | typedef struct proDrawingViewDisplay |
结构体中style表述视图的显示方式,使用了一个enum数据进行描述:
1 | typedef enum hlr_disp |
ProDrawingViewDisplay结构体数据相对复杂,在实际代码撰写过程中,可以通过先获取当期视图样式,再修改对应值的方式减少工作量。获取和设定视图样式分别由ProDrawingViewDisplayGet
h和ProDrawingViewDisplaySet
两个函数完成,所以设定视图的显示方式代码如下:
1 | ProError _setDisplayStyle(ProDrawing drawing, ProView view, ProDisplayStyle style) |
3.视图的创建
视图其实可以根据绘图模板文件直接生成,不过存在一定的局限性,例如同一类型的零件的尺寸、宽高等特征在生成视图时可能需要设置不同的比例和方向,如果存在这些情况则根据绘图模板文件直接生成则存在一定的困难,所以下面介绍视图的创建。
3.1 主视图的创建
在Creo中,主视图是投影视图的基础,确定主视图后俯视图以及左视图只需要通过投影的方式即可完成。在完成主视图的创建是,首先需要明确主视图的摆放方向。通常情况下一类零件的主视图方向是一定的,但存在宽高等特征的问题导致主视图可能需要旋转确定。确定零件或装配体得外形尺寸可参照CREO Toolkit二次开发-外形尺寸一文。而零件的旋转后得到视图的位置则可以通过位姿矩阵确定,详见CREO 二次开发—位姿矩阵详解一文。创建主视图使用ProDrawingGeneralviewCreate
函数,示例代码如下:
1 | status = ProDrawingCurrentsolidGet(drawing, &solid); |
2.2 投影视图的创建
投影视图可以根据给定的视图以及新视图的位置确定,此视图比例与给定的视图一致,无法修改,通过ProDrawingProjectedviewCreate
函数生成。接上面生成的主视图为例,生成俯视图只需把位置定在主视图的下方然后即可生成:
1 | refPoint[1] -= 200; |
创建三视图效果如下图所示:

图 创建三视图
2.3 剖视图的创建
剖视图的创建和投影视图一样,使用ProDrawingView2DSectionSet
函数设定其截面即可:
1 | status = ProDrawingProjectedviewCreate(drawing, parentView, PRO_B_FALSE, refPoint, &_2DSectionView); |
创建剖视图效果如下图所示:

图 创建剖视图
2.4 辅助视图的创建
辅助视图的创建由ProDrawingViewAuxiliaryCreate
函数完成,指定对应的投影边和办法位置即可,相对简单,直接给出代码:
1 | status = ProSelect((char *)"edge", 1, NULL, NULL, NULL, NULL, &sel, &n_sel); |
创建辅助视图效果如下图所示:

图 创建辅助视图
2.5 详细视图的创建
创建详细视图通过ProDrawingViewDetailCreate
函数实现,具体操作与投影视图和辅助视图类似,只是函数参数的样条曲线的创建相对复杂一点,样条曲线的在Toolkit的数据结构描述如下:
1 | typedef struct ptc_spline |
利用ProSplinedataInit
可以根据给定样条曲线参数、样条线插值点和各点的切线向量生成目标样条曲线,直接从Toolkit的示例代码中找到创建样条曲线的代码并修改为选择边上下左右格偏移20的四个点,示例代码如下:
1 | //下面两个函数直接拷贝官方帮助文件 |
1 | drawing = (ProDrawing)mdl; |

图 创建详细视图
P.S. 本文也尝试生成旋转剖视图,但是没有解决,总是代码运行成功但提示”因为非法视图指令,此视图已被冻结”。以下代码为测试生成旋转剖视图的代码,如果发现问题,请指正:
1 | drawing = (ProDrawing)mdl; |
完整代码可在Github.com下载。代码在VS2010,Creo 2.0 M060 X64下编译通过。