Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Изменения-длясебяшки
Форум разработчиков электроники ELECTRONIX.ru > Печатные платы (PCB) > Разрабатываем ПП в САПР - PCB development > KiCAD
alex9
Небольшие простые изменения, сделавшие мою работу в kicad'е несколько комфортнее.
(это не исправление багов).

Привожу на примере тестовой сборки 4378.

Увеличил размер сединения проводников в eeschema до 1,5 мм. Теперь при печати больших форматов на А4 они нормально видны.
Код
sch_junction.cpp:42
- int SCH_JUNCTION::m_symbolSize = 40;    // Default diameter of the junction symbol
+ int SCH_JUNCTION::m_symbolSize = 60;    // Default diameter of the junction symbol

Ввёл дополнительные градации углов поворота в pcbnew. Для круглых плат - самое то.
CODE

dialog_general_options_BoardEditor_base.cpp:77
- wxString m_RotationAngleChoices[] = { _("45"), _("90") };
+ wxString m_RotationAngleChoices[] = { _("5"), _("10"),_("15"),_("30"),_("45"),_("60"), _("90") };

block.cpp:659
- int rotAngle = 900; // rotation angle in 0.1 deg.
+ int rotAngle = g_RotationAngle; // rotation angle in 0.1 deg.

dialog_general_options.cpp:70
switch( g_RotationAngle )
{
+ // wxString m_RotationAngleChoices[] = { _("5"), _("10"), _("15"), _("30"), _("45"), _("60"), _("90") };
+ // 0 1 2 3 4 5 6
+ case 50:
+ m_RotationAngle->SetSelection( 0 );
+ break;
+ case 100:
+ m_RotationAngle->SetSelection( 1 );
+ break;
+ case 150:
+ m_RotationAngle->SetSelection( 2 );
+ break;
+ case 300:
+ m_RotationAngle->SetSelection( 3 );
+ break;
case 450:
- m_RotationAngle->SetSelection( 0 );
+ m_RotationAngle->SetSelection( 4 );
break;
+ case 600:
+ m_RotationAngle->SetSelection( 5 );
+ break;

default:
- m_RotationAngle->SetSelection( 1 );
+ m_RotationAngle->SetSelection( 6 );
}

board_undo_redo.cpp:100
+ extern int g_RotationAngle;

board_undo_redo.cpp:572
case UR_ROTATED:
- item->Rotate( aList->m_TransformPoint, aRedoCommand ? 900 : -900 );
+ item->Rotate( aList->m_TransformPoint, aRedoCommand ? g_RotationAngle : -g_RotationAngle );
break;

case UR_ROTATED_CLOCKWISE:
- item->Rotate( aList->m_TransformPoint, aRedoCommand ? -900 : 900 );
+ item->Rotate( aList->m_TransformPoint, aRedoCommand ? -g_RotationAngle : g_RotationAngle );
break;

Мой "ответ Чемберлену". Французы лишили возможности выбора "мм" при изменении смещения образа в 3D-настройках модуля (в pcbnew).
Исправил пока так же безапелляционно.
Код
3d_aux.cpp:73
          /* adjust offset position (offset is given in UNIT 3D (0.1 inch) */
- #define SCALE_3D_CONV ((IU_PER_MILS * 1000) / UNITS3D_TO_UNITSPCB)
+ #define SCALE_3D_CONV (((IU_PER_MILS * 1000) / UNITS3D_TO_UNITSPCB) / 25.4)

И немного для красоты )
В последних версиях 3D-viewer'а появился текстолит в печатных платах! И, внимание, Realistic mode - плата с покрытием и "зелёнкой"!
Во их я и подправил (в оригинале - темноваты).
CODE

3d_draw.cpp:149
// Helper function: initialize the copper color to draw the board
// in realistic mode.
static inline void SetGLCopperColor()
{
// Generates a golden yellow color, near board "copper" color
- const double lum = 0.7/255.0;
+ const double lum = 0.9/255.0;
- glColor4f( 255.0*lum, 223.0*lum, 0.0*lum, 1.0 );
+ glColor4f( 255.0*lum, 225.0*lum, 20.0*lum, 1.0 );
}

// Helper function: initialize the color to draw the epoxy layers
// ( body board and solder mask layers) in realistic mode.
static inline void SetGLEpoxyColor( double aTransparency = 1.0 )
{
// Generates an epoxy color, near board color
- const double lum = 0.2/255.0;
+ const double lum = 0.45/255.0;
- glColor4f( 100.0*lum, 255.0*lum, 180.0*lum, aTransparency );
+ glColor4f( 10.0*lum, 255.0*lum, 150.0*lum, aTransparency );
}


Может у кого-нибудь тоже есть чем поделиться?
alex9
Достало бороться с абстрактностью названий "пользовательских" вспомогательных слоёв.
Звучит как издёвка: "пользовательские", названия ни о чём (Eco1.User и Eco2.User) , а переименовать - нельзя.
Использую эти слои для скрайбирования и фрезеровки.
Нашёл, где имена переопределяются. Теперь у них вполне однозначные названия и при выгрузке гербера - вполне конкретное имя файла получается. sm.gif

Код
class_board.cpp:418
-     case ECO1_N:                txt = wxT( "Eco1.User" );            break;
+     case ECO1_N:                txt = wxT( "Mill" );            break;
-     case ECO2_N:                txt = wxT( "Eco2.User" );             break;
+     case ECO2_N:                txt = wxT( "Cut" );             break;
_Pasha
Возникла хотелка, может быть полезная.
В схематик - редакторе символов принимать во внимание, где именно в пределах пина находилась мышь при вызове диалога редактирования пина. И выставлять selection исходя из этого. Типа того
Нажмите для просмотра прикрепленного файла
alex9
Цитата(_Pasha @ Oct 29 2013, 16:58) *
Возникла хотелка, может быть полезная.
В схематик - редакторе символов принимать во внимание, где именно в пределах пина находилась мышь при вызове диалога редактирования пина. И выставлять selection исходя из этого...

Вы мне льстите rolleyes.gif Но всё равно приятно. biggrin.gif
Мысль интересная. Надо будет подумать - не выйдет ли она за рамки длясебяшек (минимальные изменения кода). На первый взгляд шансов у неё не много. :-)
alex9
Причёсывание сеанса Specctra из Topor'a.
Топор (по крайней мере v.5) записывает сеанс чуть-чуть не по спецификации ("MM" вместо "mm" и "Net" вместо "net").
Привязка к версиям 4222/4415.

specctra_import.cpp:94
CODE
if( fullFileName == wxEmptyString )
return;

//***************
wxTextFile file;
wxString T_FileName, T_String;
FILE* new_fp;

T_FileName=fullFileName+wxT("tmp") ;

if (file.Open(fullFileName))
{
size_t i;
for (i = 0; i < file.GetLineCount(); i++)
{
file[i].Replace(wxT("(resolution MM"),wxT("(resolution mm"));
file[i].Replace(wxT("(Net"),wxT("(net"));
T_String+=file[i]+wxT("\n");
}
file.Close();
wxRenameFile(fullFileName, T_FileName);
new_fp = wxFopen(fullFileName, wxT("wt"));
if (new_fp)
{
fprintf(new_fp,T_String.mb_str());
fclose(new_fp);
}
}
//***************
break
Меня посетила одна идея. Может при включении полярных координат, в свойствах элементов (футпринтов, пинов и т.д.) показывать (и давать возможность редактирования!) тоже полярные координаты? Было бы очень удобно рисовать круглые футпринты и подобные вещи. (А то опять пришлось высчитывать координаты выводов через синусы и косинусы).
alex9
Идея, наверное, интересная. И я не против, если Вы выложите здесь её реализацию ;-)

А я, к сожалению, не великий программист. Да и времени на совершенствование нет :-(
Попробуйте написать в "Допиливание".
Ruslan.B
В общем, теперь так:
Нажмите для просмотра прикрепленного файла
Очень неудобно прокручивать такой список, и там ничего ведь не посмотришь по УГО - я что, должен помнить всю библиотеку и все её наименования? Где конкретно в исходниках и чем отличается я пока не смотрел да и вряд ли разберусь с ходу.
alex9
Цитата(Ruslan.B @ Apr 10 2014, 06:43) *
В общем, теперь так:
Нажмите для просмотра прикрепленного файла
Очень неудобно прокручивать такой список, и там ничего ведь не посмотришь по УГО - я что, должен помнить всю библиотеку и все её наименования? Где конкретно в исходниках и чем отличается я пока не смотрел да и вряд ли разберусь с ходу.

В таком случае, повторяюсь: если изменения не очень объёмные - поделитесь, пожалуйста.
А там можно будет подумать о просьбе включить их в гостовскую ветку.
xterro
Цитата(alex9 @ Apr 10 2014, 09:11) *
В таком случае, повторяюсь: если изменения не очень объёмные - поделитесь, пожалуйста.
А там можно будет подумать о просьбе включить их в гостовскую ветку.


Такую штукенцию с поиском я уже пилил, всё работает, ссылка на репку здесь(может понравится кому 05.gif ):
http://electronix.ru/forum/index.php?showt...p;#entry1262515
Npa
Просьба автору темы - добавьте сюда это, а то по разным местам лежит. Я применил, большое спасибо. Самому было некогда копать. Считаю эти изменения необходимыми по-умолчанию в ГОСТ-ветке.
alex9
Cборка 4334-GOST (и около). В редакторах схем и плат исчез пункт меню "Открыть ...". Вернул так:
eeschema/menubar.cpp
CODE
@@ -64,8 +64,8 @@
// Menu File:
wxMenu* fileMenu = new wxMenu;

- if( Kiface().IsSingle() ) // not when under a project mgr
- {
+ // if( Kiface().IsSingle() ) // not when under a project mgr
+ //{
AddMenuItem( fileMenu,
ID_NEW_PROJECT,
_( "&New Schematic Project" ),
@@ -77,7 +77,7 @@
ID_LOAD_PROJECT, text,
_( "Open an existing schematic hierarchy" ),
KiBitmap( open_document_xpm ) );
- }
+ //}

// @todo: static probably not OK in multiple open projects.
// Open Recent submenu

pcbnew/menubar_pcbframe.cpp
CODE
@@ -62,8 +62,8 @@
// Create File Menu
wxMenu* filesMenu = new wxMenu;

- if( Kiface().IsSingle() ) // not when under a project mgr
- {
+ // if( Kiface().IsSingle() ) // not when under a project mgr
+ //{
AddMenuItem( filesMenu, ID_NEW_BOARD,
_( "&New" ),
_( "Clear current board and initialize a new one" ),
@@ -73,7 +73,7 @@
AddMenuItem( filesMenu, ID_LOAD_FILE, text,
_( "Delete current board and load new board" ),
KiBitmap( open_brd_file_xpm ) );
- }
+ //}

// Load Recent submenu
static wxMenu* openRecentMenu;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.