Код не проверял, но есть пару замечаний:
1. Если штриховка содержит несколько петель (Loop), то толко одна из них может быть HatchLoopTypes.External. Остальные рекомендуется ставить HatchLoopTypes.Default
2. Можно обойтись без создания временных полилиний, которые потом еще и удаляются если воспользоваться методом
Hatch.AppendLoop Method (HatchLoopTypes, Point2dCollection, DoubleCollection)