goo blog サービス終了のお知らせ 

CyberChaos(さいばかおす)

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

任意の3つのライブラリーを自動でインストールするPythonプログラム

2023-03-25 11:45:01 | python
インストールされていないライブラリーを調べてリストアップし、インストールされていないライブラリーを自動でインストールするPythonプログラムを作って

import subprocess

# 必要なライブラリを指定する
required_libraries = ['numpy', 'matplotlib', 'scipy']

# インストールされていないライブラリを格納するリスト
not_installed_libraries = []

# 必要なライブラリがインストールされているかどうかを確認する
for lib in required_libraries:
try:
__import__(lib)
except ImportError:
not_installed_libraries.append(lib)

# インストールされていないライブラリがあれば、自動的にインストールする
if not_installed_libraries:
subprocess.check_call(['pip', 'install'] + not_installed_libraries)

ちょっとずれてるな。質問の意図を全て反映していない。
これじゃ任意の3つのライブラリーを列挙してインストールされていなければ自動でインストールする、というプログラムだろ?

まあ、実行したら上手く行ったからいいけど。


任意のライブラリーがインストールされているかどうか調べ、インストールされていなければ自動でインストールするPythonプログラム

2023-03-25 11:11:58 | python
下の例はpycatiaライブラリーがインストールされているかどうか調べ、インストールされていなければ自動でインストールするPythonプログラムのソースコードである。
※Pydroidで動作確認済。

import subprocess

try:
import pycatia
except ImportError:
subprocess.check_call(['pip', 'install', 'pycatia'])

ちなみにpycatiaの部分を他のライブラリーに置き換えることで、他のライブラリーにも適用できる。

ただし、talibみたいに一筋縄ではいかないライブラリーもあるので注意。

巷に溢れているPythonのソースコードには、こういう配慮が無さすぎる。

ChatGPTを使ってFusion 360の3Dモデリングのスクリプトをつくってもらう方法

2023-03-23 09:42:58 | python

ChatGPTを使ってFusion 360の3Dモデリングのスクリプトをつくってもらう方法|神原 友徳 tomo1230|note

ChatGPTを使ってFusion 360の3Dモデリングのスクリプトをつくってもらう方法|神原 友徳 tomo1230|note

ChatGPTとは OpenAI という会社がつくったAIの一種で、たくさんの文章を学習して人間のように自然な言葉で応答ができるようになったものです。テキストデータを読み込んで...

note(ノート)



タートルグラフィックスライブラリーを使ってリンゴの立体画像を描かせてみたらwww

2023-03-22 21:43:58 | python

import turtle

# タートルオブジェクトの作成
t = turtle.Turtle()

# ペンを上げる関数
def lift_pen():
    t.penup()

# ペンを下げる関数
def lower_pen():
    t.pendown()

# リンゴの上部を描画する関数
def draw_top():
    lower_pen()
    t.color("red")
    t.begin_fill()
    t.circle(30, 180)
    t.end_fill()
    lift_pen()

# リンゴの下部を描画する関数
def draw_bottom():
    lower_pen()
    t.color("green")
    t.begin_fill()
    t.circle(-30, 180)
    t.end_fill()
    lift_pen()

# リンゴの輪郭を描画する関数
def draw_outline():
    lower_pen()
    t.color("brown")
    t.width(10)
    t.circle(40, 180)
    t.left(90)
    t.forward(80)
    lift_pen()

# 3D効果を追加する関数
def draw_3d():
    lower_pen()
    t.color("lightgray")
    t.width(5)
    t.left(90)
    t.forward(10)
    t.right(90)
    t.circle(-40, 180)
    t.left(90)
    t.forward(10)
    lift_pen()

# リンゴを描画する関数
def draw_apple():
    draw_top()
    draw_bottom()
    draw_outline()
    draw_3d()

# リンゴを描画
draw_apple()

# 描画ウィンドウを閉じる
turtle.done()

 

おい!!!なんだよこれは???

なめとんのか???


タートルグラフィックスを使って球面を描く

2023-03-22 20:15:59 | python
タートルグラフィックスはいろいろな2Dグラフィックスを描けることが分かった。
では3Dの立体描画はどうだろうと思ってChatGPTにソースコードを書かせてみた。

Pythonのタートルグラフィックスライブラリーを使って球面を描かせるプログラムを書いて。

以下はPythonのタートルグラフィックスライブラリーを使用して球面を描くプログラムの例です。

import turtle import math # 半径と分割数を指定 radius = 100 num_divisions = 36 # タートルを作成 t = turtle.Turtle() # 球面を描画する関数を定義 def draw_sphere(): # 経度と緯度のループを回す for i in range(num_divisions): for j in range(num_divisions): # 緯度と経度の角度を計算 lat = math.pi * (i / num_divisions - 0.5) lon = 2 * math.pi * (j / num_divisions) # 球面上の座標を計算 x = radius * math.cos(lat) * math.cos(lon) y = radius * math.cos(lat) * math.sin(lon) z = radius * math.sin(lat) # 座標に移動 t.penup() t.goto(x, y) # 球面上の点を描画 t.pendown() t.dot(2) # 終了処理 t.hideturtle() turtle.done() # 球面を描画 draw_sphere()

このプログラムでは、半径と分割数を指定して、球面上の点を描画しています。経度と緯度のループを回して、緯度と経度の角度を計算し、球面上の座標を計算しています。計算された座標にタートルを移動して、球面上の点を描画しています。最後に、タートルを非表示にして、プログラムを終了しています。

Pydroidで実行してみたら、亀がグリグリ回ってそれらしき動きをしていたものの、一向に立体が描画されないみたいなので、途中で切った。
パソコンではどうだろうか?

全然立体的じゃない。
しかもメッチャ遅い。


フリーハンドで描いた曲線を最小二乗法で平滑化するPythonプログラム

2023-03-19 18:16:05 | python
フリーハンドで描いた曲線の画像ファイルを読み込み、最小二乗法を用いて平滑化するプログラムコードをPython言語で書いてください
 
以下は、Pythonでフリーハンドで描いた曲線の画像ファイルを読み込み、最小二乗法を用いて平滑化するプログラムコードです。このコードは、NumPyおよびmatplotlibライブラリを使用しています。
 
import numpy as np
import matplotlib.pyplot as plt
 
# 画像ファイルの読み込み
img = plt.imread('曲線の画像ファイル名.png') #ここではC:/Users/User/Desktop/test.pngとした。
 
# 画像をグレースケールに変換
gray = np.mean(img, axis=2)
 
# フリーハンドで描いた曲線の座標を取得
points = np.array(np.nonzero(gray)).T
 
# 最小二乗法による平滑化
order = 3
x = points[:, 0]
y = points[:, 1]
coeffs = np.polyfit(x, y, order)
poly = np.poly1d(coeffs)
new_y = poly(x)
 
# 平滑化した曲線をプロット
plt.plot(x, new_y, 'r-')
plt.show()
このコードでは、以下の処理を行います。
 
1.画像ファイルを読み込み、グレースケールに変換します。
2.フリーハンドで描いた曲線の座標を取得します。
3.最小二乗法により、曲線を平滑化します。ここでは、3次の多項式を使用しています。
4.平滑化した曲線をプロットします。
注意点としては、フリーハンドで描いた曲線が閉じていない場合、プログラムの出力結果が正しくない可能性があることです。また、平滑化により曲線の形状が変化するため、必要に応じてパラメーターの調整が必要になる場合があります。
の画像が下のようになった。
 
※order = の所を3から100とかに変えたら元の曲線により近付くようだ。
ただし1000000とかデカ過ぎるとパソコンがフリーズするので注意。
 
P.S.
なぜこんなことを思い付いたのかというと、化学の実験結果をグラフにまとめてレポートとして提出する時に最小二乗法という理論を使わなければならなかったことを電車に乗っている際に思い出したからだ。
化学の実験結果は直線を描くものであった。いかにも任意の点群の間を計算したかのようにサッと定規で適当にひいて誤魔化していた。
直線じゃなくてフリーハンドで描いた曲線に応用できないか?
応用したら汚いフリーハンドの曲線が滑らかになるのではないか?
と考えて、Pythonでのプログラミングを考えたのだ。
そして実行に移したら見事に成功した。
読み込むファイル名の所もパスを入れなければならないのでは?と思って自分で付け加えた。
次はウィジェット化してみたい。
 
このプログラムはフリーハンドでイラストを描く際やCADのフリーハンドによるモデリングにも応用できると思われる。
 
複雑な曲線を滑らかで自然にCADで描くのは結構骨が折れるものだ。
 
それを楽にしたいと思った。
 
P.S.2
Adobeillustratorなどで曲線を描く際に、複数の折点が生じてカクカク気味になる場合もあるだろう。
自分の望んだ通りの形状にするのはなかなか面倒なはずである。
そこで最小二乗法を使えば、より滑らかで自然な曲線になるはずだ。
 
P.S.3
元の画像(修正前)
修正後

PythonでCATIAのモデリングを自動化する方法は?

2023-03-19 13:48:19 | python
PythonでCATIAのモデリングを自動化する方法は?

Pythonを使用してCATIAのモデリングを自動化するには、以下の手順を実行する必要があります。

Pythonのスクリプトエディタを開き、必要なライブラリをインポートします。CATIAにアクセスするには、win32com.clientライブラリを使用します。
CATIAを起動し、必要なドキュメントを開きます。CATIAのオブジェクトを取得するには、win32com.client.Dispatch関数を使用します。
必要なCATIAオブジェクトを取得します。これには、Part、Body、Sketch、Dimension、Featureなどが含まれます。
モデルを自動的に作成するためのコードを書きます。これには、寸法や位置などのパラメータを指定する必要があります。
Pythonスクリプトを実行して、CATIAモデルを自動的に作成します。
以下は、例として、Pythonで円柱を作成する方法です。

import win32com.client

# Start CATIA
catia = win32com.client.Dispatch("CATIA.Application")
documents = catia.Documents
partDocument = documents.Add("Part")

# Get the Part object
part = partDocument.Part

# Define the parameters for the cylinder
radius = 10
height = 20

# Create the cylinder
shapeFactory = part.ShapeFactory
cylinder = shapeFactory.AddNewCylinder(radius, height)
cylinder.Name = "Cylinder"

# Update the Part document
part.Update()

# Save the Part document
partDocument.SaveAs("Cylinder.CATPart")
partDocument.Close()

このスクリプトでは、win32com.clientライブラリを使用してCATIAにアクセスし、新しいPartドキュメントを作成し、円柱の半径と高さを指定して、円柱を作成しています。最後に、Partドキュメントを保存して閉じます。

このように、Pythonを使用してCATIAのモデリングを自動化することができます。


謎のPythonライブラリrython

2023-03-19 11:46:23 | python
悪戯半分に冗談半分でpip install rythonとコマンドを打ってみたら、マジでダウンロード→インストールしやがった。





CythonやJythonは有名だが、rythonってなんじゃこりゃ?www

RubyとPythonのハイブリッドか?
それともRustとPythonのハイブリッドか?

P.S.
ちなみに
aython
bython
cython
dython
・・・
とアルファベット順に頭の文字を変えて試してみたら、ダウンロード→インストールできたものとできなかったものがあった。

任意の曲面を三次元フーリエ変換するPythonプログラム

2023-03-13 22:17:35 | python
任意の曲面を描く関数で表示された曲面を三次元フーリエ変換するPythonプログラムを書いて

以下は、任意の曲面を描く関数で表示された曲面を三次元フーリエ変換するPythonプログラムの例です。このプログラムは、NumPy、Matplotlib、mpl_toolkits.mplot3d、およびscipy.fftpackのライブラリを使用しています。

import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.fftpack import fftn, fftshift # Define the function to create the surface def surface_func(x, y): return np.sin(np.sqrt(x**2 + y**2)) # Set up the x and y grids N = 100 x = np.linspace(-5, 5, N) y = np.linspace(-5, 5, N) X, Y = np.meshgrid(x, y) # Create the surface Z = surface_func(X, Y) # Plot the surface fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot_surface(X, Y, Z) plt.show() # Compute the 3D Fourier transform Z_fft = fftn(Z) Z_fft_shift = fftshift(Z_fft) # Plot the Fourier transform fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.set_xlim([-50, 50]) ax.set_ylim([-50, 50]) ax.set_zlim([-5000, 5000]) ax.plot_surface(X, Y, np.abs(Z_fft_shift)) plt.show()

このプログラムでは、surface_func関数を定義して、xおよびy座標に基づいて曲面を計算します。次に、xおよびy座標のグリッドを設定し、surface_func関数を使用して曲面を作成します。作成された曲面をplot_surface関数を使用してプロットします。

次に、fftn関数を使用して3Dフーリエ変換を計算し、fftshift関数を使用してデータを中心に移動します。この後、plot_surface関数を使用してフーリエ変換をプロットします。ここでは、x、y、z軸の範囲を適切に設定し、フーリエ変換の振幅を表すデータをnp.abs関数を使用して取得します。




帽子みたいな曲面を描く関数だな。

いや、トイレにサワデー♪www






極座標で表される任意の関数の領域を表示し、その面積を計算するPythonプログラム

2023-03-13 21:31:20 | python

極座標で表される任意の関数の領域を表示し、その面積を計算するPythonプログラムの例を書いて

以下は、極座標で表される任意の関数の領域を表示し、その面積を計算するPythonプログラムの例です。このプログラムでは、matplotlibライブラリを使用して極座標グラフを描画し、scipyライブラリを使用して極座標での積分を行います。

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import quad

# 関数の定義(ここでは r = 2 + cos(3θ))
def func(theta):
    r = 2 + np.cos(3 * theta)
    return r

# 極座標グラフを描画
theta = np.linspace(0, 2*np.pi, 1000) # θの範囲を0から2πまで1000分割
r = func(theta)
ax = plt.subplot(111, projection='polar')
ax.plot(theta, r)

# 面積を計算
def integrand(theta):
    r = func(theta)
    return 0.5 * r**2

area, _ = quad(integrand, 0, 2*np.pi) # 積分により面積を計算
print("極座標上の領域の面積:", area)

plt.show()

このプログラムでは、funcという関数を定義しています。この関数は、極座標上のθの値に対応するrの値を計算します。ここではr = 2 + cos(3θ)を例として使用していますが、他の関数でも同様に対応するrの値を計算することができます。

次に、極座標グラフを描画するためにmatplotlibライブラリを使用してい・・・

バックレましたwww