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__); }