migrate Board creation from Project > API. Project will be either removed or converted to PythonFeature if proper App::Part emulation can be firgured out.

This commit is contained in:
Morgan 'ARR\!' Allen 2025-07-10 11:41:33 -07:00
parent d2bee101ea
commit bdd7ea4684
2 changed files with 21 additions and 12 deletions

View file

@ -5,12 +5,14 @@ from kipy import KiCad
from kipy.proto.common.types import DocumentType
from . import settings
from . import board as Board
from .bases import BaseObject, BaseViewProvider
class APIObject(BaseObject):
TYPE = 'KiConnect::API'
def __init__(self, feature):
self.boards = {}
self.kicad = KiCad()
super(APIObject, self).__init__(feature)
@ -23,19 +25,32 @@ class APIObject(BaseObject):
self.ping_connection(feature)
self.kicad_board = self.kicad.get_board()
self.polygons = Board.extract_polygons(self.kicad_board)
for polygon in self.polygons:
board, polygon_id = Board.makeBoard(self.feature.getParent(), self.kicad_board, polygon)
self.boards[polygon_id] = board
def onDocumentRestored(self, feature):
super(APIObject, self).onDocumentRestored(feature)
self.kicad = KiCad()
self.ping_connection(feature)
if self.is_connected:
self.kicad_board = self.kicad.get_board()
self.polygons = Board.extract_polygons(self.kicad_board)
parent = feature.getParent()
if not parent: return
'''
# XXX This gets all of the KiConnect::Board features but then does nothing with them
# future multi-board support?
boards = [ board for board in parent.Group if hasattr(board, 'Type') and board.Type == 'KiConnect::Board' ]
'''
@property
def is_connected(self):
@ -45,6 +60,11 @@ class APIObject(BaseObject):
return self.feature.Connected
def get_polygon(self, polygon_id):
for p in self.polygons:
if p.id.value == polygon_id:
return p
def ping_connection(self, feature):
'''
Ping the KiCAD API to determine if it's connected

View file

@ -28,17 +28,6 @@ class Project:
self.API = api.makeAPI(self.feature)
if self.API.Proxy.is_connected and self.API.DocumentCount > 0:
kicad_board = self.API.Proxy.kicad.get_board()
polygons = Board.extract_polygons(kicad_board)
for polygon in polygons:
self.board = Board.makeBoard(self.feature, kicad_board, polygon)
#self.copper = Copper(kicad_board, self.board)
#self.board.feature.addObject(self.copper.feature)
feature.ProcessTime = time.time() - start_time
App.ActiveDocument.recompute()