python + sympy로 기계 설계 계산서 자료 작성
동기 부여
저는 보통 jupyter를 사용하여 일을 하고 있는 기계계 엔지니어입니다만, 현재 소속되어 있는 회사에서는 종이에서의 출력이 요구되고 있어 이것의 대응에 고민하고 있습니다.
jupyter로 회사 지정의 포맷에 종이로 출력하는 것은 어렵기 때문에, 현재는, MS오피스에 jupyter에서의 검토 결과를 붙여 대응하고 있습니다만, 설계 계산서의 수식계가 멘드 굵었기 때문에 , 파이썬의 sympy에서 시도했습니다.
환경
이마즈키 포인트
jupyter의 코드에서 "\sigma + tab"에서 σ를 사용할 수 있습니다. 편리!
구그라면 곧바로 발견된다고 생각했는데, 좀처럼 발견되지 않았다. . .
결과적으로 단위를위한 기호를 만들고 *로 연결하면 OK
LaTex의 커맨드가 대체로 사용할 수 있는 것을 알았다. 아래 사이트가 잘 정리되어 GOOD!
htp://w w1. Y. jp / ~ 요카 / ㅁ X / ㅁ x. HTML
했던 일
집중 하중 외팔보의 계산을 해 보았습니다. 하중, 길이, 단면계수를 입력하면 계산서에서 사용할 수 있는 출력을 출력하고 있습니다. jupyter로 가져오고 사용한다고 가정합니다.
beam.pyfrom sympy import Symbol,pi,Eq
from IPython.display import display
from sympy.interactive import printing
printing.init_printing(use_latex=True)
#使用するシンボルはグローバルで定義
σmax= Symbol('σ_max')
eσmax= Symbol('σ_max')
MPa= Symbol('(MPa)')
Mmax= Symbol('M_max')
eMmax= Symbol('M_max')
N_mm= Symbol('(N \cdot mm)')
Z= Symbol('Z')
eZ= Symbol('Z')
mm3= Symbol('({mm^3})')
F= Symbol('F')
eF= Symbol('F')
N= Symbol('(N)')
L= Symbol('L')
eL= Symbol('L')
mm= Symbol('(mm)')
paramater_dict= {
"σmax":["曲げ応力","MPa"],
"Mmax":["曲げモーメント","N_mm"],
"Z":["断面係数","mm3"],
"F":["荷重","N"],
"L":["梁の長さ","mm"]
}
def siki_hyoji(atai,unit_opp = True):
"""sympyで式を表示する関数です
( a = b [mm] の形で返す)
Arguments:
atai {str} -- パラメータ名
Keyword Arguments:
unit_opp {bool} -- 単位の表示有無 (default: {True}単位を表示する)
Returns:
[sympy] -- sympyの式をかえします
"""
ns = globals()
hidari = ns["e"+atai]
migi = ns[atai]
unit = ns[paramater_dict[atai][1]]
if unit_opp == True:
siki = Eq(hidari,migi*unit)
else:
siki = Eq(hidari,migi)
return siki
def katamochi_bari(paramater):
"""片持ち梁の計算書ネタを作成します[荷重,長さ,断面係数]
Arguments:
paramater {list} -- [荷重,長さ,断面係数]
"""
global σmax,Mmax,Z,F,L #global変数を編集可能にする
print("曲げ応力は以下の式で表される")
σmax = Mmax/Z
Mmax = F*L
display(siki_hyoji("σmax",False),siki_hyoji("Mmax",False))
print("各パラメータの値を以下に示す")
F = paramater[0]
L = paramater[1]
Z = paramater[2]
display(siki_hyoji("F"),siki_hyoji("L"),siki_hyoji("Z"))
print("以上より")
Mmax = F*L
σmax = Mmax/Z
σmax = round(σmax)
display(siki_hyoji("Mmax"),siki_hyoji("σmax"))
실행 방법
jupyter 파일을 같은 폴더에 beam.py를 놓습니다.
다음과 같이 실행하면 계산서의 재료가 완성!
소스 코드
sympy에 대한 symbol을 만드는 것이 어색했기 때문에 utility.py에서 매개 변수 사전에서 symbol을 만들 수 있습니다.
혼자
앞으로 확장해 나가면 작업이 편해질 것 같다.
일본어 변수, 괜찮아. . . 하지만 사용합니다.
이번이, 첫 투고입니다!
Reference
이 문제에 관하여(python + sympy로 기계 설계 계산서 자료 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/myao9494/items/211520600d278e903a7f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from sympy import Symbol,pi,Eq
from IPython.display import display
from sympy.interactive import printing
printing.init_printing(use_latex=True)
#使用するシンボルはグローバルで定義
σmax= Symbol('σ_max')
eσmax= Symbol('σ_max')
MPa= Symbol('(MPa)')
Mmax= Symbol('M_max')
eMmax= Symbol('M_max')
N_mm= Symbol('(N \cdot mm)')
Z= Symbol('Z')
eZ= Symbol('Z')
mm3= Symbol('({mm^3})')
F= Symbol('F')
eF= Symbol('F')
N= Symbol('(N)')
L= Symbol('L')
eL= Symbol('L')
mm= Symbol('(mm)')
paramater_dict= {
"σmax":["曲げ応力","MPa"],
"Mmax":["曲げモーメント","N_mm"],
"Z":["断面係数","mm3"],
"F":["荷重","N"],
"L":["梁の長さ","mm"]
}
def siki_hyoji(atai,unit_opp = True):
"""sympyで式を表示する関数です
( a = b [mm] の形で返す)
Arguments:
atai {str} -- パラメータ名
Keyword Arguments:
unit_opp {bool} -- 単位の表示有無 (default: {True}単位を表示する)
Returns:
[sympy] -- sympyの式をかえします
"""
ns = globals()
hidari = ns["e"+atai]
migi = ns[atai]
unit = ns[paramater_dict[atai][1]]
if unit_opp == True:
siki = Eq(hidari,migi*unit)
else:
siki = Eq(hidari,migi)
return siki
def katamochi_bari(paramater):
"""片持ち梁の計算書ネタを作成します[荷重,長さ,断面係数]
Arguments:
paramater {list} -- [荷重,長さ,断面係数]
"""
global σmax,Mmax,Z,F,L #global変数を編集可能にする
print("曲げ応力は以下の式で表される")
σmax = Mmax/Z
Mmax = F*L
display(siki_hyoji("σmax",False),siki_hyoji("Mmax",False))
print("各パラメータの値を以下に示す")
F = paramater[0]
L = paramater[1]
Z = paramater[2]
display(siki_hyoji("F"),siki_hyoji("L"),siki_hyoji("Z"))
print("以上より")
Mmax = F*L
σmax = Mmax/Z
σmax = round(σmax)
display(siki_hyoji("Mmax"),siki_hyoji("σmax"))
jupyter 파일을 같은 폴더에 beam.py를 놓습니다.
다음과 같이 실행하면 계산서의 재료가 완성!
소스 코드
sympy에 대한 symbol을 만드는 것이 어색했기 때문에 utility.py에서 매개 변수 사전에서 symbol을 만들 수 있습니다.
혼자
앞으로 확장해 나가면 작업이 편해질 것 같다.
일본어 변수, 괜찮아. . . 하지만 사용합니다.
이번이, 첫 투고입니다!
Reference
이 문제에 관하여(python + sympy로 기계 설계 계산서 자료 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/myao9494/items/211520600d278e903a7f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(python + sympy로 기계 설계 계산서 자료 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/myao9494/items/211520600d278e903a7f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)