static void Asdk_TESTLOFT(void)
{
AcDbLine *pLine1 = new AcDbLine(AcGePoint3d( 0.0, 0.0, 0.0), AcGePoint3d( 0.0, 100.0, 0.0 ));
AcDbLine *pLine2 = new AcDbLine(AcGePoint3d( 0.0, 100.0, 0.0), AcGePoint3d( 0.0, 100.0, 70.0 ));
AcDbLine *pLine3 = new AcDbLine(AcGePoint3d( 0.0, 100.0, 70.0), AcGePoint3d( 0.0, 0.0, 70.0 ));
AcDbLine *pLine4 = new AcDbLine(AcGePoint3d( 0.0, 0.0, 70.0), AcGePoint3d( 0.0, 0.0, 0.0 ));
AcDbVoidPtrArray curveArray1;
curveArray1.append(pLine1);
curveArray1.append(pLine2);
curveArray1.append(pLine3);
curveArray1.append(pLine4);
AcDbVoidPtrArray regArr1;
Acad::ErrorStatus aEs = AcDbRegion::createFromCurves(curveArray1, regArr1);
delete pLine1;
delete pLine2;
delete pLine3;
delete pLine4;
if(aEs != Acad::eOk)
return;
AcDbRegion *pRegion1 = (AcDbRegion *)regArr1.at(0);
AcDbLine *pLine5 = new AcDbLine(AcGePoint3d( 300, 0.0 , 0.0), AcGePoint3d( 300, 100.0 , 0.0));
AcDbLine *pLine6 = new AcDbLine(AcGePoint3d( 300.0, 100.0, 0.0), AcGePoint3d( 300.0, 100.0, 35.0));
AcDbLine *pLine7 = new AcDbLine(AcGePoint3d( 300, 100.0 , 35.0), AcGePoint3d( 300.0, 0.0, 35.0 ));
AcDbLine *pLine8 = new AcDbLine(AcGePoint3d( 300.0, 0.0, 35.0), AcGePoint3d( 300.0, 0.0, 0.0));
AcDbVoidPtrArray curveArray2;
curveArray2.append(pLine5);
curveArray2.append(pLine6);
curveArray2.append(pLine7);
curveArray2.append(pLine8);
AcDbVoidPtrArray regArr2;
aEs = AcDbRegion::createFromCurves(curveArray2, regArr2);
delete pLine5;
delete pLine6;
delete pLine7;
delete pLine8;
if(aEs != Acad::eOk)
return;
AcDbRegion *pRegion2 = (AcDbRegion *)regArr2.at(0);
AcGePoint3d startPnt(0.0, 50.0, 0.0);
AcGePoint3d endPnt(300.0, 50.0, 0.0);
AcGePoint3dArray fitPnts;
fitPnts.append(startPnt);
fitPnts.append(endPnt);
AcGeVector3d startTan(0.1223, 2.1674, 0);
AcGeVector3d endTan(0.8968, 1.2518, 0.0);
AcDbSpline *pGuideSpline = new AcDbSpline(fitPnts, startTan, endTan, AcGe::kChord, 4, 0.0);
AcArray< AcDbEntity *> crossCurvesArr;
AcArray< AcDbEntity *> guideCuvesArr;
AcDbEntity *pPathEntity = NULL;
AcDbLoftOptions loftOption;
crossCurvesArr.append(pRegion1);
crossCurvesArr.append(pRegion2);
guideCuvesArr.append(pGuideSpline);
AcDb3dSolid *pLoftedSolid = new AcDb3dSolid;
// crash in 2015; ok in 2012;
aEs = pLoftedSolid->createLoftedSolid(crossCurvesArr, guideCuvesArr, pPathEntity, loftOption);
delete pGuideSpline;
if(aEs != Acad::eOk){
delete pLoftedSolid;
return;
}
AcDbObjectId id3;
addToModelSpace(pLoftedSolid, id3);
}