Разобралась!
Действительно надо получить название нужного формата из драйвера принтера, потом с помощью ф-уии GetLocaleMediaName передать его в автокад, но не на прямую! (в этом и заключалась моя ошибка)
Привожу пример кода на VB
Dim New_Layout As AcadLayout
Dim LocalName As String
Dim Formats As Variant
Dim Element As Variant
Dim Name As String
Set Layout = ThisDrawing.Layouts.Add("New_Layout")
LocalName = "A4 (210x297mm)" 'это название я получаю из драйвера
Formats = New_Layout.GetCanonicalMediaNames
For Each Element In Formats
Name = New_Layout.GetLocaleMediaName(Element)
If InStr(1, Name, LocalName, vbTextCompare) = 1 Then
New_Layout.CanonicalMediaName = Element
End If
Next Element
Загвозка оказалась в том, что оказывается существуют канонические имена, локальные канонические имена, и мена, которые получаем из драйвера. Сопоставление этих имен вещь не очевидная.
З.Ы. кого обидила, извините )
З.З.Ы. перевести этот код на С++ оказалась не так-то просто