Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: deplhi script API
Форум разработчиков электроники ELECTRONIX.ru > Печатные платы (PCB) > Разрабатываем ПП в САПР - PCB development > Altium Designer, DXP, Protel
demidrol
Какая-то странная документация у альтиума по их скриптингу. К примеру, в examples они вовсю используют IProjectVariation::DM_FindComponentVariationByDesignator (то же -- по Unique ID). На официальном сайте альтиума по поводу этих методов -- молчание.

Вопрос знатокам -- как вообще получить список методов и классов, доступных альтиуму? Имена-то у них более-менее интуитивно понятные, но вот как их из альтиума выцепить...
Vasen
Цитата(demidrol @ Apr 9 2015, 18:42) *
Какая-то странная документация у альтиума по их скриптингу. К примеру, в examples они вовсю используют IProjectVariation::DM_FindComponentVariationByDesignator (то же -- по Unique ID). На официальном сайте альтиума по поводу этих методов -- молчание.

Вопрос знатокам -- как вообще получить список методов и классов, доступных альтиуму? Имена-то у них более-менее интуитивно понятные, но вот как их из альтиума выцепить...

Сочувствую. Вот так и происходит разработка скриптов для Альтиума.
По PCB:
http://helpusa.altium.com/display/SCRT/Tec...rence+-+PCB+API
http://techdocs.altium.com/display/SCRT/PC...aces#IPCB_Board
http://techdocs.altium.com/display/ADRR/PCB+Processes
http://techdocs.altium.com/display/SCRT/PC...engthConstraint rule
http://techdocs.altium.com/display/SCRT/PC...Types#TRuleKind
По SCH:
http://helpusa.altium.com/display/SCRT/Tec...-+Schematic+API

Запускаете скрипт, останавливаетесь на точке останова и по shift+space смотрите список доступных методов и свойств класса. Другого способа окромя ... документации я не нашел ).
Какой вопрос интересует, если смогу помогу.
demidrol
спасибо, но документацию я более-менее смотрел, там описаны далеко не все методы.

не то, чтобы я особо что-то разрабатывал -- просто иногда до белого каления доводят особенности альтиума. Конкретно в том случае я писал скрипт для генерации pick and place файла на основе данных о варианте печатной плате. Встроенная альтиумовская утилита по необъяснимым причинам выкидывала из pick and place не те элементы.
peshkoff
Даа. Ничего не дают. Приходится содержимое после точки изучать sm.gif)

Вот. 2 года исследования и я научился выключать сетку!!!
Код
    PCBBoard.LayerIsDisplayed[79] := False;
    PCBBoard.LayerIsDisplayed[80] := False;


а тот, кто придумал такую работу с сеткой в альтиуме, должен разбежаться, стукнуться об стену и сдохнуууууууууууууууууууууууууть!!!!!!!!!!!!!!!!!

в догонку:
Кто-нибудь знает, где получить таблицу с номерами слоев и соответствующие им имена?
Trashy_2
Цитата(peshkoff @ Apr 24 2015, 16:43) *
Кто-нибудь знает, где получить таблицу с номерами слоев и соответствующие им имена?


Тут нету? C:\Program Files (x86)\Altium Designer Summer 09\Examples\Scripts\Delphiscript Scripts\Pcb\PCB Layers
peshkoff
Цитата(Trashy_2 @ Apr 27 2015, 10:07) *
Тут нету? C:\Program Files (x86)\Altium Designer Summer 09\Examples\Scripts\Delphiscript Scripts\Pcb\PCB Layers


примеры там только. ладно, думаю можно программно вытащить ее в текст.
Trashy_2
Цитата(peshkoff @ Apr 27 2015, 12:06) *
примеры там только. ладно, думаю можно программно вытащить ее в текст.

Так LayerInfo.pas :
Код
Str := 'Layer, Name, Material, Cu Thickness,  Dielectric Material, type, constant, height ' + #13#10;

    Layer := MinLayer;
    Repeat
       Str := Str + GetLayerInfo(BoardHandle, Layer) + #13#10;
    Until Layer = eNoLayer;
peshkoff
Раз уж тема обозвана глобально, то продолжу.
Задача:

Можно ли передать параметры для выполнения команды из кнопки?
Т.е. я вытащил кнопку для запуска скрипта. В ней записано:
Process: "ScriptingSystem:RunScript"
Parameters: "ProjectName=D:\Work\Altium Designer\Scripts\EditPCBObject v1.0\EditPCBObject.PrjScr|ProcName=EditPCBObject.pas>SetNetName"

Так вот. я хочу, узнать, можно ли ввести еще какой-нибудь параметр, чтобы он мог считаться при запуске скрипта?

Сперва я хотел сделать процедуру с запуском с переменными данными:
Код
procedure MyProc (S: String);


Но процедура с таким названием не попадает в список DXP\Run Script
Vasen
Цитата(peshkoff @ Apr 28 2015, 10:38) *
Раз уж тема обозвана глобально, то продолжу.
Задача:

Можно ли передать параметры для выполнения команды из кнопки?
Т.е. я вытащил кнопку для запуска скрипта. В ней записано:
Process: "ScriptingSystem:RunScript"
Parameters: "ProjectName=D:\Work\Altium Designer\Scripts\EditPCBObject v1.0\EditPCBObject.PrjScr|ProcName=EditPCBObject.pas>SetNetName"

Так вот. я хочу, узнать, можно ли ввести еще какой-нибудь параметр, чтобы он мог считаться при запуске скрипта?

Сперва я хотел сделать процедуру с запуском с переменными данными:
Код
procedure MyProc (S: String);


Но процедура с таким названием не попадает в список DXP\Run Script


Может поискать в это направлении по IProcess...
http://techdocs.altium.com/display/SCRT/Sy...her%20Interface
peshkoff
Цитата(Vasen @ Apr 28 2015, 14:59) *
Может поискать в это направлении по IProcess...
http://techdocs.altium.com/display/SCRT/Sy...her%20Interface


Что то всю голову переломал..

Какому серверу принадлежит IProcessLauncherInfo?
Как его определить?

Я объявил:

Код
ProcLaunch : IProcessLauncherInfo;
ff : String;


Затем пытаюсь получить

Код
ff := ProcLaunch.Caption


Необъявленная переменная.
Видно , что пропустил что-то типа

ProcLaunch := XXXServer.GetCurrentXXXX...

Решил пока другим способом, через AddStringParameter из кнопки и GetStringParametr в скрипте.
Работает, но тогда длинный текст в кнопке получается....
peshkoff
удалось чуть подобраться, но опять я в тупике:

Код
var
    ProcLaunch  : IProcessLauncherInfo;
    st1 : String;

begin
   ProcLaunch := Client.GUIManager.GetProcessLauncherInfoByID('RunScript');
   st1 := ProcLaunch.Caption;
end;


вроде работает. но.
Оказывается, GetProcessLauncherInfoByID смотрит не текущий скрипт, а читает DXP.RCS.
Находит в нем первую строку
"PL RunScript Command='ScriptingSystem:RunScript'...."

и из нее получает все параметры sm.gif
в итоге, st1 = скрипту, который я создал самым первым, после установки альтиума sm.gif он уже давно переименован и удален
блин. нафиг это надо?? Роем дальше
Danya89
А у меня возник вопрос тоже по написанию скриптов в Altium. Мне необходимо отобразить зеркально компонент взятый из библиотеки. Если я устанавливаю Component.IsMirrored:=true; то в свойствах устанавливается галочка Mirrored, но компонент не зеркалируется. Судя по всему необходимо использовать функцию component.Mirror(), но мне непонятен входной параметр данной процедуры Mirror(const Axis: IDispatch). Подскажите, пожалуйста, что это за параметр, как описать эту ось.
peshkoff
Цитата(Danya89 @ Oct 5 2015, 15:13) *
А у меня возник вопрос тоже по написанию скриптов в Altium. Мне необходимо отобразить зеркально компонент взятый из библиотеки. Если я устанавливаю Component.IsMirrored:=true; то в свойствах устанавливается галочка Mirrored, но компонент не зеркалируется. Судя по всему необходимо использовать функцию component.Mirror(), но мне непонятен входной параметр данной процедуры Mirror(const Axis: IDispatch). Подскажите, пожалуйста, что это за параметр, как описать эту ось.


Видимо нужно указать ось для зеркального отображения X или Y. Правда, нужно разобраться в каком виде.
Может и первый вариант пойдет, возможно там необходимо что-то типа Update..

Еще есть функция Flip. Пошерстите в этом напрвлении
Danya89
Цитата(peshkoff @ Oct 6 2015, 11:29) *
Видимо нужно указать ось для зеркального отображения X или Y. Правда, нужно разобраться в каком виде.
Может и первый вариант пойдет, возможно там необходимо что-то типа Update..

Еще есть функция Flip. Пошерстите в этом напрвлении



Благодарю, буду разбираться)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.