Перейти к содержанию
    

Скрипт на добавление информации к wire net в схеме

Добрый день. Прошу помощи в написании скрипта (очень поможет при отладке). Идея в том, чтобы импортировать значения напряжений из файла и размещения их в виде комментария (текстового блока и тд) возле соответствующего wire в схеме. Ниже пример файла, содержащего значения и названия узлов в скобках.

.nodeset V(n002)=14.59894341 V(out)=0.003793630424 V(n013)=0.6770139189 V(n017)=0.003793630424
+ V(n019)=-25.03608544 V(n008)=15.98437461 V(+vs)=25 V(d1:3)=16.84 V(n016)=-0.005649090107
+ V(in)=0 V(d2:3)=-8.16 V(d3:3)=-8.16 V(n012)=3.907166211 V(n007)=15.98437461 V(n004)=19.93241994
+ V(n005)=4.642203728 V(n009)=0.3860467752 V(n006)=4.642203728 V(n010)=0.3859918457
+ V(n018)=-20.35945837 V(n014)=0 V(-vs)=-25 V(n015)=0.003793630424 V(n011)=0.003849349371
+ V(n022)=-20.35945837 V(n021)=-24.61677347 V(n023)=-20.35945837 V(n024)=-24.61654835
+ V(n001)=4.642203728 V(n003)=0.6770139189 V(n020)=-24.88061479

Ниже пример как это организовано в Оркаде.

image.png.53681335081b4a2f6da68c1f629c8338.png

Изменено пользователем Narside

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не совсем понятно, вы просите помочь написать или за вас написать?

Если помочь, то покажите, что вы написали, попробуем разобраться, что не работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошу написать ту часть, которая отвечает за чтение значений из файла и назначения их в качестве текстового комментария. Поскольку в Delphi не силен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а в каких языках вы сильны? Давайте тогда ту часть, что у вас есть.

ну или хотя бы алгоритм работы.

боюсь вы вряд ли представляете масштаб работы.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока нет ничего, кроме запрограммированной кнопки Close :) В институте был visual basic и pascal Алгоритм вижу следующий: нажав на кнопку import, выбираем файл, содержащий значения в вышеописанном формате. Далее скрипт сравнивает имя wire net со всеми текстовыми блоками в скобках ( V(n008)=15.98437461  ). Если имя wire net совпадает с текстом в скобках, тогда ставится комментарий рядом с net wire (пусть пока в любом месте от wire net), соответствующий значению после знака "=" до следующего пробела

Изменено пользователем Narside

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так паскаль это и есть дельфи. Проблем вообще не должно быть.

 

n008 - это имя цепи? Но альтиум по другому цепи именует. Или они у вас все так переименованы вручную?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А каким образом она так названа? Стоит NetLabel?

В альтиуме нельзя переименовать цепь, у нее нет такого свойства

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, совершенно верно. Но скрипт я планировал использовать со стандартными именами цепей, которые делает АД (но это уже частный случай)

image.png.9b91c8cef1954cbf479e9d23cdd256fa.png

Изменено пользователем Narside

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значит надо задачу разбить на подзадачи.

1. Открыть файл. Для этого на вашу форму с кнопочкой "Close" добавить элемент управления TOpenDialog.

image.png.e32c1464a7ff7a215cdd4a26b82bb38f.png

И кнопку, например, "Read".

Прочитать документ по работе с TOpenDialog, например, здесь:

http://www.delphibasics.ru/TOpenDialog.php

Дополнительно изучаем пример

https://github.com/Altium-Designer-addons/scripts-libraries/tree/master/LengthTuningHelper

 

2. Переварить полученный файл. Для этого читаем его построчно и ищем именя цепей, у вас для этого скобки есть, уже легче.

По обработке строк (тут вообще чистый паскаль) читаем, например, здесь:

http://www.delphi-manual.ru/work-with-strings.php

функция Pos с вашей задачей разбирается на раз-два.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 minutes ago, Narside said:

Спасибо Вам большое за помощь! буду изучать, теперь ясность появилась

Пожулуйста! Только с вас результат!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Промежуточный результат на картинке. Осталось только переменные сделать комментариями над Wire в Schematic edtor (это пока не умею)

Снимок4.PNG

Изменено пользователем Narside

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Супер!

Картинка есть, отладочные окна есть! Дело за малым.

 

Вариант с наименьшим сопротивлением: 

- Качаем TR0139 Schematic API Reference.PDF, читаем определение ISch_Label

- Качаем примеры скриптов с альтиума http://valhalla.altium.com/AD10-Examples/Examples/Scripts.zip
- Смотрим там папку SCH , Можно для примера взять скрипт CreateSchObjects.pas и изучаем.

У вас уже расставлены NetLabel, нужно определиться куда ставить текст.

Думаю самый простой вариант поставить прямо под ним на одну клетку ниже.

Соотв. порядок такой: Ищем NetLabel, делаем ему соответствие, узнаем напряжение, добавляем Label под NetLabel.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

порядок поиска ообъектов альтиум подразумевает такой:

Вступление

    // CHeck if schematic server exists or not.
    If SchServer = Nil Then Exit;

    // Obtain the current schematic document interface.
    CurrentSch := SchServer.GetCurrentSchDocument;
    If CurrentSch = Nil Then Exit;

Запускаем т.н. Iterator

    Iterator := CurrentSch.SchIterator_Create;

Говорим ему, что ищем

    Iterator.AddFilter_ObjectSet(MkSet(eNetlabel));

Сперва находим первый попавшийся

MyNetLabel := Iterator.FirstSchObject;

Запускаем цикл

While MyNetLabel <> Nil Do

Begin

Делаем что-то с первым NetLabel (вычисляем, что написано, сопоставляем, ставим Label)

Переходим к следующему, заканчиваем цикл

MyNetLabel := Iterator.NextSchObject;

end;

После не забываем его разломать

CurrentSch.SchIterator_Destroy(Iterator);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...