💬

構造一貫解析ソフトSS7をPythonで実行する #1

2023/12/17に公開

構造一貫解析ソフトSS7をPythonで実行する #1 概要

SS7を外部ソフトから実行する手段は現在2種ある。どちらの方法にせよ、csvを介してSS7の「解析結果の確認」と「入力データ書換え」を行い、繰返し計算をすることで最適化を目指す。

コマンド実行の使用例については以下のYoutubeアカウントの方が示されているので、参考にされたい。https://www.youtube.com/@auto-designer4641/videos[SS7 Op.コマンド実行]『SS7』の機能を外部から実行するオプションソフトウェア『Super Build/SS7 Op.コマンド実行』 | 建築構造計算ソフトウェアのユニオンシステム (unions.co.jp)

[SS7 Op.Python実行]『SS7』の機能をPython言語から実行するオプションソフトウェア『Super Build/SS7 Op.Python実行』 | 建築構造計算ソフトウェアのユニオンシステム (unions.co.jp)

Op.コマンド実行とOp.Python実行の違いを確認する。2つの機能についてはユニオンシステム(株)にやや詳しいマニュアルPDFがある。ユーザーはダウンロードして確認できる。

# CSV入力データ「c:\input.csv」からSS7データ「C:\aaa\bbb.ikn」を新規作成し、計算を行い成功したら結果CSVを出力して
保存します。
Start( "1.1.1.15" )
# データの変数を宣言する
var Ss7Data Data
# エラー情報の変数を宣言する
var ErrInfo err
# CSV入力データからSS7のデータを作成する
CreateDataCsv( "c:\input.csv", "c:\aaa\bbb.ikn", 2 ) # 2=中断する
# エラー情報を取得する
err = GetLastError()
# CSV新規作成できたことの判定
if ( err.IsOK() == true )
{
    Echo( "CSV新規作成が成功しました" )
    # データを開く
    Data = Open( "c:\aaa\bbb.ikn", 1, 3 ) # 1=変換して開く 3=物件データは開かない

    # データが正しく開けたことの判定
    if ( IsNull( Data ) == false )
    {
        # 計算実行
        Data.Calculate( "結果1", "必要保有水平耐力" )
        # エラー情報を取得する
        err = GetLastError()
        # 計算が正しく実行できたことの判定
        if ( err.IsOK() == true )
        {
             Echo( "計算が成功しました" )
            # 計算結果データを取得する
            var Ss7Result res = Data.GetResultData( "結果1" )
            # 結果CSVをエクスポートする
            res.ExportResultCsv( "7.2.1.RC梁;13.4.必要保有水平耐力比較表",
            "c:\aaa\bbb.ikn\Result.csv", 2, 1, 1 )
            # 2=中断する 1=省略する 1=全部材出力
            err = GetLastError()
            # 結果CSVのエクスポートが正しく実行できたことの判定
            if ( err.IsOK() == true )
            {
                Echo( "結果CSVのエクスポートが成功しました" )
            }
            else
            {
            Echo( "結果CSVのエクスポートが失敗しました" )
            }
            # データを保存する
            Data.Save()
            # データを閉じる
            Data.Close( 1 ) # 1=保存する
        }
        else
        {
            Echo( "計算が失敗しました" )
            # データを閉じる
            Data.Close( 2 ) # 2=保存しない
        }
    }
}

Op.コマンド実行のコマンド※マニュアル1.2.CSV新規作成と計算実行および結果CSV出力に記載あり

SS7 Op.コマンド実行とする場合は コードを.scmd(例:test:scmd)で保存し、ダブルクリックやプログラムから実行することになる。Op.コマンド実行をPythonから実行する場合は以下のように実行する。※test.scmdはフルパスでないとだめかも。

import subprocess
result = subprocess.run('test.scmd', shell=True)
# CSV入力データ「C:\input.csv」からSS7データ「C:\UsrData\Sample2.ikn」を新規作成し,計算を行い成功したら結果CSVを出力して
保存します。
from Python import Ss7Python as Cmd
Cmd.Init()
Cmd.Start( "1.1.1.19", 1 ) # 1=ログファイルをクリアする
# CSV入力データからSS7のデータを作成する
Cmd.CreateDataCsv( "C:\\input.csv", "C:\\UsrData\\Sample2.ikn", 2 ) # 2=中断する
# エラー情報を取得する
err = Cmd.GetLastError()
# CSV新規作成できたことの判定
if ( err.IsOK() == True ):
    print( "CSV新規作成が成功しました" )
    # データを開く
    Data = Cmd.Open( "C:\\UsrData\\Sample2.ikn", 1, 3 ) # 1=変換して開く 3=物件データは開かない
    # データが正しく開けたことの判定
    if ( Data is not None ):
        # 計算実行
        Data.Calculate( "結果1", "必要保有水平耐力" )
        # エラー情報を取得する
        err = Cmd.GetLastError()
        # 計算が正しく実行できたことの判定
        if ( err.IsOK() == True ):
            print( "計算が成功しました" )
            # 計算結果データを取得する
            res = Data.GetResultData( "結果1" )
            # 結果CSVをエクスポートする
            res.ExportResultCsv( "7.2.1.RC梁;13.4.必要保有水平耐力比較表",
            "C:\\UsrData\\Sample2.ikn\\Result.csv", 2, 1, 1 )
            # 2=中断する 1=省略する 1=全部材出力
            err = Cmd.GetLastError()
            # 結果CSVのエクスポートが正しく実行できたことの判定
            if ( err.IsOK() == True ):
                print( "結果CSVのエクスポートが成功しました" )
        else:
            print( "結果CSVのエクスポートが失敗しました" )
            # データを閉じる
            Data.Close( 1 ) # 1=保存する
    else:
        print( "計算が失敗しました" )
        # データを閉じる
        Data.Close( 2 ) # 2=保存しない
else:
    print( "CSV新規作成が失敗しました" )
Cmd.End( 1 ) # 1=保存して終了

Op.Python実行のスクリプト例※マニュアル1.2.CSV新規作成と計算実行および結果CSV出力に記載あり。

上記のように、現状どちらの方法もPythonで実行できる。Op.Python実行は今後有料化される可能性があり、会社の事情でOpライセンスを購入できなくなる可能性があるならばOp.コマンド実行に慣れたほうがいいかもしれない。Op.Python実行の場合はPythonでテキストファイル(scmd)の書き換えを行う手間がなくなり、若干楽に実行できる。今回はOp.Python実行でSS7を実行する例を示す。

この後の章ではYoutubeアカウント:Auto-Designer様の動画 SuperBuild/SS7 鉄骨小梁の超楽チン設計に近い操作を行う。

以上

Discussion