Spaces:
Sleeping
Sleeping
Download document/equations.py from gui-sparim/teste_docs: direct link, hf CLI and curl.
- Browser
- Download file 4.13 kB
-
https://huggingface.co/spaces/gui-sparim/teste_docs/resolve/main/document/equations.py
- Command line
-
hf download hf://spaces/gui-sparim/teste_docs/document/equations.py
-
curl -L -o equations.py https://huggingface.co/spaces/gui-sparim/teste_docs/resolve/main/document/equations.py
4.13 kB
| """Editable Word equations with compact legends for cost and depreciation.""" | |
| from docx.oxml import OxmlElement | |
| from docx.oxml.ns import qn | |
| from docx.enum.text import WD_ALIGN_PARAGRAPH | |
| from docx.shared import Pt, RGBColor | |
| from .formatters.paragraph import criar_paragrafo_formatado | |
| def _run(text, variable=False): | |
| run = OxmlElement('m:r') | |
| props = OxmlElement('m:rPr') | |
| style = OxmlElement('m:sty'); style.set(qn('m:val'), 'i' if variable else 'p') | |
| props.append(style); run.append(props) | |
| font_props = OxmlElement('w:rPr') | |
| font = OxmlElement('w:rFonts') | |
| font.set(qn('w:ascii'), 'Cambria Math'); font.set(qn('w:hAnsi'), 'Cambria Math') | |
| font_props.append(font) | |
| size = OxmlElement('w:sz'); size.set(qn('w:val'), '28'); font_props.append(size) | |
| run.append(font_props) | |
| value = OxmlElement('m:t'); value.text = text | |
| value.set(qn('xml:space'), 'preserve'); run.append(value) | |
| return run | |
| def _fraction(numerator, denominator): | |
| fraction = OxmlElement('m:f') | |
| for name, children in [('num', numerator), ('den', denominator)]: | |
| node = OxmlElement('m:' + name) | |
| for child in children: node.append(child) | |
| fraction.append(node) | |
| return fraction | |
| def _script(kind, base, script): | |
| node = OxmlElement('m:' + kind) | |
| for name, child in [('e', base), ('sup' if kind=='sSup' else 'sub', script)]: | |
| content = OxmlElement('m:' + name); content.append(child); node.append(content) | |
| return node | |
| def _formula_blocks(doc, formulas): | |
| for index,(elements, legend) in enumerate(formulas): | |
| paragraph = doc.add_paragraph() | |
| paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER | |
| paragraph.paragraph_format.space_before = Pt(10) | |
| paragraph.paragraph_format.space_after = Pt(4) | |
| paragraph.paragraph_format.keep_with_next = True | |
| paragraph.paragraph_format.keep_together = True | |
| math = OxmlElement('m:oMath') | |
| for element in elements: math.append(element) | |
| paragraph._p.append(math) | |
| note = criar_paragrafo_formatado(doc,legend,tamanho=8,cor=RGBColor(70,70,70), | |
| alinhamento=WD_ALIGN_PARAGRAPH.LEFT,espaco_depois=8) | |
| note.paragraph_format.keep_together = True | |
| note.paragraph_format.keep_with_next = index < len(formulas)-1 | |
| def cost_equations(doc): | |
| _formula_blocks(doc,[ | |
| ([_run('CUNIT'),_run(' = '),_run('CUB'),_run(' × '), | |
| _fraction([_run('% CUB')],[_run('100')])], | |
| 'CUNIT: custo unitário após a adequação (R$/m²); CUB: custo unitário básico histórico (R$/m²); % CUB: percentual de adequação aplicado ao CUB.'), | |
| ([_run('VC'),_run(' = '),_run('A',True),_run(' × '),_run('CUNIT'),_run(' × (1 + '), | |
| _fraction([_run('BDI')],[_run('100')]),_run(') × '),_script('sSub',_run('K',True),_run('d',True))], | |
| 'VC: valor da construção após a depreciação (R$); A: área de cálculo (m²); CUNIT: custo unitário após a adequação (R$/m²); BDI: benefícios e despesas indiretas, em percentual; Kd: fator remanescente com consideração do valor residual.'), | |
| ]) | |
| def depreciation_equations(doc): | |
| formulas = [ | |
| ([_run('Ross',True), _run(' = '), _fraction([_run('q',True), _run(' + '), _script('sSup',_run('q',True),_run('2'))],[_run('2')])], | |
| 'Ross: parcela de depreciação associada à idade; q: fração de vida útil consumida, obtida dividindo o percentual de vida útil consumida por 100.'), | |
| ([_run('K',True),_run(' = 1 − (1 − '),_run('Ross',True),_run(') × (1 − '),_run('H',True),_run(')')], | |
| 'K: coeficiente de depreciação de Ross-Heidecke; H: coeficiente correspondente ao estado de conservação adotado.'), | |
| ([_script('sSub',_run('K',True),_run('d',True)),_run(' = '),_run('R',True),_run(' + (1 − '),_run('K',True),_run(') × (1 − '),_run('R',True),_run(')')], | |
| 'Kd: fator remanescente aplicado ao custo de reedição, com consideração do valor residual; R: valor residual em forma decimal (percentual ÷ 100); K: coeficiente de depreciação.'), | |
| ] | |
| _formula_blocks(doc,formulas) | |