KiCad PCB EDA Suite
class_module.h
Go to the documentation of this file.
1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
5  * Copyright (C) 1992-2019 KiCad Developers, see AUTHORS.txt for contributors.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, you may find one here:
19  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20  * or you may search the http://www.gnu.org website for the version 2 license,
21  * or you may write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23  */
24 
31 #ifndef MODULE_H_
32 #define MODULE_H_
33 
34 #include <deque>
35 
36 #include <board_item_container.h>
37 #include <class_board_item.h>
38 #include <collectors.h>
39 #include <convert_to_biu.h>
40 #include <layers_id_colors_and_visibility.h> // ALL_LAYERS definition.
41 #include <lib_id.h>
42 #include <list>
43 
44 #include <class_text_mod.h>
45 #include "zones.h"
46 
47 #include <core/iterators.h>
48 
49 #include <functional>
50 
51 class LINE_READER;
52 class EDA_3D_CANVAS;
53 class D_PAD;
54 class BOARD;
55 class MSG_PANEL_ITEM;
56 
57 namespace KIGFX {
58 class VIEW;
59 }
60 
62 {
64  INCLUDE_NPTH = true
65 };
66 
74 {
76  MOD_CMS = 1,
77  MOD_VIRTUAL = 2
79 };
81 
83 {
84  public:
86  // Initialize with sensible values
87  m_Scale { 1, 1, 1 },
88  m_Rotation { 0, 0, 0 },
89  m_Offset { 0, 0, 0 },
90  m_Preview( true )
91  {
92  }
93 
94  struct VECTOR3D
95  {
96  double x, y, z;
97  };
98 
102  wxString m_Filename;
103  bool m_Preview;
104 };
105 
106 DECL_DEQ_FOR_SWIG( PADS, D_PAD* )
107 DECL_DEQ_FOR_SWIG( DRAWINGS, BOARD_ITEM* )
108 DECL_DEQ_FOR_SWIG( MODULES, MODULE* )
109 
111 {
112 public:
113  MODULE( BOARD* parent );
114 
115  MODULE( const MODULE& aModule );
116 
117  ~MODULE();
118 
119  MODULE& operator=( const MODULE& aOther );
120 
121  static inline bool ClassOf( const EDA_ITEM* aItem )
122  {
123  return aItem && PCB_MODULE_T == aItem->Type();
124  }
125 
127  void Add( BOARD_ITEM* aItem, ADD_MODE aMode = ADD_INSERT ) override;
128 
130  void Remove( BOARD_ITEM* aItem ) override;
131 
139  void ClearAllNets();
140 
145  void CalculateBoundingBox();
146 
152  EDA_RECT GetFootprintRect() const;
153 
158  SHAPE_POLY_SET GetBoundingPoly() const;
159 
160  // Virtual function
161  const EDA_RECT GetBoundingBox() const override;
162 
163  const EDA_RECT GetBoundingBox( bool aIncludeInvisibleText ) const;
164 
165  PADS& Pads()
166  {
167  return m_pads;
168  }
169 
170  const PADS& Pads() const
171  {
172  return m_pads;
173  }
174 
175  DRAWINGS& GraphicalItems()
176  {
177  return m_drawings;
178  }
179 
180  const DRAWINGS& GraphicalItems() const
181  {
182  return m_drawings;
183  }
184 
190  bool HasNonSMDPins() const;
191 
192  std::list<MODULE_3D_SETTINGS>& Models() { return m_3D_Drawings; }
193  const std::list<MODULE_3D_SETTINGS>& Models() const { return m_3D_Drawings; }
194 
195  void SetPosition( const wxPoint& aPos ) override;
196 
197  const wxPoint GetPosition() const override { return m_Pos; }
198 
199  void SetOrientation( double newangle );
200 
201  void SetOrientationDegrees( double aOrientation ) { SetOrientation( aOrientation * 10.0 ); }
202  double GetOrientation() const { return m_Orient; }
203  double GetOrientationDegrees() const { return m_Orient / 10.0; }
204  double GetOrientationRadians() const { return m_Orient * M_PI / 1800; }
205 
206  const LIB_ID& GetFPID() const { return m_fpid; }
207  void SetFPID( const LIB_ID& aFPID ) { m_fpid = aFPID; }
208 
209  const wxString& GetDescription() const { return m_Doc; }
210  void SetDescription( const wxString& aDoc ) { m_Doc = aDoc; }
211 
212  const wxString& GetKeywords() const { return m_KeyWord; }
213  void SetKeywords( const wxString& aKeywords ) { m_KeyWord = aKeywords; }
214 
215  const wxString& GetPath() const { return m_Path; }
216  void SetPath( const wxString& aPath ) { m_Path = aPath; }
217 
218  int GetLocalSolderMaskMargin() const { return m_LocalSolderMaskMargin; }
219  void SetLocalSolderMaskMargin( int aMargin ) { m_LocalSolderMaskMargin = aMargin; }
220 
221  int GetLocalClearance() const { return m_LocalClearance; }
222  void SetLocalClearance( int aClearance ) { m_LocalClearance = aClearance; }
223 
224  int GetLocalSolderPasteMargin() const { return m_LocalSolderPasteMargin; }
225  void SetLocalSolderPasteMargin( int aMargin ) { m_LocalSolderPasteMargin = aMargin; }
226 
227  double GetLocalSolderPasteMarginRatio() const { return m_LocalSolderPasteMarginRatio; }
228  void SetLocalSolderPasteMarginRatio( double aRatio ) { m_LocalSolderPasteMarginRatio = aRatio; }
229 
230  void SetZoneConnection( ZoneConnection aType ) { m_ZoneConnection = aType; }
231  ZoneConnection GetZoneConnection() const { return m_ZoneConnection; }
232 
233  void SetThermalWidth( int aWidth ) { m_ThermalWidth = aWidth; }
234  int GetThermalWidth() const { return m_ThermalWidth; }
235 
236  void SetThermalGap( int aGap ) { m_ThermalGap = aGap; }
237  int GetThermalGap() const { return m_ThermalGap; }
238 
239  int GetAttributes() const { return m_Attributs; }
240  void SetAttributes( int aAttributes ) { m_Attributs = aAttributes; }
241 
242  void SetFlag( int aFlag ) { m_arflag = aFlag; }
243  void IncrementFlag() { m_arflag += 1; }
244  int GetFlag() const { return m_arflag; }
245 
246  // A bit of a hack until net ties are supported as first class citizens
247  bool IsNetTie() const { return GetKeywords().StartsWith( wxT( "net tie" ) ); }
248 
249  void Move( const wxPoint& aMoveVector ) override;
250 
251  void Rotate( const wxPoint& aRotCentre, double aAngle ) override;
252 
253  void Flip( const wxPoint& aCentre, bool aFlipLeftRight ) override;
254 
266  void MoveAnchorPosition( const wxPoint& aMoveVector );
267 
272  bool IsFlipped() const { return GetLayer() == B_Cu; }
273 
274 // m_ModuleStatus bits:
275 #define MODULE_is_LOCKED 0x01
276 #define MODULE_is_PLACED 0x02
277 #define MODULE_to_PLACE 0x04
278 #define MODULE_PADS_LOCKED 0x08
279 
280 
281  bool IsLocked() const override
282  {
283  return ( m_ModuleStatus & MODULE_is_LOCKED ) != 0;
284  }
285 
291  void SetLocked( bool isLocked ) override
292  {
293  if( isLocked )
294  m_ModuleStatus |= MODULE_is_LOCKED;
295  else
296  m_ModuleStatus &= ~MODULE_is_LOCKED;
297  }
298 
299  bool IsPlaced() const { return m_ModuleStatus & MODULE_is_PLACED; }
300  void SetIsPlaced( bool isPlaced )
301  {
302  if( isPlaced )
303  m_ModuleStatus |= MODULE_is_PLACED;
304  else
305  m_ModuleStatus &= ~MODULE_is_PLACED;
306  }
307 
308  bool NeedsPlaced() const { return m_ModuleStatus & MODULE_to_PLACE; }
309  void SetNeedsPlaced( bool needsPlaced )
310  {
311  if( needsPlaced )
312  m_ModuleStatus |= MODULE_to_PLACE;
313  else
314  m_ModuleStatus &= ~MODULE_to_PLACE;
315  }
316 
317  bool PadsLocked() const { return m_ModuleStatus & MODULE_PADS_LOCKED; }
318 
319  void SetPadsLocked( bool aPadsLocked )
320  {
321  if( aPadsLocked )
322  m_ModuleStatus |= MODULE_PADS_LOCKED;
323  else
324  m_ModuleStatus &= ~MODULE_PADS_LOCKED;
325  }
326 
327  void SetLastEditTime( timestamp_t aTime ) { m_LastEditTime = aTime; }
328  void SetLastEditTime() { m_LastEditTime = time( NULL ); }
329  timestamp_t GetLastEditTime() const { return m_LastEditTime; }
330 
331  /* drawing functions */
332 
340  void Print( PCB_BASE_FRAME* aFrame, wxDC* aDC, const wxPoint& aOffset = ZeroOffset ) override;
341 
360  void TransformPadsShapesWithClearanceToPolygon( PCB_LAYER_ID aLayer,
361  SHAPE_POLY_SET& aCornerBuffer, int aInflateValue, int aMaxError = ARC_HIGH_DEF,
362  bool aSkipNPTHPadsWihNoCopper = false ) const;
363 
377  void TransformGraphicShapesWithClearanceToPolygonSet( PCB_LAYER_ID aLayer,
378  SHAPE_POLY_SET& aCornerBuffer, int aInflateValue, int aError = ARC_HIGH_DEF,
379  bool aIncludeText = true ) const;
380 
391  void TransformGraphicTextWithClearanceToPolygonSet( PCB_LAYER_ID aLayer,
392  SHAPE_POLY_SET& aCornerBuffer, int aInflateValue, int aError = ARC_HIGH_DEF ) const;
393 
395  void GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector<MSG_PANEL_ITEM>& aList ) override;
396 
397  bool HitTest( const wxPoint& aPosition, int aAccuracy = 0 ) const override;
398 
408  bool HitTestAccurate( const wxPoint& aPosition, int aAccuracy = 0 ) const;
409 
410  bool HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy = 0 ) const override;
411 
416  const wxString GetReference() const
417  {
418  return m_Reference->GetText();
419  }
420 
426  void SetReference( const wxString& aReference )
427  {
428  m_Reference->SetText( aReference );
429  }
430 
435  void IncrementReference( int aDelta );
436 
441  const wxString GetValue() const
442  {
443  return m_Value->GetText();
444  }
445 
450  void SetValue( const wxString& aValue )
451  {
452  m_Value->SetText( aValue );
453  }
454 
456  TEXTE_MODULE& Value() { return *m_Value; }
457  TEXTE_MODULE& Reference() { return *m_Reference; }
458 
460  TEXTE_MODULE& Value() const { return *m_Value; }
461  TEXTE_MODULE& Reference() const { return *m_Reference; }
462 
470  D_PAD* FindPadByName( const wxString& aPadName ) const;
471 
480  D_PAD* GetPad( const wxPoint& aPosition, LSET aLayerMask = LSET::AllLayersMask() );
481 
482  D_PAD* GetTopLeftPad();
483 
489  {
490  return m_pads.empty() ? nullptr : m_pads.front();
491  }
492 
501  unsigned GetPadCount( INCLUDE_NPTH_T aIncludeNPTH = INCLUDE_NPTH_T(INCLUDE_NPTH) ) const;
502 
515  unsigned GetUniquePadCount( INCLUDE_NPTH_T aIncludeNPTH = INCLUDE_NPTH_T(INCLUDE_NPTH) ) const;
516 
525  wxString GetNextPadName( bool aFillSequenceGaps ) const;
526 
527  double GetArea( int aPadding = 0 ) const;
528 
529  timestamp_t GetLink() const { return m_Link; }
530  void SetLink( timestamp_t aLink ) { m_Link = aLink; }
531 
532  int GetPlacementCost180() const { return m_CntRot180; }
533  void SetPlacementCost180( int aCost ) { m_CntRot180 = aCost; }
534 
535  int GetPlacementCost90() const { return m_CntRot90; }
536  void SetPlacementCost90( int aCost ) { m_CntRot90 = aCost; }
537 
543  BOARD_ITEM* Duplicate( const BOARD_ITEM* aItem,
544  bool aIncrementPadNumbers,
545  bool aAddToModule = false );
546 
553  void Add3DModel( MODULE_3D_SETTINGS* a3DModel );
554 
555  SEARCH_RESULT Visit( INSPECTOR inspector, void* testData, const KICAD_T scanTypes[] ) override;
556 
557  wxString GetClass() const override
558  {
559  return wxT( "MODULE" );
560  }
561 
562  wxString GetSelectMenuText( EDA_UNITS_T aUnits ) const override;
563 
564  BITMAP_DEF GetMenuImage() const override;
565 
566  EDA_ITEM* Clone() const override;
567 
575  void RunOnChildren( const std::function<void (BOARD_ITEM*)>& aFunction );
576 
585  void GetAllDrawingLayers( int aLayers[], int& aCount, bool aIncludePads = true ) const;
586 
587  virtual void ViewGetLayers( int aLayers[], int& aCount ) const override;
588 
589  virtual unsigned int ViewGetLOD( int aLayer, KIGFX::VIEW* aView ) const override;
590 
591  virtual const BOX2I ViewBBox() const override;
592 
600  static bool IsLibNameValid( const wxString& aName );
601 
610  static const wxChar* StringLibNameInvalidChars( bool aUserReadable );
611 
626  void SetInitialComments( wxArrayString* aInitialComments )
627  {
628  delete m_initial_comments;
629  m_initial_comments = aInitialComments;
630  }
631 
638  double CoverageRatio( const GENERAL_COLLECTOR& aCollector ) const;
639 
641  const wxArrayString* GetInitialComments() const { return m_initial_comments; }
642 
646  SHAPE_POLY_SET& GetPolyCourtyardFront() { return m_poly_courtyard_front; }
647  SHAPE_POLY_SET& GetPolyCourtyardBack() { return m_poly_courtyard_back; }
648 
656  bool BuildPolyCourtyard();
657 
658  virtual void SwapData( BOARD_ITEM* aImage ) override;
659 
660 #if defined(DEBUG)
661  virtual void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
662 #endif
663 
664 private:
665  DRAWINGS m_drawings; // BOARD_ITEMs for drawings on the board, owned by pointer.
666  PADS m_pads; // D_PAD items, owned by pointer
667  std::list<MODULE_3D_SETTINGS> m_3D_Drawings; // Linked list of 3D models.
668 
669  double m_Orient; // Orientation in tenths of a degree, 900=90.0 degrees.
670  wxPoint m_Pos; // Position of module on the board in internal units.
671  TEXTE_MODULE* m_Reference; // Component reference designator value (U34, R18..)
672  TEXTE_MODULE* m_Value; // Component value (74LS00, 22K..)
673  LIB_ID m_fpid; // The #LIB_ID of the MODULE.
674  int m_Attributs; // Flag bits ( see Mod_Attribut )
675  int m_ModuleStatus; // For autoplace: flags (LOCKED, AUTOPLACED)
676  EDA_RECT m_BoundaryBox; // Bounding box : coordinates on board, real orientation.
677 
682  int m_LocalSolderMaskMargin; // Solder mask margin
683  int m_LocalSolderPasteMargin; // Solder paste margin absolute value
684  double m_LocalSolderPasteMarginRatio; // Solder mask margin ratio value of pad size
685 
686  wxString m_Doc; // File name and path for documentation file.
687  wxString m_KeyWord; // Search keywords to find module in library.
688  wxString m_Path;
690  int m_arflag; // Use to trace ratsnest and auto routing.
691  timestamp_t m_Link; // Temporary logical link used during editing
692  int m_CntRot90; // Horizontal automatic placement cost ( 0..10 ).
693  int m_CntRot180; // Vertical automatic placement cost ( 0..10 ).
694 
695  wxArrayString* m_initial_comments;
696 
702 };
703 
704 #endif // MODULE_H_
LIB_ID m_fpid
Definition: class_module.h:673
SHAPE_POLY_SET & GetPolyCourtyardFront()
Used in DRC to test the courtyard area (a complex polygon)
Definition: class_module.h:646
timestamp_t GetLastEditTime() const
Definition: class_module.h:329
const DRAWINGS & GraphicalItems() const
Definition: class_module.h:180
#define MODULE_to_PLACE
In autoplace: module waiting for autoplace.
Definition: class_module.h:277
void SetPlacementCost90(int aCost)
Definition: class_module.h:536
int GetAttributes() const
Definition: class_module.h:239
double GetOrientation() const
Definition: class_module.h:202
Class LINE_READER is an abstract class from which implementation specific LINE_READERs may be derived...
Definition: richio.h:81
int GetPlacementCost90() const
Definition: class_module.h:535
TEXTE_MODULE & Reference()
Definition: class_module.h:457
void SetThermalGap(int aGap)
Definition: class_module.h:236
int m_CntRot90
Definition: class_module.h:692
void IncrementFlag()
Definition: class_module.h:243
SHAPE_POLY_SET m_poly_courtyard_back
Definition: class_module.h:701
void SetLocalClearance(int aClearance)
Definition: class_module.h:222
Class CAIRO_GAL is the cairo implementation of the graphics abstraction layer.
Definition: class_module.h:57
bool IsFlipped() const
function IsFlipped
Definition: class_module.h:272
wxString m_KeyWord
Definition: class_module.h:687
wxString m_Path
Definition: class_module.h:688
void SetPlacementCost180(int aCost)
Definition: class_module.h:533
void SetPosition(wxString aStr, const wxString &aDefaultMeasurementUnit, int *aX, int *aY, const wxString &aActualConversion)
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
int m_ThermalWidth
Definition: class_module.h:679
void SetInitialComments(wxArrayString *aInitialComments)
Function SetInitialComments takes ownership of caller's heap allocated aInitialComments block.
Definition: class_module.h:626
Classes BOARD_ITEM and BOARD_CONNECTED_ITEM.
double m_LocalSolderPasteMarginRatio
Definition: class_module.h:684
bool IsPlaced() const
Definition: class_module.h:299
const std::list< MODULE_3D_SETTINGS > & Models() const
Definition: class_module.h:193
ZoneConnection
How pads are covered by copper in zone.
Definition: zones.h:50
int m_LocalSolderPasteMargin
Definition: class_module.h:683
int m_ThermalGap
Definition: class_module.h:680
const wxString & GetPath() const
Definition: class_module.h:215
PADS & Pads()
Definition: class_module.h:165
void SetNeedsPlaced(bool needsPlaced)
Definition: class_module.h:309
const wxString GetValue() const
Function GetValue.
Definition: class_module.h:441
Set for modules listed in the automatic insertion list (usually SMD footprints)
Definition: class_module.h:76
Implement a canvas based on a wxGLCanvas.
Definition: eda_3d_canvas.h:52
#define DECL_DEQ_FOR_SWIG(TypeName, MemberType)
Definition: macros.h:160
PADS m_pads
Definition: class_module.h:666
void SetZoneConnection(ZoneConnection aType)
Definition: class_module.h:230
void SetOrientationDegrees(double aOrientation)
Definition: class_module.h:201
const LIB_ID & GetFPID() const
Definition: class_module.h:206
D_PAD * GetFirstPad() const
Gets the first pad in the list or NULL if none.
Definition: class_module.h:488
DRAWINGS & GraphicalItems()
Definition: class_module.h:175
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
int GetLocalSolderMaskMargin() const
Definition: class_module.h:218
bool m_Preview
Include module in 3D preview.
Definition: class_module.h:103
wxArrayString * m_initial_comments
leading s-expression comments in the module, lazily allocated only if needed for speed
Definition: class_module.h:695
void SetLocalSolderPasteMarginRatio(double aRatio)
Definition: class_module.h:228
#define MODULE_PADS_LOCKED
In autoplace: module waiting for autoplace.
Definition: class_module.h:278
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
timestamp_t GetLink() const
Definition: class_module.h:529
VECTOR3D m_Offset
3D model offset (mm)
Definition: class_module.h:101
wxString m_Doc
Definition: class_module.h:686
timestamp_t m_LastEditTime
Definition: class_module.h:689
const wxString GetReference() const
Function GetReference.
Definition: class_module.h:416
#define MODULE_is_PLACED
In autoplace: module automatically placed.
Definition: class_module.h:276
int m_LocalClearance
Definition: class_module.h:681
const INSPECTOR_FUNC & INSPECTOR
Definition: base_struct.h:108
double m_Orient
Definition: class_module.h:669
bool IsNetTie() const
Definition: class_module.h:247
class MODULE, a footprint
Definition: typeinfo.h:89
PCB_LAYER_ID
A quick note on layer IDs:
EDA_RECT m_BoundaryBox
Definition: class_module.h:676
Class LSET is a set of PCB_LAYER_IDs.
Footprint text class description.
int GetLocalClearance() const
Definition: class_module.h:221
void SetLink(timestamp_t aLink)
Definition: class_module.h:530
Class SHAPE_POLY_SET.
TEXTE_MODULE & Value()
read/write accessors:
Definition: class_module.h:456
void SetLastEditTime(timestamp_t aTime)
Definition: class_module.h:327
timestamp_t m_Link
Definition: class_module.h:691
static bool ClassOf(const EDA_ITEM *aItem)
Definition: class_module.h:121
void SetThermalWidth(int aWidth)
Definition: class_module.h:233
int m_LocalSolderMaskMargin
Definition: class_module.h:682
std::list< MODULE_3D_SETTINGS > m_3D_Drawings
Definition: class_module.h:667
double GetOrientationRadians() const
Definition: class_module.h:204
int m_arflag
Definition: class_module.h:690
double GetOrientationDegrees() const
Definition: class_module.h:203
static LSET AllLayersMask()
Definition: lset.cpp:713
MODULE_ATTR_T
Enum MODULE_ATTR_T is the set of attributes allowed within a MODULE, using MODULE::SetAttributes() an...
Definition: class_module.h:73
void SetPadsLocked(bool aPadsLocked)
Definition: class_module.h:319
void SetReference(const wxString &aReference)
Function SetReference.
Definition: class_module.h:426
SHAPE_POLY_SET m_poly_courtyard_front
Used in DRC to test the courtyard area (a polygon which can be not basic Note also a footprint can ha...
Definition: class_module.h:700
void SetIsPlaced(bool isPlaced)
Definition: class_module.h:300
bool NeedsPlaced() const
Definition: class_module.h:308
const wxArrayString * GetInitialComments() const
Return the initial comments block or NULL if none, without transfer of ownership.
Definition: class_module.h:641
bool IsLocked() const override
Function IsLocked.
Definition: class_module.h:281
const wxString & GetKeywords() const
Definition: class_module.h:212
DRAWINGS m_drawings
Definition: class_module.h:665
void SetLocalSolderMaskMargin(int aMargin)
Definition: class_module.h:219
int GetLocalSolderPasteMargin() const
Definition: class_module.h:224
wxString m_Filename
The 3D shape filename in 3D library.
Definition: class_module.h:102
default
Definition: class_module.h:75
std::unique_ptr< typename std::remove_const< T >::type > Clone(const T &aItem)
Definition: pns_item.h:270
int GetPlacementCost180() const
Definition: class_module.h:532
const wxString & GetDescription() const
Definition: class_module.h:209
void SetLocalSolderPasteMargin(int aMargin)
Definition: class_module.h:225
double GetLocalSolderPasteMarginRatio() const
Definition: class_module.h:227
std::list< MODULE_3D_SETTINGS > & Models()
Definition: class_module.h:192
#define MODULE_is_LOCKED
module LOCKED: no autoplace allowed
Definition: class_module.h:275
int m_CntRot180
Definition: class_module.h:693
Board layer functions and definitions.
void SetLocked(bool isLocked) override
Function SetLocked sets the MODULE_is_LOCKED bit in the m_ModuleStatus.
Definition: class_module.h:291
VECTOR3D m_Rotation
3D model rotation (degrees)
Definition: class_module.h:100
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:161
int GetFlag() const
Definition: class_module.h:244
int m_ModuleStatus
Definition: class_module.h:675
Virtual component: when created by copper shapes on board (Like edge card connectors,...
Definition: class_module.h:78
Used when the right click button is pressed, or when the select tool is in effect.
Definition: collectors.h:240
const PADS & Pads() const
Definition: class_module.h:170
wxString GetClass() const override
Function GetClass returns the class name.
Definition: class_module.h:557
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
void SetLastEditTime()
Definition: class_module.h:328
void SetValue(const wxString &aValue)
Function SetValue.
Definition: class_module.h:450
TEXTE_MODULE * m_Value
Definition: class_module.h:672
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:163
TEXTE_MODULE & Reference() const
Definition: class_module.h:461
VECTOR3D m_Scale
3D model scaling factor (dimensionless)
Definition: class_module.h:99
wxPoint m_Pos
Definition: class_module.h:670
static bool GetLayer(MODEL_VRML &aModel, LAYER_NUM layer, VRML_LAYER **vlayer)
bool PadsLocked() const
Definition: class_module.h:317
void SetKeywords(const wxString &aKeywords)
Definition: class_module.h:213
TEXTE_MODULE * m_Reference
Definition: class_module.h:671
uint32_t timestamp_t
timestamp_t is our type to represent unique IDs for all kinds of elements; historically simply the ti...
Definition: common.h:53
SHAPE_POLY_SET & GetPolyCourtyardBack()
Definition: class_module.h:647
Abstract interface for BOARD_ITEMs capable of storing other items inside.
Class EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
Class VIEW.
Definition: view.h:61
SEARCH_RESULT
Definition: base_struct.h:54
int GetThermalWidth() const
Definition: class_module.h:234
ZoneConnection m_ZoneConnection
Definition: class_module.h:678
INCLUDE_NPTH_T
Definition: class_module.h:61
void Flip(T &aValue)
const wxPoint GetPosition() const override
Definition: class_module.h:197
int GetThermalGap() const
Definition: class_module.h:237
void SetFPID(const LIB_ID &aFPID)
Definition: class_module.h:207
class PCB_BASE_FRAME basic PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
void SetPath(const wxString &aPath)
Definition: class_module.h:216
EDA_UNITS_T
Definition: common.h:133
TEXTE_MODULE & Value() const
The const versions to keep the compiler happy.
Definition: class_module.h:460
void SetFlag(int aFlag)
Definition: class_module.h:242
ZoneConnection GetZoneConnection() const
Definition: class_module.h:231
void SetAttributes(int aAttributes)
Definition: class_module.h:240
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210
int m_Attributs
Definition: class_module.h:674
void SetDescription(const wxString &aDoc)
Definition: class_module.h:210