一个六棱柱(有不同的色段),上面套了很多球,拖动柱子时能整体移动,请问通过什么方式,调用哪些接口可以做到?
有三种方法,一、把这些元素做成一个单元;二、把这些元素放到同一个命名组里边,移动元素的时候只要把Group锁打开就可以同时移动了;三、通过元素依赖实现,元素依赖在v8i的SDK文档里边有比较详细地介绍(如插图所示),在CE SDK文档里没找到,不知道是去掉了,还是我找的方法不对,您可以先看看V8iSDK的文档先理解一下原理。
1.能否具体说一下调用哪个接口可以绘制六棱柱、球?
2.如何绘制才能达到球被棱柱穿过的效果,见上图
3.如果球要沿棱柱上下移动,应该调用哪个接口,具体咋做可否给个例子?
您说的球要沿棱柱上下移动是在元素创建好了添加到模型文件之后移动球,还是说代码创建图中所示的模型时如何把球移动到指定位置?
代码创建图中的模型,同时还需要程序能够上下移动球,具体调用哪些接口可以实现这样的效果?
您是用的Addin(c#)还是NativeCode(c/c++)方式?
我用的是NativeCode方式
下边的代码创建了一个三棱柱的,您可以参考一下。如何移动应该是在您别的帖子里边回复过了,这里就不再重新赘述了:)
ElementHandle CreateTriangleExtrusion(DPoint3d ptS, DPoint3d ptE) { EditElementHandle eleRtn; DgnModelRefP dgnModel = ISessionMgr::GetActiveDgnModelRefP(); double extrusionLen = ptS.Distance(ptE); DPoint3d ptArr[4]; double TriangleEdgeLen = 100000; ptArr[0].x = 0; ptArr[0].y = TriangleEdgeLen / 2 / sqrt(3) * 2; ptArr[0].z = 0; ptArr[1].x = TriangleEdgeLen / 2; ptArr[1].y = -TriangleEdgeLen / 2 / sqrt(3); ptArr[1].z = 0; ptArr[2].x = -TriangleEdgeLen / 2; ptArr[2].y = -TriangleEdgeLen / 2 / sqrt(3); ptArr[2].z = 0; ptArr[3] = ptArr[0]; bvector<Dpoint3d> vecPt; vecPt.push_back(ptArr[0]); vecPt.push_back(ptArr[1]); vecPt.push_back(ptArr[2]); vecPt.push_back(ptArr[3]); ICurvePrimitivePtr curPri = ICurvePrimitive::CreateLineString(vecPt); CurveVectorPtr curveVec = CurveVector::Create(CurveVector::BOUNDARY_TYPE_Outer); curveVec->Add(curPri); DVec3d dvec3d; dvec3d.x = 0; dvec3d.y = 0; dvec3d.z = extrusionLen; DgnExtrusionDetail dgnExtruDeta =DgnExtrusionDetail(curveVec,dvec3d, true); ISolidPrimitivePtr solidPrimi = ISolidPrimitive::CreateDgnExtrusion(dgnExtruDeta); DraftingElementSchema::ToElement(eleRtn, *solidPrimi, NULL, *dgnModel); return eleRtn; }
Answer Verified By: 周谦益 Zhou Qianyi
2.如何绘制才能达到球被棱柱穿过的效果?是两个实体求并?具体用哪个接口?
如果已知六边形的中心点坐标和边长,有什么接口可以直接创建吗?