0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(未)「(2025)令和7年一級建築士試験学科Ⅳ(構造)〔No.5〕」をsympyのTrussで作図しました。

Last updated at Posted at 2025-09-04

・Trussで作図しました。

目次

オリジナル

(2025-09-04) 未
・過去問.com 一級建築士 様
>令和6年(2024年)〜平成27年(2015年)まで無料で公開しています。

しばらくは 公式ホームページ で

(2025)令和7年一級試験問題〔No.5〕と正答肢

https://www.jaeic.or.jp/shiken/1k/1k-mondai.files/1k-2025-1st-gakka4_5.pdf#page=6
https://www.jaeic.or.jp/shiken/1k/1k-mondai.files/1k-2025-1st-gokakukijun.pdf
https://www.jaeic.or.jp/smph/shiken/1k/1k-mondai.html

sympyで(オリジナル 様の方法を参考に)

ver0.1

(2025-09-04) 未

sympyのTrussで

・以下、資源の無駄使いカモ。

ver1.3

# ver1.3
from sympy.physics.continuum_mechanics.truss import Truss
from sympy import *
var('P')
var('L,l,EA',positive=True)  
def renamed_only(d, rename_map):
    """
    rename_map に従ってリネームされたキーのみを抽出し、
    元の順序(rename_map のキー順)で返す。
    Parameters:
    - d (dict): 元の辞書
    - rename_map (dict): {"旧キー": "新キー"} 形式
    Returns:
    - dict: リネーム後の辞書(リネーム対象のみ)
    """
    renamed = {
        rename_map[k]: d[k]
        for k in rename_map
        if k in d
    }
    return renamed
# -------------------------------------------------------------------------------------
def myTrussAB(l):
    def myAdd_member(*args):
        def make_triples(s):
            return (s,s[0],s[1])
        for s in args:
            t.add_member(make_triples(s))      
    t = Truss()
    t.add_node     (('7',0,3*l),('8',l,3*l),  \
                    ('5',0,2*l),('6',l,2*l),  \
                    ('3',0,1*l),('4',l,1*l),  \
                    ('1',0,0  ),('2',l,0  )) 
    myAdd_member   ( '78',           \
                     '57','58','68', \
                     '56',           \
                     '35','36','46', \
                     '34',           \
                     '13','14','24', \
                     '12')  
    t.apply_support(('1','pinned'),  \
                    ('2','roller'))
    t.apply_load   (('7',3*P,0))  
    return t
myTrussAB(1).draw().show()         # AB_作図用のため(l=1)
t_AB=myTrussAB(l);t_AB.solve()     # AB_計算のみ
# -------------------------------------------------------------------------------------
def myTrussCD(l):
    def myAdd_member(*args):
        def make_triples(s):
            return (s,s[0],s[1])
        for s in args:
            t.add_member(make_triples(s))      
    t = Truss()
    t.add_node     (('7',0,3*l),('8',l,3*l),  \
                    ('5',0,2*l),('6',l,2*l),  \
                    ('3',0,1*l),('4',l,1*l),  \
                    ('1',0,0  ),('2',l,0  )) 
    myAdd_member   ( '78',           \
                     '57','58','68', \
                     '56',           \
                     '35','36','46', \
                     '34',           \
                     '13','14','24', \
                     '12')  
    t.apply_support(('1','pinned'),  \
                    ('2','roller'))
    t.apply_load   (('7',P,0),       \
                    ('5',P,0),       \
                    ('3',P,0))  
    return t
myTrussCD(1).draw().show()         # CD_作図用のため(l=1)
t_CD=myTrussCD(l);t_CD.solve()     # CD_計算のみ
# -------------------------------------------------------------------------------------
print("#",renamed_only({k:v.simplify() for k,v in t_AB.internal_forces.items()} , \
                       {'35':'NA','36':'NB'}))    
print("#",renamed_only({k:v.simplify() for k,v in t_CD.internal_forces.items()} , \
                       {'35':'NC','36':'ND'}))    
# {'NA': 3*P, 'NB': 3*sqrt(2)*P}
# {'NC': P, 'ND': 2*sqrt(2)*P}

正答肢 4

・縦横比は1:1でありません。
111.png

222.png

sympyのTrussをChatGPT先生に丸投げ


・(本日の)ChatGPT先生の回答



いつもの? sympyの実行環境と 参考のおすすめです。

(テンプレート)

いつもと違うおすすめです。

Qiita内

・類題が多数あります。

sympyのdoc

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?