構造一貫解析ソフトSS7をPythonで実行する #1
構造一貫解析ソフト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