58 std::vector<FP_3DMODEL>* aParentModelList ) :
106 wxSpinButton* spinButtonList[] =
113 for( wxSpinButton* button : spinButtonList )
114 button->SetRange(INT_MIN, INT_MAX );
146 catch(
const std::system_error& e )
148 wxLogTrace( wxT(
"KI_TRACE_NAVLIB" ), e.what() );
180 for( wxEventType eventType : { wxEVT_MENU_OPEN, wxEVT_MENU_CLOSE, wxEVT_MENU_HIGHLIGHT } )
186 aFrame->Connect( EDA_EVT_UNITS_CHANGED,
216 wxCHECK_RET(
m_previewPane, wxT(
"Cannot load settings to null canvas" ) );
230 m_previewPane->SetAnimationEnabled( cfg->m_Camera.animation_enabled );
231 m_previewPane->SetMovingSpeedMultiplier( cfg->m_Camera.moving_speed_multiplier );
232 m_previewPane->SetProjectionMode( cfg->m_Camera.projection_mode );
264 return wxString::Format( wxT(
"%.4f" ),
275 return wxString::Format( wxT(
"%.2f%s" ),
287 aValue /= 25.4 / 1e3;
289 return wxString::Format( wxT(
"%.6f%s" ),
324 xscale->ChangeValue( wxEmptyString );
325 yscale->ChangeValue( wxEmptyString );
326 zscale->ChangeValue( wxEmptyString );
328 xrot->ChangeValue( wxEmptyString );
329 yrot->ChangeValue( wxEmptyString );
330 zrot->ChangeValue( wxEmptyString );
332 xoff->ChangeValue( wxEmptyString );
333 yoff->ChangeValue( wxEmptyString );
334 zoff->ChangeValue( wxEmptyString );
436 wxSpinButton* spinCtrl =
dynamic_cast<wxSpinButton*
>(
event.GetEventObject() );
438 wxCHECK( spinCtrl, );
440 wxTextCtrl * textCtrl =
xscale;
449 if( wxGetMouseState().ShiftDown( ) )
453 textCtrl->GetValue() );
455 curr_value += ( step * aSign );
456 curr_value = std::max( 1/
MAX_SCALE, curr_value );
457 curr_value = std::min( curr_value,
MAX_SCALE );
465 wxSpinButton* spinCtrl =
dynamic_cast<wxSpinButton*
>( aEvent.GetEventObject() );
467 wxCHECK( spinCtrl, );
469 wxTextCtrl* textCtrl =
xrot;
478 if( wxGetMouseState().ShiftDown( ) )
482 textCtrl->GetValue() );
484 curr_value += ( step * aSign );
494 wxSpinButton* spinCtrl =
dynamic_cast<wxSpinButton*
>(
event.GetEventObject() );
496 wxCHECK( spinCtrl, );
498 wxTextCtrl * textCtrl =
xoff;
507 if( wxGetMouseState().ShiftDown( ) )
514 if( wxGetMouseState().ShiftDown( ) )
519 textCtrl->GetValue() )
522 curr_value_mm += ( step_mm * aSign );
523 curr_value_mm = std::max( -
MAX_OFFSET, curr_value_mm );
524 curr_value_mm = std::min( curr_value_mm,
MAX_OFFSET );
532 wxTextCtrl* textCtrl =
dynamic_cast<wxTextCtrl*
>(
event.GetEventObject() );
534 wxCHECK( textCtrl, );
538 if( event.ShiftDown( ) )
541 if( event.GetWheelRotation() >= 0 )
545 textCtrl->GetValue() );
548 curr_value = std::max( 1/
MAX_SCALE, curr_value );
549 curr_value = std::min( curr_value,
MAX_SCALE );
557 wxTextCtrl* textCtrl =
dynamic_cast<wxTextCtrl*
>(
event.GetEventObject() );
559 wxCHECK( textCtrl, );
563 if( event.ShiftDown( ) )
566 if( event.GetWheelRotation() >= 0 )
570 textCtrl->GetValue() );
582 wxTextCtrl* textCtrl =
dynamic_cast<wxTextCtrl*
>(
event.GetEventObject() );
584 wxCHECK( textCtrl, );
588 if( event.ShiftDown( ) )
595 if( event.ShiftDown( ) )
599 if( event.GetWheelRotation() >= 0 )
603 textCtrl->GetValue() )
606 curr_value_mm += step_mm;
607 curr_value_mm = std::max( -
MAX_OFFSET, curr_value_mm );
608 curr_value_mm = std::min( curr_value_mm,
MAX_OFFSET );
641 m_spaceMouse->SetFocus(
static_cast<bool>( aEvent.GetInt() ) );
658 if( aReloadRequired )
676 static_cast<DIALOG_SHIM*
>( kiwayHolder )->OnModify();
constexpr EDA_IU_SCALE pcbIUScale
constexpr EDA_IU_SCALE unityScale
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap, int aMinHeight)
#define RANGE_SCALE_3D
This defines the range that all coord will have to be rendered.
constexpr BOX2I KiROUND(const BOX2D &aBoxD)
Container for design settings for a BOARD object.
void SetEnabledLayers(const LSET &aMask)
Change the bit-mask of enabled layers to aMask.
int GetBoardThickness() const
The full thickness of the board including copper and masks.
void SetBoardThickness(int aThickness)
Manage layers needed to make a physical board.
void RemoveAll()
Delete all items in list and clear the list.
void BuildDefaultStackupList(const BOARD_DESIGN_SETTINGS *aSettings, int aActiveCopperLayersCount=0)
Create a default stackup, according to the current BOARD_DESIGN_SETTINGS settings.
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
Implement a canvas based on a wxGLCanvas.
Handle view actions for various 3D canvases.
VECTOR3D m_Offset
3D model offset (mm)
VECTOR3D m_Rotation
3D model rotation (degrees)
VECTOR3D m_Scale
3D model scaling factor (dimensionless)
A mix in class which holds the location of a wxWindow's KIWAY.
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
HOLDER_TYPE GetType() const
static const LSET & FrontMask()
Return a mask holding all technical layers and the external CU layer on front side.
static const LSET & BackMask()
Return a mask holding all technical layers and the external CU layer on back side.
static const wxGLAttributes GetAttributesList(ANTIALIASING_MODE aAntiAliasingMode, bool aAlpha=false)
Get a list of attributes to pass to wxGLCanvas.
wxSpinButton * m_spinYrot
wxSpinButton * m_spinZrot
STD_BITMAP_BUTTON * m_bpvFront
wxSpinButton * m_spinXscale
wxSpinButton * m_spinYscale
wxSpinButton * m_spinXrot
wxBoxSizer * m_SizerPanelView
wxSpinButton * m_spinZoffset
wxStaticText * m_previewLabel
STD_BITMAP_BUTTON * m_bpvLeft
wxSpinButton * m_spinXoffset
wxSpinButton * m_spinYoffset
STD_BITMAP_BUTTON * m_bpSettings
STD_BITMAP_BUTTON * m_bpvRight
STD_BITMAP_BUTTON * m_bpvBodyStyle
PANEL_PREVIEW_3D_MODEL_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxTAB_TRAVERSAL, const wxString &name=wxEmptyString)
STD_BITMAP_BUTTON * m_bpvBack
wxSpinButton * m_spinZscale
STD_BITMAP_BUTTON * m_bpUpdate
STD_BITMAP_BUTTON * m_bpvTop
STD_BITMAP_BUTTON * m_bpvISO
STD_BITMAP_BUTTON * m_bpvBottom
wxString formatOffsetValue(double aValue)
void onMouseWheelRot(wxMouseEvent &event) override
void View3DSettings(wxCommandEvent &event) override
void onOpacitySlider(wxCommandEvent &event) override
void setBodyStyleView(wxCommandEvent &event) override
void onMouseWheelScale(wxMouseEvent &event) override
EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS m_initialRender
The 3d viewer Render initial settings (must be saved and restored)
void UpdateDummyFootprint(bool aRelaodRequired=true)
Copy shapes from the current shape list which are flagged for preview to the copy of footprint that i...
~PANEL_PREVIEW_3D_MODEL()
wxString formatScaleValue(double aValue)
void doIncrementRotation(wxSpinEvent &aEvent, double aSign)
void loadSettings()
Load 3D relevant settings from the user configuration.
void OnMenuEvent(wxMenuEvent &aEvent)
The TOOL_DISPATCHER needs these to work around some issues in wxWidgets where the menu events aren't ...
void onUnitsChanged(wxCommandEvent &aEvent)
void doIncrementOffset(wxSpinEvent &aEvent, double aSign)
BOARD_ADAPTER m_boardAdapter
PANEL_PREVIEW_3D_MODEL(wxWindow *aParent, PCB_BASE_FRAME *aFrame, FOOTPRINT *aFootprint, std::vector< FP_3DMODEL > *aParentModelList)
PCB_BASE_FRAME * m_parentFrame
void SetEmbeddedFilesDelegate(EMBEDDED_FILES *aDelegate)
EDA_3D_CANVAS * m_previewPane
void doIncrementScale(wxSpinEvent &aEvent, double aSign)
void updateOrientation(wxCommandEvent &event) override
It will receive the events from editing the fields.
wxString formatRotationValue(double aValue)
void onMouseWheelOffset(wxMouseEvent &event) override
std::unique_ptr< NL_FOOTPRINT_PROPERTIES_PLUGIN > m_spaceMouse
FOOTPRINT * m_dummyFootprint
TRACK_BALL m_trackBallCamera
void onPanelShownEvent(wxCommandEvent &aEvent)
void SetSelectedModel(int idx)
Set the currently selected index in the model list so that the scale/rotation/offset controls can be ...
std::vector< FP_3DMODEL > * m_parentModelList
EDA_UNITS m_userUnits
Index into m_parentInfoList.
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
virtual BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Return the BOARD_DESIGN_SETTINGS for the open project.
virtual COMMON_SETTINGS * GetCommonSettings() const
static S3D_CACHE * Get3DCacheManager(PROJECT *aProject, bool updateProjDir=false)
Return a pointer to an instance of the 3D cache manager.
EDA_UNITS GetUserUnits() const
A modified version of the wxInfoBar class that allows us to:
An extension of WX_TEXT_ENTRY_DIALOG that uses UNIT_BINDER to request a dimension (e....
int GetValue()
Return the value in internal units.
static constexpr EDA_ANGLE ANGLE_0
@ TOP_BOTTOM
Flip top to bottom (around the X axis)
KICOMMON_API double DoubleValueFromString(const EDA_IU_SCALE &aIuScale, EDA_UNITS aUnits, const wxString &aTextValue, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
Convert aTextValue to a double.
KICOMMON_API wxString GetText(EDA_UNITS aUnits, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
Get the units string for a given units type.
KICOMMON_API wxFont GetStatusFont(wxWindow *aWindow)
Declaration of the cogl_att_list class.
static double rotationFromString(const wxString &aValue)
Ensure -MAX_ROTATION <= rotation <= MAX_ROTATION.
#define OFFSET_INCREMENT_MM_FINE
#define OFFSET_INCREMENT_MIL
#define ROTATION_INCREMENT_FINE
#define OFFSET_INCREMENT_MM
#define ROTATION_INCREMENT
#define OFFSET_INCREMENT_MIL_FINE
#define SCALE_INCREMENT_FINE
#define PANEL_PREVIEW_3D_MODEL_ID
PGM_BASE & Pgm()
The global program "get" accessor.
T * GetAppSettings(const char *aFilename)
bool preview_show_board_body