38 std::vector<LTSPICE_SCHEMATIC::LT_ASC>& outLT_ASCs,
39 const std::vector<wxString>& aAsyFileNames )
45 bbox.
Merge( asc.BoundingBox );
53 int margin =
grid * 10;
57 if( bbox.
GetWidth() > pageSize.
x - margin )
74 ltSubDir.AppendDir( wxS(
"sub" ) );
80 for( wxString& line : wxSplit( lt_text.
Value,
'\n' ) )
82 if( line.StartsWith( wxS(
".include " ) ) || line.StartsWith( wxS(
".inc " ) )
83 || line.StartsWith( wxS(
".lib " ) ) )
85 wxString
path = line.AfterFirst(
' ' );
87 path.Replace(
'\\',
'/' );
88 wxFileName fileName(
path );
90 if( fileName.IsAbsolute() )
92 m_includes[fileName.GetName()] = fileName.GetFullPath();
96 fileName.MakeAbsolute( ltSubDir.GetFullPath() );
97 m_includes[fileName.GetName()] = fileName.GetFullPath();
136 std::vector<LTSPICE_SCHEMATIC::LT_ASC>& outLT_ASCs,
137 const std::vector<wxString>& aAsyFiles )
141 std::vector<LTSPICE_SCHEMATIC::LT_SYMBOL> symbols = lt_asc.Symbols;
142 std::map<wxString, LIB_SYMBOL*> existingSymbol;
143 std::map<wxString, SCH_SYMBOL*> existingSchematicSymbol;
151 if( existingSymbol.count( lt_symbol.Name ) == 0 )
153 lib_symbol =
new LIB_SYMBOL( lt_symbol.Name );
157 existingSymbol.emplace( lt_symbol.Name, lib_symbol );
161 lib_symbol = existingSymbol[lt_symbol.Name];
164 LIB_ID libId( wxS(
"ltspice" ), lt_symbol.Name );
169 for(
int j = 0; j < (int) lt_symbol.Wires.size(); j++ )
179 for(
int j = 0; j < (int) lt_symbol.Lines.size(); j++ )
182 for(
int j = 0; j < (int) lt_symbol.Circles.size(); j++ )
185 for(
int j = 0; j < (int) lt_symbol.Arcs.size(); j++ )
188 for(
int j = 0; j < (int) lt_symbol.Rectangles.size(); j++ )
195 LTSPICE_FILE tempAsyFile( lt_symbol.Name +
".asy", { 0, 0 } );
207 int botRightX = lt_symbol.Offset.x
210 int botRightY = lt_symbol.Offset.y
220 if( wire.
Start == ( pinPos + lt_symbol.Offset ) )
223 if( wire.
End.
x == ( pinPos + lt_symbol.Offset ).x )
225 if( wire.
End.
y <= topLeftY )
227 else if( wire.
End.
y >= botRightY )
229 else if( wire.
End.
y < botRightY && wire.
End.
y > topLeftY )
233 else if( wire.
End.
y == ( pinPos + lt_symbol.Offset ).y )
235 if( wire.
End.
x <= topLeftX )
237 else if( wire.
End.
x >= botRightX )
239 else if( wire.
End.
x < botRightX && wire.
End.
x > topLeftX )
243 else if( wire.
End == ( pinPos + lt_symbol.Offset ) )
246 if( wire.
Start.
x == ( pinPos + lt_symbol.Offset ).x )
248 if( wire.
Start.
y <= topLeftY )
250 else if( wire.
Start.
y > botRightY )
252 else if( wire.
Start.
y < botRightY && wire.
End.
y > topLeftY )
256 else if( wire.
Start.
y == ( pinPos + lt_symbol.Offset ).y )
258 if( wire.
Start.
x <= topLeftX )
260 else if( wire.
Start.
x >= botRightX )
262 else if( wire.
Start.
x < botRightX && wire.
Start.
x > topLeftX )
277 for(
int j = 0; j < (int) aLtSymbol.
Lines.size(); j++ )
285 for(
int j = 0; j < (int) aLtSymbol.
Circles.size(); j++ )
293 for(
int j = 0; j < (int) aLtSymbol.
Arcs.size(); j++ )
301 for(
int j = 0; j < (int) aLtSymbol.
Rectangles.size(); j++ )
309 for(
int j = 0; j < (int) aLtSymbol.
Pins.size(); j++ )
347 if( aLTFontSize == 1 )
return MILS_SIZE( 36 );
348 else if( aLTFontSize == 2 )
return MILS_SIZE( 42 );
349 else if( aLTFontSize == 3 )
return MILS_SIZE( 50 );
350 else if( aLTFontSize == 4 )
return MILS_SIZE( 60 );
351 else if( aLTFontSize == 5 )
return MILS_SIZE( 72 );
352 else if( aLTFontSize == 6 )
return MILS_SIZE( 88 );
353 else if( aLTFontSize == 7 )
return MILS_SIZE( 108 );
458 std::vector<LTSPICE_SCHEMATIC::LT_ASC>& outLT_ASCs )
464 for(
int j = 0; j < (int) lt_asc.Lines.size(); j++ )
467 for(
int j = 0; j < (int) lt_asc.Circles.size(); j++ )
470 for(
int j = 0; j < (int) lt_asc.Arcs.size(); j++ )
473 for(
int j = 0; j < (int) lt_asc.Rectangles.size(); j++ )
476 for(
int j = 0; j < (int) lt_asc.Bustap.size(); j++ )
498 for(
int j = 0; j < (int) lt_asc.Wires.size(); j++ )
499 CreateWire( lt_asc, j, aSheet, SCH_LAYER_ID::LAYER_WIRE );
501 for(
int j = 0; j < (int) lt_asc.Iopins.size(); j++ )
506 if( lt_flag.
Value == wxS(
"0" ) )
509 aSheet, lt_asc.Wires ) );
520 wxString textVal = lt_text.
Value;
523 if( textVal.StartsWith(
".include " ) || textVal.StartsWith(
".inc " )
524 || textVal.StartsWith(
".lib " ) )
526 textVal = wxS(
"* " ) + textVal;
536 lt_flag.Expression, lt_flag.
FontSize ) );
547 for(
int k = 0; k < (int) aAscfile.
Wires.size(); k++ )
549 if( ( aAscfile.
Wires[k].Start == bustap.
Start )
550 || ( aAscfile.
Wires[k].End == bustap.
Start ) )
552 CreateWire( aAscfile, k, aSheet, SCH_LAYER_ID::LAYER_BUS );
553 aAscfile.
Wires.erase( aAscfile.
Wires.begin() + k );
558 bustap.
Start.
y - 16 } ) );
583 for(
unsigned int k = 0; k < aAscfile.
Flags.size(); k++ )
588 ioPinName = aAscfile.
Flags[k].Value;
589 aAscfile.
Flags.erase( aAscfile.
Flags.begin() + k );
686 default:
return LINE_STYLE::SOLID;
701 switch( aJustification )
736 switch( aJustification )
758 if( wxSplit( aText->
GetText(),
'\n',
'\0' ).size() > 1 )
760 switch( aJustification )
816 const wxString& aValue,
818 std::vector<LTSPICE_SCHEMATIC::WIRE>& aWires )
831 LINE_STYLE::SOLID ) );
838 pin->SetType( ELECTRICAL_PINTYPE::PT_POWER_IN );
841 pin->SetShape( GRAPHIC_PINSHAPE::LINE );
844 LIB_ID libId( wxS(
"ltspice" ), wxS(
"GND" ) );
857 if( aOffset == wire.Start )
859 if( wire.Start.x == wire.End.x )
861 if( wire.Start.y < wire.End.y )
869 if( wire.Start.x < wire.End.x )
871 else if( wire.Start.x > wire.End.x )
875 else if( aOffset == wire.End )
877 if( wire.Start.x == wire.End.x )
879 if( wire.Start.y > wire.End.y )
887 if( wire.Start.x < wire.End.x )
889 else if( wire.Start.x > wire.End.x )
900 const wxString& aValue,
int aFontSize )
918 SCH_FIELD field( { 0, 0 }, -1, label, wxS(
"DATAFLAG" ) );
921 field.SetVisible(
true );
945 wxString symbolName = aLTSymbol.
Name.Upper();
946 wxString type = aLTSymbol.
SymAttributes[wxS(
"TYPE" )].Upper();
947 wxString prefix = aLTSymbol.
SymAttributes[wxS(
"PREFIX" )].Upper();
948 wxString instName = aLTSymbol.
SymAttributes[wxS(
"INSTNAME" )].Upper();
952 if( value.IsEmpty() )
955 value2 = wxEmptyString;
958 aSymbol->
SetRef( aSheet, instName );
961 if( !value2.IsEmpty() )
963 SCH_FIELD paramsField( { 0, 0 }, -1, aSymbol, wxS(
"Value2" ) );
968 auto setupNonInferredPassive = [&](
const wxString& aDevice,
const wxString& aValueKey )
970 SCH_FIELD deviceField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Device" ) );
971 deviceField.
SetText( aDevice );
974 SCH_FIELD paramsField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Params" ) );
975 paramsField.
SetText( aValueKey + wxS(
"=${VALUE}" ) );
979 auto setupBehavioral = [&](
const wxString& aDevice,
const wxString& aType )
983 SCH_FIELD deviceField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Device" ) );
984 deviceField.
SetText( aDevice );
987 SCH_FIELD typeField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Type" ) );
991 SCH_FIELD paramsField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Params" ) );
996 static const std::set<wxString> prefixWithGain = { wxS(
"E" ), wxS(
"F" ), wxS(
"G" ),
999 if( prefix == wxS(
"R" ) )
1001 setupNonInferredPassive( prefix, wxS(
"R" ) );
1003 else if( prefix == wxS(
"C" ) )
1005 setupNonInferredPassive( prefix, wxS(
"C" ) );
1007 else if( prefix == wxS(
"L" ) )
1009 setupNonInferredPassive( prefix, wxS(
"L" ) );
1011 else if( prefixWithGain.count( prefix ) > 0 )
1013 setupNonInferredPassive( prefix, wxS(
"gain" ) );
1015 else if( prefix == wxS(
"B" ) )
1017 if( symbolName.StartsWith( wxS(
"BV" ) ) )
1019 setupBehavioral( wxS(
"V" ), wxS(
"=" ) );
1021 else if( symbolName.StartsWith( wxS(
"BI" ) ) )
1023 setupBehavioral( wxS(
"I" ), wxS(
"=" ) );
1026 else if( prefix == wxS(
"V" ) || symbolName == wxS(
"I" ) )
1028 SCH_FIELD deviceField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Device" ) );
1029 deviceField.
SetText( wxS(
"SPICE" ) );
1033 simParams <<
"type=" <<
'"' << prefix <<
'"' <<
' ';
1035 if( value2.IsEmpty() )
1036 simParams <<
"model=" <<
'"' <<
"${VALUE}" <<
'"' <<
' ';
1038 simParams <<
"model=" <<
'"' <<
"${VALUE} ${VALUE2}" <<
'"' <<
' ';
1040 SCH_FIELD paramsField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Params" ) );
1041 paramsField.
SetText( simParams );
1046 wxString libFile = aLTSymbol.
SymAttributes[wxS(
"MODELFILE" )];
1048 if( prefix == wxS(
"X" ) )
1053 else if( libFile.IsEmpty() )
1055 if( type.IsEmpty() )
1058 if( value ==
"DIODE" )
1059 libFile = libPath + wxS(
"cmp/standard.dio" );
1060 else if( value ==
"NPN" || value ==
"PNP" )
1061 libFile = libPath + wxS(
"cmp/standard.bjt" );
1062 else if( value ==
"NJF" || value ==
"PJF" )
1063 libFile = libPath + wxS(
"cmp/standard.jft" );
1064 else if( value ==
"NMOS" || value ==
"PMOS" )
1065 libFile = libPath + wxS(
"cmp/standard.mos" );
1068 if( libFile.IsEmpty() )
1071 if( !libFile.IsEmpty() )
1073 SCH_FIELD libField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Library" ) );
1078 if( type == wxS(
"X" ) )
1080 SCH_FIELD deviceField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Device" ) );
1081 deviceField.
SetText( wxS(
"SUBCKT" ) );
1086 SCH_FIELD deviceField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Device" ) );
1087 deviceField.
SetText( wxS(
"SPICE" ) );
1091 wxString spiceLine = aLTSymbol.
SymAttributes[wxS(
"SPICELINE" )];
1093 if( !spiceLine.IsEmpty() )
1096 SCH_FIELD paramsField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Params" ) );
1097 paramsField.
SetText( spiceLine );
1102 SCH_FIELD modelField( { 0, 0 }, -1, aSymbol, wxS(
"Sim.Params" ) );
1103 modelField.
SetText(
"model=\"" + value +
"\"" );
1128 case 38: field = aSymbol->
FindField( wxS(
"Sim.Name" ) );
break;
1129 case 39: field = aSymbol->
FindField( wxS(
"Sim.Params" ) );
break;
1252 if( aLTSymbol.
SymAttributes[wxS(
"Prefix" )] == wxS(
"X" ) )
1253 aRectangle->
SetFillMode( FILL_T::FILLED_WITH_BG_BODYCOLOR );
1278 wxString device = aLTSymbol.
Name.Lower();
1280 if( aLTSymbol.
Pins.size() == 2 && ( device == wxS(
"res" )
1281 || device == wxS(
"cap" )
1282 || device == wxS(
"ind" ) ) )
1295 aPin->
SetNumber( wxString::Format( wxS(
"%d" ), aIndex + 1 ) );
1296 aPin->
SetType( ELECTRICAL_PINTYPE::PT_PASSIVE );
1299 aPin->
SetShape( GRAPHIC_PINSHAPE::LINE );
constexpr EDA_IU_SCALE schIUScale
void SetOrigin(const Vec &pos)
void SetSize(const SizeVec &size)
const Vec & GetOrigin() const
void Offset(coord_type dx, coord_type dy)
const SizeVec & GetSize() const
size_type GetHeight() const
const Vec GetCenter() const
coord_type GetTop() const
size_type GetWidth() const
coord_type GetLeft() const
BOX2< Vec > & Merge(const BOX2< Vec > &aRect)
Modify the position and size of the rectangle in order to contain aRect.
void SetCenter(const VECTOR2I &aCenter)
void SetStart(const VECTOR2I &aStart)
void SetEnd(const VECTOR2I &aEnd)
void SetFillMode(FILL_T aFill)
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
int GetTextHeight() const
void SetTextSize(VECTOR2I aNewSize, bool aEnforceMinTextSize=true)
virtual const wxString & GetText() const
Return the string associated with the text object.
void SetVertJustify(GR_TEXT_V_ALIGN_T aType)
void Offset(const VECTOR2I &aOffset)
virtual void SetVisible(bool aVisible)
virtual void SetText(const wxString &aText)
virtual void SetTextAngle(const EDA_ANGLE &aAngle)
void SetMultilineAllowed(bool aAllow)
void SetHorizJustify(GR_TEXT_H_ALIGN_T aType)
A logical library item identifier and consists of various portions much like a URI.
Define a library symbol object.
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
void AddDrawItem(SCH_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
LT_SYMBOL SymbolBuilder(const wxString &aAscFileName, LT_ASC &aAscFile)
POLARITY
Polarity enum represents polarity of pin.
const wxFileName & GetLTspiceDataDir()
JUSTIFICATION
Defines in what ways the PIN or TEXT can be justified.
const VECTOR2D GetSizeIU(double aIUScale) const
Gets the page size in internal units.
void SetSize(const VECTOR2I &aSize)
Class for a wire to bus entry.
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
void SetPosition(const VECTOR2I &aPosition) override
void SetText(const wxString &aText) override
int ToLtSpiceCoords(int aCoordinate)
Method converts kicad coordinate(i.e scale) to ltspice coordinates.
void CreateCircle(LTSPICE_SCHEMATIC::LT_ASC &aAscfile, int aIndex, SCH_SHEET_PATH *aSheet)
Method for plotting circle from Asc files.
void setTextJustification(EDA_TEXT *aText, LTSPICE_SCHEMATIC::JUSTIFICATION aJustification)
void CreateWires(LTSPICE_SCHEMATIC::LT_SYMBOL &aLTSymbol, int aIndex, SCH_SHEET_PATH *aSheet)
Method for plotting wires.
void Parse(SCH_SHEET_PATH *aSheet, std::vector< LTSPICE_SCHEMATIC::LT_ASC > &outLT_ASCs, const std::vector< wxString > &aAsyFileNames)
Function responsible for loading the .asc and .asy files in intermediate data structure.
STROKE_PARAMS getStroke(const LTSPICE_SCHEMATIC::LINEWIDTH &aLineWidth, const LTSPICE_SCHEMATIC::LINESTYLE &aLineStyle)
void CreateKicadSYMBOLs(SCH_SHEET_PATH *aSheet, std::vector< LTSPICE_SCHEMATIC::LT_ASC > &outLT_ASCs, const std::vector< wxString > &aAsyFiles)
Main Method for loading indermediate data to kicacd object from asy files.
SCH_SYMBOL * CreatePowerSymbol(const VECTOR2I &aOffset, const wxString &aValue, int aFontSize, SCH_SHEET_PATH *aSheet, std::vector< LTSPICE_SCHEMATIC::WIRE > &aWires)
Create a power symbol.
std::map< wxString, wxString > m_includes
void CreateLine(LTSPICE_SCHEMATIC::LT_ASC &aAscfile, int aIndex, SCH_SHEET_PATH *aSheet)
Method for plotting Line from Asc files.
int getLineWidth(const LTSPICE_SCHEMATIC::LINEWIDTH &aLineWidth)
void RotateMirror(LTSPICE_SCHEMATIC::LT_SYMBOL &aLTSymbol, SCH_SYMBOL *aSchSymbol)
Methods for rotating and mirroring objects.
void CreateBusEntry(LTSPICE_SCHEMATIC::LT_ASC &aAscfile, int aIndex, SCH_SHEET_PATH *aSheet)
Method for plotting Bustap from Asc files.
void CreateRect(LTSPICE_SCHEMATIC::LT_ASC &aAscfile, int aIndex, SCH_SHEET_PATH *aSheet)
Method for plotting rectangle from Asc files.
void CreateWire(LTSPICE_SCHEMATIC::LT_ASC &aAscfile, int aIndex, SCH_SHEET_PATH *aSheet, SCH_LAYER_ID aLayer)
Create a schematic wire.
void CreateLines(LIB_SYMBOL *aSymbol, LTSPICE_SCHEMATIC::LT_SYMBOL &aLTSymbol, int aIndex, SCH_SHAPE *aShape)
Method for plotting Lines from Asy files.
void CreatePin(LTSPICE_SCHEMATIC::LT_ASC &aAscfile, int aIndex, SCH_SHEET_PATH *aSheet)
Method for plotting Iopin from Asc files.
void CreateArc(LTSPICE_SCHEMATIC::LT_ASC &aAscfile, int aIndex, SCH_SHEET_PATH *aSheet)
Method for plotting Arc from Asc files.
void readIncludes(std::vector< LTSPICE_SCHEMATIC::LT_ASC > &outLT_ASCs)
LINE_STYLE getLineStyle(const LTSPICE_SCHEMATIC::LINESTYLE &aLineStyle)
LTSPICE_SCHEMATIC * m_lt_schematic
SCH_LABEL_BASE * CreateSCH_LABEL(KICAD_T aType, const VECTOR2I &aOffset, const wxString &aValue, int aFontSize)
Create a label.
int ToKicadCoords(int aCoordinate)
Method converts ltspice coordinate(i.e scale) to kicad coordinates.
VECTOR2I ToInvertedKicadCoords(const VECTOR2I &aPos)
SCH_TEXT * CreateSCH_TEXT(VECTOR2I aOffset, const wxString &aText, int aFontSize, LTSPICE_SCHEMATIC::JUSTIFICATION aJustification)
Create schematic text.
void CreateFields(LTSPICE_SCHEMATIC::LT_SYMBOL &aLTSymbol, SCH_SYMBOL *aSymbol, SCH_SHEET_PATH *aSheet)
void RotateMirrorShape(LTSPICE_SCHEMATIC::LT_SYMBOL &aLTSymbol, SCH_SHAPE *aShape)
void CreateKicadSCH_ITEMs(SCH_SHEET_PATH *aSheet, std::vector< LTSPICE_SCHEMATIC::LT_ASC > &outLT_ASCs)
Main method for loading intermediate data structure from Asc file to kicad.
VECTOR2I ToKicadFontSize(int aLTFontSize)
void CreateSymbol(LTSPICE_SCHEMATIC::LT_SYMBOL &aLtSymbol, LIB_SYMBOL *aLibSymbol)
void SetLayer(SCH_LAYER_ID aLayer)
void Move(const VECTOR2I &aMoveVector) override
Move the item by aMoveVector to a new position.
void AddField(const SCH_FIELD &aField)
void SetShape(LABEL_FLAG_SHAPE aShape)
void SetPosition(const VECTOR2I &aPosition) override
void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual) override
virtual void SetSpinStyle(SPIN_STYLE aSpinStyle)
Segment description base class to describe items which have 2 end points (track, wire,...
void SetStartPoint(const VECTOR2I &aPosition)
void SetLineWidth(const int aSize)
void SetLineStyle(const LINE_STYLE aStyle)
void Move(const VECTOR2I &aMoveVector) override
Move the item by aMoveVector to a new position.
virtual void SetStroke(const STROKE_PARAMS &aStroke) override
void SetEndPoint(const VECTOR2I &aPosition)
void SetNumber(const wxString &aNumber)
void SetOrientation(PIN_ORIENTATION aOrientation)
void SetName(const wxString &aName)
void SetPosition(const VECTOR2I &aPos) override
void SetLength(int aLength)
void SetShape(GRAPHIC_PINSHAPE aShape)
void SetType(ELECTRICAL_PINTYPE aType)
void SetNameTextSize(int aSize)
const PAGE_INFO & GetPageSettings() const
void Append(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
void SetPosition(const VECTOR2I &aPos) override
void MirrorHorizontally(int aCenter) override
Mirror item horizontally about aCenter.
void Move(const VECTOR2I &aOffset) override
Move the item by aMoveVector to a new position.
void SetStroke(const STROKE_PARAMS &aStroke) override
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
void AddPoint(const VECTOR2I &aPosition)
void Rotate(const VECTOR2I &aCenter, bool aRotateCCW) override
Rotate the item around aCenter 90 degrees in the clockwise direction.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
SCH_SCREEN * LastScreen()
void SetValueFieldText(const wxString &aValue)
SCH_FIELD * FindField(const wxString &aFieldName, bool aIncludeDefaultFields=true, bool aCaseInsensitive=false)
Search for a SCH_FIELD with aFieldName.
void Move(const VECTOR2I &aMoveVector) override
Move the item by aMoveVector to a new position.
SCH_FIELD * GetField(MANDATORY_FIELD_T aFieldType)
Return a mandatory field in this symbol.
void SetRef(const SCH_SHEET_PATH *aSheet, const wxString &aReference)
Set the reference for the given sheet path for this symbol.
void SetOrientation(int aOrientation)
Compute the new transform matrix based on aOrientation for the symbol which is applied to the current...
SCH_FIELD * AddField(const SCH_FIELD &aField)
Add a field to the symbol.
Simple container to manage line stroke parameters.
void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
static constexpr EDA_ANGLE ANGLE_VERTICAL
static constexpr EDA_ANGLE ANGLE_HORIZONTAL
SCH_LAYER_ID
Eeschema drawing layers.
#define UNIMPLEMENTED_FOR(type)
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
LABEL_FLAG_SHAPE getLabelShape(LTSPICE_SCHEMATIC::POLARITY aPolarity)
@ SYM_ROTATE_COUNTERCLOCKWISE
LINE_STYLE
Dashed line types.
constexpr int IUToMils(int iu) const
constexpr int MilsToIU(int mils) const
The ARC is represented inside a rectangle whose opposite site are given.
The CIRCLE is represented in Ltpsice inside a rectangle whose two opposite points and line style are ...
IOPIN is special contact on symbol used for IO operations.
A struct to hold .asc file definition.
std::vector< CIRCLE > Circles
std::vector< IOPIN > Iopins
std::vector< BUSTAP > Bustap
std::vector< LINE > Lines
std::vector< WIRE > Wires
std::vector< RECTANGLE > Rectangles
std::vector< FLAG > Flags
JUSTIFICATION PinJustification
std::map< wxString, wxString > PinAttribute
A struct to hold SYMBOL definition.
std::map< wxString, wxString > SymAttributes
std::vector< RECTANGLE > Rectangles
std::vector< LT_WINDOW > Windows
std::vector< LT_PIN > Pins
std::vector< WIRE > Wires
ORIENTATION SymbolOrientation
std::vector< CIRCLE > Circles
std::vector< LINE > Lines
JUSTIFICATION Justification
A 4-sided polygon with opposite equal sides, used in representing shapes.
JUSTIFICATION Justification
A metallic connection, used for transfer, between two points or pin.
@ VALUE_FIELD
Field Value of part, i.e. "3.3K".
@ REFERENCE_FIELD
Field Reference of part, i.e. "IC21".
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
T rescale(T aNumerator, T aValue, T aDenominator)
Scale a number (value) by rational (numerator/denominator).