void alignSketchToGridOrigin(CComPtr<ISketchPoint> swGridLocation,
                                                 CComPtr<ISketchSegment> swSketchSegment,
                                                 CComPtr<IModelDoc2> swModel,
                                                 CComPtr<ISketchManager> swSketchManager) {

        CComPtr<IDispatch> swDisplayDimensionUnknown;
        CComPtr<IDisplayDimension> swDisplayDimension;

        CComPtr<IDispatch> swDimensionUnknown;
        CComPtr<IDimension> swDimension;

        VARIANT_BOOL selectSegment;
		VARIANT_BOOL selectGridLocation;

        long returnLong;

        insureExecution(swModel->ClearSelection(), __LINE__);
		
		
		insureExecution(swSketchSegment->Select(VARIANT_TRUE, &selectSegment), __LINE__);
        insureExecution(swGridLocation->Select(VARIANT_TRUE, &selectGridLocation), __LINE__);

        insureExecution(swModel->AddDimension2(0,0,0, &swDisplayDimensionUnknown), __LINE__);
        swDisplayDimension = swDisplayDimensionUnknown;

        if(swDisplayDimension == NULL) // If Sketch and GridLocation already line up, this object is null
                return;

        insureExecution(swDisplayDimension->GetDimension(&swDimensionUnknown), __LINE__);
        swDimension = swDimensionUnknown;

        insureExecution(swDimension->SetValue2(0, swThisConfiguration, &returnLong), __LINE__);

        insureExecution(swSketchManager->InsertSketch(VARIANT_TRUE), __LINE__);

}