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

Изменения-длясебяшки

Небольшие простые изменения, сделавшие мою работу в 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. Для круглых плат - самое то.

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 - плата с покрытием и "зелёнкой"!

Во их я и подправил (в оригинале - темноваты).

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) , а переименовать - нельзя.

Использую эти слои для скрайбирования и фрезеровки.

Нашёл, где имена переопределяются. Теперь у них вполне однозначные названия и при выгрузке гербера - вполне конкретное имя файла получается. :)

 

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;

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


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

Возникла хотелка, может быть полезная.

В схематик - редакторе символов принимать во внимание, где именно в пределах пина находилась мышь при вызове диалога редактирования пина. И выставлять selection исходя из этого. Типа того

post-29509-1383051427_thumb.png

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


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

Возникла хотелка, может быть полезная.

В схематик - редакторе символов принимать во внимание, где именно в пределах пина находилась мышь при вызове диалога редактирования пина. И выставлять selection исходя из этого...

Вы мне льстите :rolleyes: Но всё равно приятно. :biggrin:

Мысль интересная. Надо будет подумать - не выйдет ли она за рамки длясебяшек (минимальные изменения кода). На первый взгляд шансов у неё не много. :-)

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


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

Причёсывание сеанса Specctra из Topor'a.

Топор (по крайней мере v.5) записывает сеанс чуть-чуть не по спецификации ("MM" вместо "mm" и "Net" вместо "net").

Привязка к версиям 4222/4415.

 

specctra_import.cpp:94

    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);
       }
   }
//***************

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


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

Меня посетила одна идея. Может при включении полярных координат, в свойствах элементов (футпринтов, пинов и т.д.) показывать (и давать возможность редактирования!) тоже полярные координаты? Было бы очень удобно рисовать круглые футпринты и подобные вещи. (А то опять пришлось высчитывать координаты выводов через синусы и косинусы).

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


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

Идея, наверное, интересная. И я не против, если Вы выложите здесь её реализацию ;-)

 

А я, к сожалению, не великий программист. Да и времени на совершенствование нет :-(

Попробуйте написать в "Допиливание".

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


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

В общем, теперь так:

post-51492-1397101374_thumb.jpg

Очень неудобно прокручивать такой список, и там ничего ведь не посмотришь по УГО - я что, должен помнить всю библиотеку и все её наименования? Где конкретно в исходниках и чем отличается я пока не смотрел да и вряд ли разберусь с ходу.

Изменено пользователем Ruslan.B

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


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

В общем, теперь так:

post-51492-1397101374_thumb.jpg

Очень неудобно прокручивать такой список, и там ничего ведь не посмотришь по УГО - я что, должен помнить всю библиотеку и все её наименования? Где конкретно в исходниках и чем отличается я пока не смотрел да и вряд ли разберусь с ходу.

В таком случае, повторяюсь: если изменения не очень объёмные - поделитесь, пожалуйста.

А там можно будет подумать о просьбе включить их в гостовскую ветку.

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


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

В таком случае, повторяюсь: если изменения не очень объёмные - поделитесь, пожалуйста.

А там можно будет подумать о просьбе включить их в гостовскую ветку.

 

Такую штукенцию с поиском я уже пилил, всё работает, ссылка на репку здесь(может понравится кому :05: ):

http://electronix.ru/forum/index.php?showt...p;#entry1262515

 

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


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

Просьба автору темы - добавьте сюда это, а то по разным местам лежит. Я применил, большое спасибо. Самому было некогда копать. Считаю эти изменения необходимыми по-умолчанию в ГОСТ-ветке.

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

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


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

Cборка 4334-GOST (и около). В редакторах схем и плат исчез пункт меню "Открыть ...". Вернул так:

eeschema/menubar.cpp

@@ -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

@@ -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;

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

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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