Получение списка координат полилинии на JavaScript

Автор Тема: Получение списка координат полилинии на JavaScript  (Прочитано 17893 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pvetalАвтор темы

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Добрый день.
Подскажите пожалуйста, как получить список координат полилинии (функция entget в LISP) c помощью JavaScript API ?
По аналогии с примерами с сайта 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. }

получаю такой список :
  • Key: retCode value: 0
  • Key: status value: 5100
  • Key: stringResult value:
  • Key: contextID value: 7
  • Key: objectId value: ffd03638
  • Key: pickedPoint value: [object Object]
  • Key: callbackName value: Ac_Editor_getEntity_complete
Объект pickedPoint содержит координаты одной точки, которая не является ни одной из вершин полилинии.

Подскажите пожалуйста решение или имя функции в API.
Спасибо.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
pvetal
Приветствую на форуме! Начни с того, что отформатируй код по правилам форума (смотри у меня в подписи).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Насколько я знаю средствами одного 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 ?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pvetalАвтор темы

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Теоретически можно расширить возможности JavaScript при помощи .NET

Дело в том, что я выбрал именно JavaScript, потому что знаком с ним по своему хобби - веб-программирование, а .NET я вообще не знаю и изучать его ради написания одного дополнения (плагина) - нет желания.
Я работаю в AutoCAD и по построенным в этой среде чертежам изделий, пишу G-код для токарного станка с ЧПУ. И вот решил автоматизировать этот процесс.
Может получится расширить возможность JavaScript при помощи LISP (его я немного знаю) - буду искать информацию.
Спасибо.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Может получится расширить возможность JavaScript при помощи LISP
Увы  нет.
P.S.: Я думаю, что проще будет написать на C# (синтаксис которого похож на JS), чем пытаться писать на JS - для AutoCAD он по прежнему остаётся неполноценным API.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pvetalАвтор темы

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
В JavaScript Reference Guide написано что из кода LISP можно загружать JS файлы (Loads an HTML page and executes JavaScript code), но, если я правильно понял, только в С++ и .NET можно передавать данные между ними с помощью callback функции, правильно ?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
если я правильно понял, только в С++ и .NET можно передавать данные между ними с помощью callback функции, правильно ?
Да. И только средствами ObjectARX/.NET можно расширить функционал JavaScript.
Подробнее можешь посмотреть здесь: http://adndevblog.typepad.com/files/autocad_2014_getting_started_with_javascript_api.zip
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pvetalАвтор темы

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Извините за настойчивость, а в javascript(v3) API под AutoCAD 2016 - не появилось новых функций, которые могли бы помочь в моём вопросе ? Всё-таки 36 функций добавилось  :P

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Посмотри какие свойства - значения свойств возвращает Acad.DBEntity.getProperties() - может найдёшь там что-то подходящее.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pvetalАвтор темы

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
СПАСИБО!
Если решу сей вопрос силами JS - обязательно опубликую решение.  ::)

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Дело в том, что я выбрал именно JavaScript, потому что знаком с ним по своему хобби - веб-программирование, а .NET я вообще не знаю и изучать его ради написания одного дополнения (плагина) - нет желания.
...
Если решу сей вопрос силами JS - обязательно опубликую решение.  ::)
Если есть опыт написания скриптов PowerShell, то через него можешь сделать то, что хотел. Из PowerShell доступен весь AutoCAD .NET API и AutoCAD COM API. Про доступность ObjectARX API ничего сказать не могу (хотя P\Invoke никто не отменял).