Мне нужно в вершины дуги (начальная и конечная точка дуги) расположить примитив и повернуть его по касательной к дуге
Есть условие - я могу поворачивать примитив по сегменту перед вершиной и по сегменту после вершины.Вычисляй не GetFirstDerivative(Point3d), а GetFirstDerivative(double param). И подбирай param рядом с конечными точками дуги, но внутри дуги, т.е. не 1.0 и 2.0, а (например) 1.0001 и 1.9999
В случае примыкания дугового сегмента к линейному (если дуговой строили по трём точкам), в месте общей вершины касательная неопределена. Поэтому лучше делать так, как я сказалОбязательно учту)