اضافه شدن قابلیت مقایسه شماتیک
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
"""Reuse the parser's resource boundary, geometry model and SVG serializer."""
|
||||
from . import parse_task # Sets the same subprocess resource limits, without running it.
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from .documents import parse_document
|
||||
from .diff import compare_documents
|
||||
from .parser.record_decoder import ParseError
|
||||
from .render import svg_document
|
||||
|
||||
|
||||
def run():
|
||||
source,destination,_,identifier=sys.argv[1:]
|
||||
dest=Path(destination)
|
||||
try:
|
||||
manifest=json.loads(Path(source).read_text())
|
||||
old=parse_document((dest/'old.SchDoc').read_bytes(),manifest['old_filename'],identifier+'-old',allow_empty=True)
|
||||
new=parse_document((dest/'new.SchDoc').read_bytes(),manifest['new_filename'],identifier+'-new',allow_empty=True)
|
||||
report=compare_documents(old,new)
|
||||
(dest/'data.json').write_text(json.dumps(report,ensure_ascii=False),encoding='utf-8')
|
||||
for side,doc in [('old',old),('new',new)]:
|
||||
annotations={c[f'{side}_id']:{'id':c['id'],'status':c['status'],'bounds':c[f'{side}_bounds']}
|
||||
for c in report['changes'] if c[f'{side}_id'] is not None}
|
||||
(dest/f'{side}.svg').write_bytes(svg_document(doc,annotations,id_prefix=side+'-'))
|
||||
result={'ok':True,'summary':{'summary':report['summary'],'total_changed':report['total_changed']}}
|
||||
except (ParseError,ValueError) as exc:
|
||||
result={'ok':False,'code':'invalid_schematic','message':str(exc)[:500]}
|
||||
except Exception:
|
||||
result={'ok':False,'code':'comparison_error','message':'The schematic comparison could not be completed'}
|
||||
(dest/'result.json').write_text(json.dumps(result),encoding='utf-8')
|
||||
|
||||
if __name__=='__main__':run()
|
||||
مرجع در شماره جدید
مسدود کردن کاربر