"oCD=oDoc.ComponentDefinition", но программа не дает мне этого сделать, говорит: "Document не содержит определения для ComponentDefinition"
Ну если тип Document действительно не содержит ComponentDefinition, что ж вы от него хотите. Тип Document является базовым для всех остальных производных документов типа деталей, чертежей и сборок. В документах чертежа, например, тоже нет ComponentDefinition. Как из этого выходить? Нужно просто сделать приведение типов:
Inventor.AsseblyDocument AssDoc=oApp.ActiveDocument as Inventor.AsseblyDocument
или
Inventor.AsseblyDocument AssDoc=(Inventor.AsseblyDocument)oApp.ActiveDocument
тогда AssDoc будет иметь ComponentDefinition. Если однозначно не известно что за тип документа будет, то перед приведением типов нужно сделать проверку типа:
if (oDoc.DocumentType==kAssemblyDocument) {тогда делать приведение типов}
То что бейсик (VBA) своим "исскуственным интелектом" додумывает типы и программа работает, не должно сильно радовать, он иногда начинает додумывать по своему и приводит к непредсказуемым результатам.
В добавок на додумывание тратится время процессора. C# же строго типизированный, поэтому дурацких ошибок в нем будет меньше.