Проблемы при создании скрипта для рисования линии от MatLab до AutoCAD - PullRequest
0 голосов
/ 12 марта 2020

Я хочу создать проект, в котором я могу нарисовать электродвигатель c, используя данные, рассчитанные в MatLab. Я знаю, как сделать это в AutoCAD, и теперь я хочу сделать эту реализацию с MatLab.

Я начал изучать, как рисовать вычисления MatLab в AutoCAD, но у меня есть несколько ошибок в скрипте, и я не могу понять, что не так. Прежде всего, я использую ActiveX для подключения. Соединение работает, мне удалось это сделать. Проблема в том, что я пытаюсь нарисовать линию

feature('COM_SafeArraySingleDim', 1)
acad=actxGetRunningServer('AutoCAD.Application');
set(acad,'visible',1);
c_doc=get(acad,'ActiveDocument');
dwg=c_doc.PaperSpace;


a=[1;5];
b=[3;4];

invoke(dwg,'AddLine',a,b);

Основная ошибка: Описание: Неправильное количество элементов в SafeArray. Я использовал 2D рабочее пространство (PaperSpace), но если я добавляю третье значение в a и b, скрипт работает, но линии не отрисовываются.

Если вы считаете, что это не лучшее решение выбрать для работы над таким проектом, можете ли вы порекомендовать мне несколько книг, видео на YouTube или несколько источников, из которых я могу учиться? Спасибо!

1 Ответ

0 голосов
/ 12 марта 2020

Метод ActiveX AddLine требует, чтобы аргументы начальной и конечной точек были трехмерными точками, выраженными относительно Всемирной системы координат (WCS) и представленными (безопасными) массивами из 3 двойных чисел.

Таким образом, ваши массивы должны будут содержать три числовых значения, например:

a=[1.0;5.0;0.0];
b=[3.0;4.0;0.0];

invoke(dwg,'AddLine',a,b);

Есть ли какая-либо причина, по которой вы создаете свои строки в Paperspace?

Как видно из названия, Paperspace обычно используется для заголовков и аннотаций с окном просмотра, отображающим соответствующую геометрию, определенную в пространстве моделей.

Вам также может понадобиться заново создать чертеж, чтобы вызвать линии быть нарисованным, что может выглядеть примерно так:

invoke(c_doc,'Regen',0);
...