Narside 0 28 ноября, 2018 Опубликовано 28 ноября, 2018 (изменено) · Жалоба Добрый день. Прошу помощи в написании скрипта (очень поможет при отладке). Идея в том, чтобы импортировать значения напряжений из файла и размещения их в виде комментария (текстового блока и тд) возле соответствующего 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 Ниже пример как это организовано в Оркаде. Изменено 28 ноября, 2018 пользователем Narside Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 23 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба Не совсем понятно, вы просите помочь написать или за вас написать? Если помочь, то покажите, что вы написали, попробуем разобраться, что не работает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Narside 0 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба Прошу написать ту часть, которая отвечает за чтение значений из файла и назначения их в качестве текстового комментария. Поскольку в Delphi не силен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 23 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба а в каких языках вы сильны? Давайте тогда ту часть, что у вас есть. ну или хотя бы алгоритм работы. боюсь вы вряд ли представляете масштаб работы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Narside 0 28 ноября, 2018 Опубликовано 28 ноября, 2018 (изменено) · Жалоба Пока нет ничего, кроме запрограммированной кнопки Close :) В институте был visual basic и pascal Алгоритм вижу следующий: нажав на кнопку import, выбираем файл, содержащий значения в вышеописанном формате. Далее скрипт сравнивает имя wire net со всеми текстовыми блоками в скобках ( V(n008)=15.98437461 ). Если имя wire net совпадает с текстом в скобках, тогда ставится комментарий рядом с net wire (пусть пока в любом месте от wire net), соответствующий значению после знака "=" до следующего пробела Изменено 28 ноября, 2018 пользователем Narside Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 23 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба Так паскаль это и есть дельфи. Проблем вообще не должно быть. n008 - это имя цепи? Но альтиум по другому цепи именует. Или они у вас все так переименованы вручную? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Narside 0 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба В данном конкретном случае n008 это ручное обозначение цепи в Альтиуме Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 23 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба А каким образом она так названа? Стоит NetLabel? В альтиуме нельзя переименовать цепь, у нее нет такого свойства Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Narside 0 28 ноября, 2018 Опубликовано 28 ноября, 2018 (изменено) · Жалоба да, совершенно верно. Но скрипт я планировал использовать со стандартными именами цепей, которые делает АД (но это уже частный случай) Изменено 28 ноября, 2018 пользователем Narside Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 23 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба Значит надо задачу разбить на подзадачи. 1. Открыть файл. Для этого на вашу форму с кнопочкой "Close" добавить элемент управления TOpenDialog. И кнопку, например, "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 с вашей задачей разбирается на раз-два. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Narside 0 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба Спасибо Вам большое за помощь! буду изучать, теперь ясность появилась Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 23 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба 20 minutes ago, Narside said: Спасибо Вам большое за помощь! буду изучать, теперь ясность появилась Пожулуйста! Только с вас результат! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Narside 0 6 декабря, 2018 Опубликовано 6 декабря, 2018 (изменено) · Жалоба Промежуточный результат на картинке. Осталось только переменные сделать комментариями над Wire в Schematic edtor (это пока не умею) Изменено 6 декабря, 2018 пользователем Narside Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 23 6 декабря, 2018 Опубликовано 6 декабря, 2018 · Жалоба Супер! Картинка есть, отладочные окна есть! Дело за малым. Вариант с наименьшим сопротивлением: - Качаем TR0139 Schematic API Reference.PDF, читаем определение ISch_Label - Качаем примеры скриптов с альтиума http://valhalla.altium.com/AD10-Examples/Examples/Scripts.zip - Смотрим там папку SCH , Можно для примера взять скрипт CreateSchObjects.pas и изучаем. У вас уже расставлены NetLabel, нужно определиться куда ставить текст. Думаю самый простой вариант поставить прямо под ним на одну клетку ниже. Соотв. порядок такой: Ищем NetLabel, делаем ему соответствие, узнаем напряжение, добавляем Label под NetLabel. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
peshkoff 23 6 декабря, 2018 Опубликовано 6 декабря, 2018 · Жалоба порядок поиска ообъектов альтиум подразумевает такой: Вступление // 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); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться