CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

LiDARで点群計測

2023-04-11 22:08:40 | Civil3D
DataLabs(本社:東京都中央区)も、2023年4月10日にiPhoneやiPadを使って、配筋検査を自動化する「Modely(モデリー)」の製品版を発売することになりました。
iPhone点群で配筋検査を自動化! 円形配筋にも対応できるDataLabsの「Modely」がリリース | 建設ITブログ

iPhone点群で配筋検査を自動化! 円形配筋にも対応できるDataLabsの「Modely」がリリース | 建設ITブログ

iPhoneなどのLiDARで配筋を点群計測し、クラウドで3D配筋モデル化。鉄筋ピッチやかぶり厚などを計測して配筋検査帳票を自動作成します。クラウド上で発注者とデータ共有する...

建設ITブログ | BIM、i-ConstructionからAI、ロボまでの最新情報

LiDARとは、iPhoneやiPadの上位機種に搭載された3Dスキャン装置で、5m程度離れたものまで点群計測することができます。

この点群をクラウドにアップロードし、検査範囲を画面上でクリックしていすると、その範囲内の配筋を検出して3Dモデルを自動作成します。

その3Dモデルから、鉄筋径や鉄筋ピッチなどを計測して設計値と比較し、配筋検査帳票を自動作成してくれるのです。

とのこと。

要するにiphone、ipadに搭載されている3Dスキャナーで点群データを取得して、3Dモデルを作成できるということだ。ただし5m離れた所までとのこと。

小規模の現場なら土木工事にも応用可能で、もちろんCivil3Dに点群データをインポートして製図できるはずだ。


Pythonでファイルの拡張子を変換

2023-04-11 03:07:58 | python
Pythonでファイル変換

任意のファイルを読み込んで他の拡張子に変えるPythonコードを書いて

以下は、Pythonを使ってファイルを読み込み、新しい拡張子に変換する簡単なコード例です。この例では、txtファイルをcsvファイルに変換しています。

import csv

# ファイルを開く
with open('input.txt', 'r') as input_file:
# 新しいファイル名を作成
output_file_name = 'output.csv'
# 新しいファイルを作成して書き込む
with open(output_file_name, 'w', newline='') as output_file:
writer = csv.writer(output_file)
# 元のファイルを1行ずつ読み込み、新しいファイルに書き込む
for line in input_file:
row = line.strip().split(' ') # 例えば、タブ区切りのファイルをcsvに変換する場合
writer.writerow(row)
この例では、input.txtという名前のファイルを開いて、output.csvという名前の新しいファイルを作成し、それぞれのファイルに対してファイル操作を行っています。csvモジュールを使用して、csvファイルを作成していますが、他の拡張子に変更する場合は、適切なモジュールを使用する必要があります。また、ファイルの読み込みと書き込みに関しては、プログラムを実行する環境によって異なるため、必要に応じて変更する必要があります。

ん?何だか頼んでもいない余計なことまで書いているようだな。
お節介というか、いらんことすんなや。


【Pythonコードの置換 】任意のPythonコード内の文字を置換してからそのプログラムを実行する方法は?

2023-04-11 02:38:41 | python
【Pythonコードの置換】

任意のPythonプログラム内の文字を最初に他の文字に置き換えてから、そのプログラムを実行するPythonプログラムを書いて。

Pythonプログラム内の文字を置換して実行するために、以下の手順に従います。

ファイルの読み込み: open() 関数を使用してファイルを読み込みます。

with open('file.py', 'r') as f:
code = f.read()

文字列の置換: replace() メソッドを使用して、文字列内の指定された文字を置換します。

code = code.replace('old_text', 'new_text')

ファイルの書き込み: open() 関数を使用して、置換されたコードをファイルに書き込みます。

with open('file.py', 'w') as f:
f.write(code)

コードの実行: exec() 関数を使用して、置換されたコードを実行します。

exec(code)

以上の手順をまとめると、次のようになります。

with open('file.py', 'r') as f:
code = f.read()

code = code.replace('old_text', 'new_text')

with open('file.py', 'w') as f:
f.write(code)

exec(code)

ただし、この方法はコードのセキュリティを損なう可能性があるため、注意して使用する必要があります。また、適切な置換を行わない場合、プログラムの動作が変わってしまうことがあるため、慎重に検討する必要があります。

何が言いたいのかというと、
「以下のPythonプログラム内のjpyを他の文字(例えばgbp)に置き換えてから、このプログラムを実行したい。そのためにはどういうプログラムを書けば良いか?」
ということだ。
以下のPythonプログラムのファイル名をfx.pyとすると、
with open('fx.py', 'r') as f:
code = f.read()

code = code.replace('jpy', 'gbp')

with open('fx.py', 'w') as f:
f.write(code)

exec(code)
となる。

import pandas as pd
import yfinance as yf
import datetime as dt

jpy = yf.download(tickers='JPY=X',
start = '2021-01-01',
end=dt.datetime.today(),
interval='1wk' )

jpy['Performance(%)'] = (jpy['Adj Close']/jpy['Adj Close'].iloc[0]-1)*100

fig = make_subplots(rows = 2, cols=1,
vertical_spacing = 0.1,
shared_xaxes=True,
subplot_titles=['<b>USDJPY Weekly Chart', '<b>Performance(%)'])
fig.update_layout(xaxis_rangeslider=dict(visible=False))

fig.update_layout(autosize=False,
height=750,
width=900,
hovermode = 'closest',
yaxis = dict(title = 'USDJPY Rate'),
plot_bgcolor = 'white')
fig.add_trace(go.Candlestick(
x=jpy.index,
open=jpy['Open'],
high=jpy['High'],
low=jpy['Low'],
close=jpy['Adj Close'],
name = 'USDJPY'))
fig.add_trace(go.Scatter(x = jpy.index,
y = jpy['Performance(%)'],
name='Performance(%)',
line = dict(color = 'blue')),
row = 2,
col = 1)
fig.add_annotation(text='<b>2021年以降<br>対米ドルで円安が急速に進行中',
showarrow=False, x=dt.datetime(2021,10,31),
y=135,
align='left', font=dict(size=18,color='black'))
fig.show()

【後談】
tickers='JPY=X'のJPYはinput関数を使って入力を求めるように書き換えれば置換することができたが、jpyの部分は同じ様にinput関数で入力を求めて置換することがどうしてもできなかった。
それをどうすれば解決できるかChatGPTに質問してみたというわけだ。

ちなみにこのプログラムがエラー無しで実行可能であるならば、置換前の元のプログラムは破壊されて機能しないリスクがあるらしい。