Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.01.2017, 16:15
Интересующийся
Отправить личное сообщение для piton369 Посмотреть профиль Найти все сообщения от piton369
 
Регистрация: 26.01.2017
Сообщений: 16

Javascript for Altium Designer
Добрый день. У меня занятная ситуация. Пишу скрипт для среды Altium Designer (ПО для разводки печатных плат) для небольшой автоматизации своей работы. Версия javasript 5.8.17840, обращаясь к интернету по некоторым вопросам, выяснил, что даже вместо alert не работает, поэтому использую showmessage. Компьютер закрытый, интернета нет и не планируется. Обновления, наверное, возможны через заявку itшнику. Могу скидывать на комп, но не могу с него. Ориентируюсь на скрипт на паскале и на несколько javasriptовых для Altium, если надо могу скинуть.
Есть несколько вопросов, пока общих, но если надо код могу тоже скинуть, а вот скриншоты нет.
1) Документация по встроенным функциям и классам в интернете труднодоступна и часто гугл выдает 0 результатов)) Пробовал написать функцию, которая выводила хотя бы что во что входит, но не получилось. Если кто может подсказать, буду рад.
Но к счастью обнаружил, что есть автодополнение, немного продвинулся, но всё равно не всегда понятно как к чему обращаться. У всего, что есть в автодополнении определения типа. Там есть const, function и interface. Как использовать последнее? Как функцию? Кто сталкивался?
2) Есть рабочее окно программы, в которой производится разводка платы. Можно ли выбрать всё объекты, которые там находятся? В скрипте на паскале с которого я пытался передрать код для этого используется итератор, но в javasсript нет одной встроенной функции для этого или я её не нашел в автодополнении.
3) Возникает ошибка "... есть null или не является объектом". Я предполагаю, что она происходит из-за того, что используемая переменная undefined (проверил с помощью TypeOf), но не пойму как это исправить. По идее переменная как раз должна становится объектом, который является группой всех выделенных объектов в рабочем окне, но этого не происходит.
Ответить с цитированием
  #2 (permalink)  
Старый 27.01.2017, 10:55
Интересующийся
Отправить личное сообщение для piton369 Посмотреть профиль Найти все сообщения от piton369
 
Регистрация: 26.01.2017
Сообщений: 16

Да, я пользуюсь их сайтом, но там всё плохо. Поиск ужасный, порой нашел то что надо, читаешь и понимаешь, что это про Паскаль. А какой-то внятной документации там нет.
Ответить с цитированием
  #3 (permalink)  
Старый 27.01.2017, 12:26
Аспирант
Отправить личное сообщение для TestUser013 Посмотреть профиль Найти все сообщения от TestUser013
 
Регистрация: 13.07.2013
Сообщений: 94

piton369,
Я сам работаю с Altium и соглашусь, что документация там не очень хорошая, но вполне читабельная и четкая.
Там действительно почти все примеры на паскале, но разве это проблема? Begin заменяем на { , a End на } ,в знаке присваивания убираем двоеточие, Nil стает Null и получаем обычный JS.

Отвечая на ваши вопросы:
1) http://techdocs.altium.com/display/S...m+Designer+API
Object Interfaces are implementation independent declarations of functionality. From a developer’s perspective, there are high level object interfaces which encapsulate certain system objects in Altium Designer system such as IProject, IWorkSpace, IClient and IServerModule interfaces, which can be used to extract data for further processing by other servers.

2) В JS есть итераторы for(i = 0; i < PCB_Board.BoardOutline.PointCount; i++). Держите примеры скриптов http://valhalla.altium.com/AD10-Exam...es/Scripts.zip

3) Переменная станет тем, чем вы ее объявите. Пока вы ее не объявили она undefined. Объявите ее и сделайте объектом с нужными свойствами.


Кстати документацию лучше держать под рукой. У вас нет интернета, поэтому скачайте себе на рабочий комп. Внизу каждой страницы есть ссылка на pdf версию.
http://imu.gr/images/2017/01/27/fire...7_11-04-56.png
Ответить с цитированием
  #4 (permalink)  
Старый 30.01.2017, 11:35
Интересующийся
Отправить личное сообщение для piton369 Посмотреть профиль Найти все сообщения от piton369
 
Регистрация: 26.01.2017
Сообщений: 16

Спасибо, полезная информация. Переработаю и доложусь))
Вообще, с переводом всё таки бывают проблемы. Не все функции хорошо переводятся, например, Board.SelectecObject[i] на паскале работает, а на JS выводит ошибку "Недопустимое число аргументов или присвоение значения свойства".
Ответить с цитированием
  #5 (permalink)  
Старый 30.01.2017, 11:40
Аспирант
Отправить личное сообщение для TestUser013 Посмотреть профиль Найти все сообщения от TestUser013
 
Регистрация: 13.07.2013
Сообщений: 94

piton369,
"Недопустимое число аргументов или присвоение значения свойства" - кажется в паскале нумерация элементов в массиве начинается с 1, если этого не учитывать происходит выход за границы массива.
Ответить с цитированием
  #6 (permalink)  
Старый 30.01.2017, 11:52
Интересующийся
Отправить личное сообщение для piton369 Посмотреть профиль Найти все сообщения от piton369
 
Регистрация: 26.01.2017
Сообщений: 16

Я подумал о чём-то похожем, поэтому решил проверить. Выбрал три элемента, проверил что бы Board.SelectecObjectCount было 3 и попытался выполнить Prim=Board.SelectecObject[2]. Ошибка повторилась.
На всякий случай еще напишу, что Prim объявлял так var Prim = PCBServer.IPCB_Primitive.
Ответить с цитированием
  #7 (permalink)  
Старый 31.01.2017, 19:14
Аспирант
Отправить личное сообщение для TestUser013 Посмотреть профиль Найти все сообщения от TestUser013
 
Регистрация: 13.07.2013
Сообщений: 94

Это уже дебажить надо, угадывать не хочется.
Ответить с цитированием
  #8 (permalink)  
Старый 07.02.2017, 10:34
Интересующийся
Отправить личное сообщение для piton369 Посмотреть профиль Найти все сообщения от piton369
 
Регистрация: 26.01.2017
Сообщений: 16

Понимаю. А подскажите тогда, пожалуйста. На паскале есть код:
Procedure ScaleTrack(Prim : IPCB_Track);
Как правильно конвертировать часть в скобках на js?
По идее Prim это название переменной, а IPCB_Track это тип. Что-то я туплю.
Ответить с цитированием
  #9 (permalink)  
Старый 07.02.2017, 12:21
Аспирант
Отправить личное сообщение для TestUser013 Посмотреть профиль Найти все сообщения от TestUser013
 
Регистрация: 13.07.2013
Сообщений: 94

Вот так...
function ScaleTrack(Prim);
Ответить с цитированием
  #10 (permalink)  
Старый 07.02.2017, 14:49
Интересующийся
Отправить личное сообщение для piton369 Посмотреть профиль Найти все сообщения от piton369
 
Регистрация: 26.01.2017
Сообщений: 16

Спасибо. А если такая же конструкция используется при объявлении переменных?
var
Iter : IPCB_GroupIterator;
Prim : IPCB_Primitive;

То она, что просто превращается в
var Iter, Prim;
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книга: JavaScript. Сильные стороны Magneto Учебные материалы 16 21.04.2013 15:28
Интерпретатор Java на JS kobezzza Оффтопик 24 11.10.2012 18:32
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34