// Для AutoCAD 2013 и 2014 - "acdb19.dll", для AutoCAD 2015 - "acdb20.dll"
[DllImport("acdb18.dll", CallingConvention = CallingConvention.ThisCall,
CharSet = CharSet.Unicode,
EntryPoint = "?appendLoop@AcDbHatch@@QAE?AW4ErrorStatus@Acad" +
"@@JABV?$AcArray@VAcGePoint2d@@V?$AcArrayMemCopyReallocator@" +
"VAcGePoint2d@@@@@@ABV?$AcArray@NV?$AcArrayMemCopyReallocator@N@@@@@Z")]
...
// Для AutoCAD 2013 и 2014 - "acdb19.dll", для AutoCAD 2015 - "acdb20.dll"
[DllImport("acdb18.dll", CallingConvention = CallingConvention.ThisCall,
CharSet = CharSet.Unicode,
EntryPoint = "?appendLoop@AcDbHatch@@QEAA?AW4ErrorStatus@Acad" +
"@@JAEBV?$AcArray@VAcGePoint2d@@V?$AcArrayMemCopyReallocator@" +
"VAcGePoint2d@@@@@@AEBV?$AcArray@NV?$AcArrayMemCopyReallocator@N@@@@@Z")]
Что-то мне подсказывает, что одной лишь заменой первого аргумента в конструкторе атрибута DllImport (как пишется в комментах) тут не отделаешься, но под каждую версию AutoCAD будет так же и свой уникальный набор "иероглифов", назначаемых свойству EntryPoint... Соответственно код, обозначенный в заметке, следовало бы оформлять так, чтобы его можно было применить легко,
без геморроя, а именно:
1. первый аргумент в конструкторе DllImport лучше делать именованной константой, инициализирующейся в блоке #if / #else if / #else (в зависимости от версии акада).
2. В тех же самых блоках неплохо было бы инициализировать и др. именованную константу, значение которой подставлялось бы аргументу EntryPoint.
Надеюсь, что код будет подправлен, дабы его можно было легко применить к любой версии AutoCAD, более новой чем R18. Про R17.2 даже и не заикаюсь, дабы не было причин кричать "мы же не поддерживаем старые!": R18 - тоже не вчерашняя и тем не менее заметка о ней... Однако, ежели вдруг добавите и для R17.2 (мало ли) - я не обижусь
.