Hallo Demokrat2000,
hier ist mein derzeitiger Code:
pFaces = pExtrudedProtrusion->GetFaces(SolidEdgeGeometry::igQueryCylinder);
pCylinderFace = pFaces->Item(_variant_t ((long) 1));
pCylinder = pCylinderFace->Geometry;
pFaces = pExtrudedProtrusion->GetFaces(SolidEdgeGeometry::igQueryPlane);
pFace = pFaces->Item(_variant_t ((long) 1));
pExtrudedProtrusion wird übergeben als Ergebnis der Zylindererstellung in einem anderen Programmteil.
psaCylinderArray = SafeArrayCreateVector(VT_DISPATCH, lngArrayLowerBound, (UINT) lngNumberOfCylinders);
SafeArrayPutElement(psaCylinderArray, &lngArrayIndex, pCylinder);
CylinderArray.vt = VT_ARRAY | VT_DISPATCH;
CylinderArray.parray = psaCylinderArray;
psaCylinderEndArray = SafeArrayCreateVector(VT_DISPATCH, lngArrayLowerBound, (UINT) lngNumberOfCylinders);
SafeArrayPutElement(psaCylinderEndArray, &lngArrayIndex, pCylinderEdge);
CylinderEndArray.vt = VT_ARRAY | VT_DISPATCH;
CylinderEndArray.parray = psaCylinderEndArray;
psaCylinderArray und psaCylinderEndArray sind SAFEARRAY*, lngNumberOfCylinders hat den Wert 1, lngArrayLowerBound ist 0, lngArrayIndex ist auch 0, CylinderEndArray und CylinderArray sind _variant_t.
double HoleDiameter = 0.01;
pHoleData = pPartDoc->HoleDataCollection->Add(SolidEdgePart::igRegularHole, HoleDiameter);
pHoleData->PutThreadSetting(SolidEdgePart::igRegularThread);
pHoleData->PutThreadExternalDiameter(0.00816);
pHoleData->PutThreadNominalDiameter(0.01);
pHoleData->PutThreadDepthMethod(SolidEdgePart::igFinite);
pHoleData->PutOutsideEffectiveThreadLength(0.09);
pHoleData->PutThreadDescription(_bstr_t ("M10"));
Die Werte sind jeweils von mm in m umgerechnet.
pModel = pExtrudedProtrusion->Parent;
pThreads = pModel->Threads;
pThread = pThreads->Add(pHoleData, lngNumberOfCylinders, CylinderArray, CylinderEndArray);
Zum Schluß folgt noch das Abräumen der Array. Aber bis soweit kommt mein Programm nicht.
Grüße, Frank
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP