Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 25624
Рейтинг: 2082
#76: 2013-02-17 18:27:33 ЛС | профиль | цитата
Проверил HubEx, сравнил со штатной разводкой, ниче кардинального не увидел. Нужна схема недовольства, иначе -- это бла-бла-бла
карма: 19

0
Разработчик
Ответов: 25624
Рейтинг: 2082
#77: 2013-02-19 17:10:51 ЛС | профиль | цитата
Galkov, как отключить обход вокруг InfoTip
Или как его вообще убрать его из списка элементов Может как-то предусмотреть список исключений
карма: 19

0
Ответов: 9902
Рейтинг: 351
#78: 2013-02-22 04:49:50 ЛС | профиль | цитата
В командировке был. Отосплюсь, посмотрю все внимательней.

nesco писал(а):
Galkov, как отключить обход вокруг InfoTip

Так он же и отключен. Вообще.
НО -- если он прозрачный. Мне показалось именно это логичным.

Сделано примерно так:
function trace(cgt:PCodeGenTools; sdk:id_sdk; pnt:id_point; pos:PPos; add_proc:TAddProc; getPPos:TgetPPos):boolean;
...............
procedure InitMatrix; // Заполняем матрицу объектами схемы
.............
for i := 0 to sdkGetCount(sdk)-1 do begin
e := sdkGetElement(sdk, i);
elGetPos (e, x, y);
elGetSize(e, w, h);
name := elGetClassName(e);
Ex := (lstrcmp(name,'HubEx')=0)or(lstrcmp(name,'GetDataEx')=0);
if Ex then begin //Аномалия: Ex-ы обозначаем только точкой Body+Pin
.......
end else if (elGetFlag(e)and IS_BACK)<>0 then begin // Аномалия EditMulti[Ex]
fillRect(Idx(x),Idy(y), Idx(x+w), Idy(y+h),[Body])
end else if (lstrcmp(name,'InfoTip')=0)and(propToByte(GetPROP('Transparent',e))=0) then
// Ничего не делаем
else // Зарисовываем тело элемента как прямоугольник
fillBody(Idx(x),Idy(y+3), Idx(x+w), Idy(y+h-3));
.......
.......
end;
...............

Редактировалось 1 раз(а), последний 2016-10-22 09:00:15
карма: 9

0
Разработчик
Ответов: 25624
Рейтинг: 2082
#79: 2013-02-22 08:58:55 ЛС | профиль | цитата
Galkov писал(а):
НО -- если он прозрачный

Странно, у меня InfoTip обходится по контуру, убираешь его -- разводит нормально. InfoTip у меня обрамляет схему, а не находится внутри нее
карма: 19

0
Гость
Ответов: 17029
Рейтинг: 0
#80: 2013-02-22 09:17:13 правка | ЛС | профиль | цитата


Редактировалось 8 раз(а), последний 2020-03-02 06:10:32
карма: 0

0
Разработчик
Ответов: 25624
Рейтинг: 2082
#81: 2013-02-22 10:41:31 ЛС | профиль | цитата
37.45.83.219 писал(а):
может вы старую версию под себя подпиливали

Да нет, вроде. Ладно, проверю. Да я особенно не подпиливаю ничего, кроме массива штрафов. Его неплохо бы вынести за пределы кода
------------ Дoбавленo в 10.25:
Гы... гы... гы. Точно, старая версия затесалась. Как новая прошла мимо меня, ума не приложу
------------ Дoбавленo в 10.31:
Сделал вот так

...
Tstate = (trace0, trace1, trace2, trace3, Body, Pin, Hwire, Vwire);
Tstates = set of Tstate; // содержимое матрицы объектов/состояний трассировки
//Tdirs =(dirR{Right}, dirD{Down}, dirL{Left}, dirU{Up});

{$INCLUDE constant.inc}

var
// Матрица объектов на схеме (обновляется перед каждой трассировкой)
...


И скопировал все константы в файл constant.inc. Теперь можно редактировать основной модуль, не трогая константы. У каждого constant.inc может быть свой.

Galkov, мне кажется, что это самый лучший вариант, чтобы не потерять свои настройки массива. А главный юнит можно будет допиливать дальше

карма: 19

0
Ответов: 9902
Рейтинг: 351
#82: 2013-03-02 11:51:26 ЛС | профиль | цитата
Ну вот, вроде и все...

Стадию опытных испытаний, можно считать законченной. Пожалуй
Внес некоторые изменения, касающиеся эффективности поиска, обработки аварийных ситуаций с нехваткой памяти, и т.п..
Хотя последнее проверять практически... напряжно очень.
Изменения в "прайс-листе" - не очень значительные.

В общем, разницу мало кто заметит.

nesco, ты спрашивал в чем разница между Debug и Release
Оказывается - в сотни раз. Просто, если боевое быстродействие типа 100us, то -- 30ms ты не очень-то и заметишь.
В корень архива я выложил усугубленный пример нашего "шифрованного" коллеги.
Вот там -- разницу очень даже почувствуешь.
В примере Dummy.sha надо просто взять, да и удалить верхний LineBreak. И начнутся великие труды
Среда удаляет (я не знаю почему) только один, и просит провести линию. В условиях, когда "перед носом" целевой точки расположен старый, со своим пином.
Алгоритм уж и пыжится, уж и пыжытся... типа: а вдруг все таки мимо можно проскочить.
Можно увидеть артефакт глазами: стартовый отскок от Message как раз такой, как будто провод идет под элементом (под которым мы очень не приветствуем развороты). Второй щелчок - и все штатно.
Еще смешнее то, что среда при закрытии, этот LineBreak пытается удалить, заказывая новую трассировку. Не знаю почему... ни для кого не заказывает, а тут - на тебе. ((с этим было и связано падение среды именно при закрытии в начале нашей беседы))

Вынес константы в отдельный файл.
Dll-ка в корне архива - Release-версия с хронометражом. Хронометраж для Debug-версии мне показался не интересен.

Мораль: Аттач стартового поста обновлен

карма: 9

8
Голосовали:ser_davkin, iarspider, foksov, filyaxxxcom, Minkovsky, tig-rrr, nesco, Ex_
Ответов: 757
Рейтинг: 111
#83: 2013-03-07 14:05:25 ЛС | профиль | цитата
Посмотрите ниже пример. Почему "Умный обход" проходит по длинному пути (синяя связь справа)
code_30519.txt
карма: 1

0
файлы: 1code_30519.txt [615B] [192]
Разработчик
Ответов: 25624
Рейтинг: 2082
#84: 2013-03-07 14:21:10 ЛС | профиль | цитата
miver писал(а):
Почему "Умный обход" проходит по длинному пути

Два поворота и проход через синюю линию стоит дешевле, чем куча поворотов на свободном месте, или проход под элементом с теме же двумя поворотами
карма: 19

1
Голосовали:miver
Ответов: 9902
Рейтинг: 351
#85: 2013-03-07 14:47:21 ЛС | профиль | цитата
miver писал(а):
Почему "Умный обход" проходит по длинному пути

Правильно nesco сказал
Мы "почти запрещаем" повороты под элементом.
Отодвинь на щелчок LineBreak и будет все нормально

Мораль: если Вы пытаетесь сгрудить все в кучку, да еще и перекрестить там все линии - это не Ваш инструмент.

НО
Вы можете выработать стиль рисования, в котором ручная правка практически не нужна.
Так мне пока кажется.

Более того, мне кажется, что такой стиль будет значительно более читаем другими
карма: 9

1
Голосовали:miver
Разработчик
Ответов: 25624
Рейтинг: 2082
#86: 2013-03-07 16:02:53 ЛС | профиль | цитата
Кому как, но мне положительно понравился "Умный подход" в данной реализации. Я немного изменил константы для себя, и мне стало все нравится, ну, почти все. Если не получается нормальный развод, то достаточно просто подвинтуь немного элементы
карма: 19

0
Ответов: 9902
Рейтинг: 351
#87: 2013-03-08 10:03:11 ЛС | профиль | цитата
Дык показывай.
Может и мне такое надо, а я этого не знаю.

Если заметили, в архиве появился Exel-файл для констант. Управлять 64-мя константами трудно таки... Легко порушить некоторую внутреннюю логику. Типа: есть штраф за поход под элементом, есть за пересечение провода -- было бы логичнее, чтобы штраф за пересечение провода под элементом был суумой этих двух.
Короче, 10-12-ю константами управлять легче, чем 64-мя... Или 80-тью
карма: 9

0
Разработчик
Ответов: 25624
Рейтинг: 2082
#88: 2013-03-08 12:26:43 ЛС | профиль | цитата
Galkov писал(а):
а я этого не знаю

Шутишь У меня до единиц не оптимизировано, так -- первое приближение. Но я освободил свободное поле.

Вот мои константы -- constant.zip
карма: 19

0
файлы: 1constant.zip [500B] [202]
Гость
Ответов: 17029
Рейтинг: 0
#89: 2013-03-08 12:39:44 правка | ЛС | профиль | цитата


Редактировалось 8 раз(а), последний 2020-03-02 06:10:32
карма: 0

0
Разработчик
Ответов: 25624
Рейтинг: 2082
#90: 2013-03-08 12:48:02 ЛС | профиль | цитата
net-2-40-119-225.cust.dsl писал(а):
Как по мне то вторая схемка более читаемая ежели первая.

А мне моя разводка больше нравится

Add(DoData,14687818,441,154)
{
}
Add(Hub,12195178,399,161)
{
link(onEvent1,772443:doEvent3,[(424,167)(424,195)(480,195)(480,181)])
link(onEvent2,772443:doEvent1,[(455,174)(455,167)])
}
Add(Hub,772443,497,161)
{
InCount=3
OutCount=1
}


Если есть свободное место, то нафига лезть под компонент ИМХО.
карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)