Skip to content

Commit a1997a9

Browse files
authored
remove colorlog ,fix duplicate end-point bug
1 parent de20eb8 commit a1997a9

File tree

5 files changed

+45
-64
lines changed

5 files changed

+45
-64
lines changed

plugins/FreeDiffPair/TrackExport.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,12 @@ def Update(self):
8585
ptype = track.ptype
8686
# 端点类型终点
8787
if ptype == self.TRACK_END_POINT:
88-
logger.info(f"(0x{id(tobj):X}).SetEnd ({self._x:+}, {self._y:+}) {tobj}")
88+
logger.info(f"(0x{id(tobj):X}).SetEnd ({self._x:+}, {self._y:+})")
8989
tobj.SetEnd(Vec2D(self._x, self._y))
9090
continue
9191
# 端点类型起点
9292
if ptype == self.TRACK_START_POINT:
93-
logger.info(f"(0x{id(tobj):X}).SetStart ({self._x:+}, {self._y:+}) {tobj}")
93+
logger.info(f"(0x{id(tobj):X}).SetStart ({self._x:+}, {self._y:+})")
9494
tobj.SetStart(Vec2D(self._x, self._y))
9595
continue
9696
logger.error(f"<0x{id(tobj):X}> 不存在的端点类型({ptype}) 不会执行任何操作.")

plugins/FreeDiffPair/VecSolver.py

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,6 @@ def GetCurrent(self):
8080
def __str__(self) -> str:
8181
return f"<{self.__class__.__name__} 0x{id(self):X} vec:{self.Count()}>"
8282

83-
def __iter__(self):
84-
return self._vecList.__iter__()
85-
8683

8784
def MakeVec2D(xy1xy2: Tuple[TPoint2i, TPoint2i]):
8885
ptStart, ptEnd = xy1xy2
@@ -131,7 +128,7 @@ def PolylineToVecList(pl: Polyline2D):
131128
def CheckPairPolar(
132129
referVec: Vec2D,
133130
diffPt2: Tuple[TPoint2i, TPoint2i],
134-
rad_tolerance=G_ANGLE_RAD_TOLERANCE,
131+
rad_tolerance=0.000001
135132
):
136133
logger.info("")
137134
logger.info(f"{CheckPairPolar.__name__}():")
@@ -141,7 +138,7 @@ def CheckPairPolar(
141138
logger.info(f" 参考 {referVec}")
142139
logger.info(f" 差分 {diffVec}")
143140

144-
ret = Vec2D.isParallel(diffVec, referVec, 0.000001)
141+
ret = Vec2D.isParallel(diffVec, referVec, rad_tolerance)
145142
assert ret == 1 or ret == -1, "错误(起点差分对不平行)"
146143

147144
if ret == -1:
@@ -164,7 +161,7 @@ def GenerateNewPointList(
164161
logger.info(f"{GenerateNewPointList.__name__}():")
165162

166163
vec_rotate = G_RAD_P90DEG if vec_distance > 0 else G_RAD_N90DEG
167-
logger.info("旋转极型:")
164+
logger.info("旋转极性:")
168165
logger.info(f" {vec_rotate}")
169166

170167
# 重置单端向量表指针
@@ -189,7 +186,7 @@ def GetJunction(a, b):
189186
# 从单端向量表转换指定距离的差分向量表
190187
logger.info("构造差分向量表:")
191188
vecList = VecList2D()
192-
for v in sVecList:
189+
for v in sVecList.GetList():
193190
vec = GetDiffLine(v, vec_distance, vec_rotate)
194191
vecList.Append(vec)
195192
logger.info(f" +向量{vecList.Count()} {vec}")
@@ -206,7 +203,9 @@ def GetJunction(a, b):
206203
# 后移向量表指针 到结尾时无法移动 增加终点 退出循环
207204
if vecList.pMoveNext() is False:
208205
# 增加终点 末尾向量的结束点
209-
ptList.Append(vec1.withBias)
206+
vecEnd = vec1.withBias
207+
ptList.Append(vecEnd)
208+
logger.info(f" +终点{ptList.Count()} ({vecEnd.x},{vecEnd.y})")
210209
break
211210
# 获取后一个向量 指针已经后移
212211
vec2 = vecList.GetCurrent()
@@ -238,22 +237,22 @@ def InstanceNewDiff(
238237
logger.info(f" +端点{pl.GetPointCount()} {diffStart[1]}")
239238

240239
# 交点列表的结构是 新生成差分线不包括起点 仅包括 所有交点 + 终点
241-
skip_obj = None
242-
if diffEnd is not None:
243-
skip_obj = ptList.GetList()[-1]
240+
ptEnd = ptList.GetList()[-1]
244241

245-
for pt in ptList:
246-
# 如果输入包括结尾参考差分线 需要先把交点列表里的终点去掉
247-
if pt is skip_obj:
242+
for pt in ptList.GetList():
243+
# 交点列表最后一点是终点 无需增加PCB线路
244+
if pt is ptEnd:
248245
continue
249-
250246
# 折线的终点 视为当前遍历交点的上一点
251247
prvePt = pl.GetEnd()
252248
assert prvePt.BindCount() == 1, f"错误(非法差分折线 终点绑定了{prvePt.BindCount()}个线路)"
253249
# 应用交点到折线终点
254250
prvePt.SetXY(pt.x, pt.y)
255251

256-
# 构建PCB线路 以交点为起点 终点任意
252+
# 构建PCB线路 以交点为起点 终点x+1
253+
# 本次循环PCB线路的终点 设计上由下一轮循环(下一个交点)来设置
254+
# 只有交点才能构建PCB线路 因为是由交点发起的 所以交点列表最后一点(终点)不能参与循环
255+
# 最后一个交点必须在完成本层循环后 在独立设置 与参考差分线合并或和交点列表最后一点合并
257256
pobj = PY_PCB_TRACK((board, pt, pt + Vec2D(1, 0)))
258257
pobj.setWidth(info.width)
259258
pobj.SetLayer(info.layer)
@@ -265,30 +264,37 @@ def InstanceNewDiff(
265264
StartBind = TPoint2i.bindInfo(pobj, TPoint2i.TRACK_START_POINT)
266265
EndBind = TPoint2i.bindInfo(pobj, TPoint2i.TRACK_END_POINT)
267266

268-
# 把起点 绑定到折线终点
267+
# 把线路起点 绑定到折线目前的终点
269268
prvePt.AppendBind(StartBind)
270-
# logger.info(f" 更新{pl.GetPointCount()} {prvePt}")
271269

272-
# 把终点 绑定到新的端点 后插入多边形末尾
273-
thisPt = TPoint2i(pt.x, pt.y, EndBind)
270+
# 把线路终点 绑定到新的端点 后插入多边形末尾
271+
thisPt = TPoint2i(pt.x + 1, pt.y, EndBind)
274272
pl.AddPoint(thisPt)
275273
logger.info(f" +端点{pl.GetPointCount()} {thisPt}")
276274

277275
continue
278276

279-
# 完成差分折线 结束于参考差分线(头)的终点
277+
# 设置终点 = 参考差分线(尾)的终点
280278
if diffEnd is not None:
281279
# 折线的终点 视为参考差分线(尾)的起点
282280
endPt = pl.GetEnd()
283281
assert endPt.BindCount() == 1, f"错误(非法差分折线 终点绑定了{endPt.BindCount()}个线路)"
284282

285283
# 参考差分线(尾)的起点 绑定到折线终点
286284
endPt.AppendBind(diffEnd[0].GetBindFirst())
287-
logger.info(f" 更新终点 {endPt}")
288285
# 参考差分线(尾)的终点 插入多边形末尾
289286
pl.AddPoint(diffEnd[1])
290287
logger.info(f" +终点{pl.GetPointCount()} {diffEnd[1]}")
291288

289+
# 设置终点 = 交点列表的最后一点
290+
else:
291+
endPt = pl.GetEnd()
292+
assert endPt.BindCount() == 1, f"错误(非法差分折线 终点绑定了{endPt.BindCount()}个线路)"
293+
# 在主循环中最后构建的PCB线路 依然保持在等待设置的状态
294+
# 交点列表的最后一点 视为终点 设置到折线终点的坐标
295+
endPt.SetXY(ptEnd.x,ptEnd.y)
296+
297+
292298
# 更新折线内所有端点到绑定的PCB线路
293299
logger.info("差分线段列表:")
294300
for pt in pl.GetList():
@@ -391,7 +397,7 @@ def GetInputTracks(board):
391397
)
392398

393399
# 增加交点锁定 新建PCB形状
394-
AddCuShapeTrackLock(refer_pl, infoResult, board)
395-
AddCuShapeTrackLock(diff_pl, infoResult, board)
400+
# AddCuShapeTrackLock(refer_pl, infoResult, board)
401+
# AddCuShapeTrackLock(diff_pl, infoResult, board)
396402

397403
return

plugins/FreeDiffPair/include.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
import os
2-
G_PLUGIN_LOG_FILE = os.path.join(os.path.dirname(__file__), "./plugin.log")
2+
G_PLUGIN_LOG_FILE = os.path.join(os.path.dirname(__file__), "./plugin.log")

plugins/FreeDiffPair/logger.py

Lines changed: 9 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
from typing import Dict, TextIO
2-
# import colorlog
1+
from typing import TextIO
2+
33
import logging
44
import sys
5-
import os
65

76

87
class color:
@@ -107,20 +106,9 @@ class BG:
107106
class DEFAULT_CONFIG:
108107
LOG_LEVEL = NOTSET
109108
DATE_FORMAT: str = "%y%m%d %H:%M:%S"
110-
FMT_STREAM: str = "%(log_color)s[%(asctime)s %(msecs)3d][%(levelname)1s]%(reset)s <%(name)s> %(message)s"
111-
FMT_FILE: str = "%(log_color)s[%(asctime)s.%(msecs)3d][%(levelname)1s]%(reset)s <%(name)s> %(message)s"
109+
FMT_STREAM: str = "[%(asctime)s %(msecs)3d][%(levelname)1s] <%(name)s> %(message)s"
110+
FMT_FILE: str = "[%(asctime)s.%(msecs)3d][%(levelname)1s] <%(name)s> %(message)s"
112111
STREAM: TextIO | None = sys.stdout
113-
COLORS_CONFIG: Dict[str, str] = {
114-
"#": "bg_light_green,black,bold",
115-
"F": "bg_red,black,bold",
116-
"C": "bg_purple,white,bold",
117-
"E": "red,bold",
118-
"W": "yellow",
119-
"I": "light_green",
120-
"D": "light_black",
121-
"T": "light_blue",
122-
}
123-
124112

125113
class EnhancedLogger(logging.Logger):
126114
class _RE_COLOR:
@@ -306,20 +294,11 @@ def addFileHandler(
306294
encoding: str = "UTF-8",
307295
fmt: str = DEFAULT_CONFIG.FMT_FILE,
308296
datefmt: str = DEFAULT_CONFIG.DATE_FORMAT,
309-
log_colors: Dict[str, str] = DEFAULT_CONFIG.COLORS_CONFIG,
310297
):
311298
handler = logging.FileHandler(filename=filename, mode=mode, encoding=encoding)
312299
handler.setLevel(self.getEffectiveLevel())
313300
handler.setFormatter(
314-
# colorlog.ColoredFormatter(
315-
# fmt=fmt,
316-
# datefmt=datefmt,
317-
# log_colors=log_colors,
318-
# )
319-
logging.Formatter(
320-
fmt=fmt,
321-
datefmt=datefmt,
322-
)
301+
logging.Formatter(fmt=fmt, datefmt=datefmt)
323302
)
324303

325304
for h in self.handlers:
@@ -337,19 +316,14 @@ def addStreamHandler(
337316
stream=DEFAULT_CONFIG.STREAM,
338317
fmt: str = DEFAULT_CONFIG.FMT_STREAM,
339318
datefmt: str = DEFAULT_CONFIG.DATE_FORMAT,
340-
log_colors: Dict[str, str] = DEFAULT_CONFIG.COLORS_CONFIG,
341319
):
342320
stdout_handler = logging.StreamHandler(stream)
343321
stdout_handler.setLevel(self.getEffectiveLevel())
322+
344323
stdout_handler.setFormatter(
345-
# colorlog.ColoredFormatter(
346-
# fmt=fmt,
347-
# datefmt=datefmt,
348-
# log_colors=log_colors,
349-
logging.Formatter(
350-
fmt=fmt,
351-
datefmt=datefmt,
352-
))
324+
325+
logging.Formatter(fmt=fmt, datefmt=datefmt)
326+
)
353327

354328
for h in self.handlers:
355329
if not isinstance(h, logging.StreamHandler):

plugins/FreeDiffPair/main.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import sys
44
import pcbnew
55
import timeit
6-
from .VecSolver import PluginMain
76
from .include import G_PLUGIN_LOG_FILE
7+
from .VecSolver import PluginMain
88
from .logger import getLogger
99

1010

11+
1112
logger = getLogger("main")
12-
logger.addFileHandler(G_PLUGIN_LOG_FILE)
13+
logger.addFileHandler(G_PLUGIN_LOG_FILE,'w')
1314
logger.debug(f"写入文件 {os.path.realpath(G_PLUGIN_LOG_FILE)} ")
1415
logger.debug("...\n\n")
1516

0 commit comments

Comments
 (0)