Сообщество программистов Autodesk в СНГ

ADN Club => JavaScript и web-программирование для ПО Autodesk => Тема начата: pvetal от 04-02-2016, 13:04:25

Название: Получение списка координат полилинии на JavaScript
Отправлено: pvetal от 04-02-2016, 13:04:25
Добрый день.
Подскажите пожалуйста, как получить список координат полилинии (функция entget в LISP) c помощью JavaScript API ?
По аналогии с примерами с сайта http://through-the-interface.typepad.com/ (http://through-the-interface.typepad.com/) я получаю с помощью функции Acad.Editor.getEntity объект ( resultObj ).
Затем я перебираю в цикле свойства объекта и вывожу их в текстовое поле:
Код - Javascript [Выбрать]
  1. for (var key in resultObj) {
  2.         TextIds.value = TextIds.value + "Key: " + key + " value: " + resultObj[key] +'\n';
  3. }

получаю такой список :
Объект pickedPoint содержит координаты одной точки, которая не является ни одной из вершин полилинии.

Подскажите пожалуйста решение или имя функции в API.
Спасибо.
Название: Re: Получение списка координат полилинии на JavaScript
Отправлено: Александр Ривилис от 04-02-2016, 13:06:44
pvetal
Приветствую на форуме! Начни с того, что отформатируй код по правилам форума (смотри у меня в подписи).
Название: Re: Получение списка координат полилинии на JavaScript
Отправлено: Александр Ривилис от 04-02-2016, 13:29:15
Насколько я знаю средствами одного JavaScript получить вершины полилинии нельзя. Его возможности очень ограничены. Можно получить границы примитива:
Код - Javascript [Выбрать]
  1. var entity = new Acad.DBEntity(resultObj.objectId);
  2. var ext = entity.getExtents();
Теоретически можно расширить возможности JavaScript при помощи .NET: http://through-the-interface.typepad.com/through_the_interface/2013/05/complementing-autocads-javascript-api-using-net.html

P.S.: А с чем связан выбор JavaScript API для этой задачи? Почему не lisp/.NET/ARX ?
Название: Re: Получение списка координат полилинии на JavaScript
Отправлено: pvetal от 04-02-2016, 13:51:29
Теоретически можно расширить возможности JavaScript при помощи .NET

Дело в том, что я выбрал именно JavaScript, потому что знаком с ним по своему хобби - веб-программирование, а .NET я вообще не знаю и изучать его ради написания одного дополнения (плагина) - нет желания.
Я работаю в AutoCAD и по построенным в этой среде чертежам изделий, пишу G-код для токарного станка с ЧПУ. И вот решил автоматизировать этот процесс.
Может получится расширить возможность JavaScript при помощи LISP (его я немного знаю) - буду искать информацию.
Спасибо.
Название: Re: Получение списка координат полилинии на JavaScript
Отправлено: Александр Ривилис от 04-02-2016, 14:10:30
Может получится расширить возможность JavaScript при помощи LISP
Увы  нет.
P.S.: Я думаю, что проще будет написать на C# (синтаксис которого похож на JS), чем пытаться писать на JS - для AutoCAD он по прежнему остаётся неполноценным API.
Название: Re: Получение списка координат полилинии на JavaScript
Отправлено: pvetal от 04-02-2016, 14:29:54
В JavaScript Reference Guide написано что из кода LISP можно загружать JS файлы (Loads an HTML page and executes JavaScript code), но, если я правильно понял, только в С++ и .NET можно передавать данные между ними с помощью callback функции, правильно ?
Название: Re: Получение списка координат полилинии на JavaScript
Отправлено: Александр Ривилис от 04-02-2016, 14:34:07
если я правильно понял, только в С++ и .NET можно передавать данные между ними с помощью callback функции, правильно ?
Да. И только средствами ObjectARX/.NET можно расширить функционал JavaScript.
Подробнее можешь посмотреть здесь: http://adndevblog.typepad.com/files/autocad_2014_getting_started_with_javascript_api.zip
Название: Re: Получение списка координат полилинии на JavaScript
Отправлено: pvetal от 04-02-2016, 14:47:45
Извините за настойчивость, а в javascript(v3) API под AutoCAD 2016 - не появилось новых функций, которые могли бы помочь в моём вопросе ? Всё-таки 36 функций добавилось  :P
Название: Re: Получение списка координат полилинии на JavaScript
Отправлено: Александр Ривилис от 04-02-2016, 15:11:34
Посмотри какие свойства - значения свойств возвращает Acad.DBEntity.getProperties() - может найдёшь там что-то подходящее.
Название: Re: Получение списка координат полилинии на JavaScript
Отправлено: pvetal от 04-02-2016, 15:22:08
СПАСИБО!
Если решу сей вопрос силами JS - обязательно опубликую решение.  ::)
Название: Re: Получение списка координат полилинии на JavaScript
Отправлено: Андрей Бушман от 10-02-2016, 21:50:19
Дело в том, что я выбрал именно JavaScript, потому что знаком с ним по своему хобби - веб-программирование, а .NET я вообще не знаю и изучать его ради написания одного дополнения (плагина) - нет желания.
...
Если решу сей вопрос силами JS - обязательно опубликую решение.  ::)
Если есть опыт написания скриптов PowerShell, то через него можешь сделать то, что хотел. Из PowerShell доступен весь AutoCAD .NET API и AutoCAD COM API. Про доступность ObjectARX API ничего сказать не могу (хотя P\Invoke никто не отменял).