
ChatGPTã䜿ã£ãŠFusion 360ã®ïŒDã¢ããªã³ã°ã®ã¹ã¯ãªãããã€ãã£ãŠãããæ¹æ³
ChatGPTãšã¯
OpenAI ãšããäŒç€Ÿãã€ãã£ãAIã®äžçš®ã§ãããããã®æç« ãåŠç¿ããŠäººéã®ããã«èªç¶ãªèšèã§å¿çãã§ããããã«ãªã£ããã®ã§ããããã¹ãããŒã¿ãèªã¿èŸŒãã§ããã®ããŒã¿ã«åºã¥ããŠäººéã®ãããªå¿çãè¿ããŸãããã®AIãå©çšããŠãäŸãã°è³ªåã«å¯ŸããŠçããè¿ããããæç« ãçæãããããããšãã§ããŸãã
https://chat.openai.com/chat
Fusion 360ãšã¯
ã³ã³ãã¥ãŒã¿ã§3Dã¢ããªã³ã°ïŒç«äœç©ã®èšèšïŒãè¡ããœãããŠã§ã¢ã®äžã€ã§ããã€ãŸãã建ç©ãè»ãæ©æ¢°ãªã©ããã³ã³ãã¥ãŒã¿äžã§ç«äœçã«ãã¶ã€ã³ããããšãã§ããŸãããŸãããã®ã¢ãã«ã䜿ã£ãŠã3Dããªã³ã¿ãŒã§å°å·ããããCNCãã·ã³ã§ååå å·¥ãããããšãã§ããŸãããã¶ã€ã³ãã補ååãŸã§ã®å·¥çšãäžæ¬ã§è¡ãããšãã§ãããããã¯ããã¶ã€ã³ããšã³ãžãã¢ãªã³ã°åéã§åºã䜿ãããŠããŸãã
https://www.autodesk.co.jp/products/fusion-360/overview
ä»åã€ãã£ãŠããããããã®
ãFusion360 script ã§æåã®ã¢ãã«ãã€ããããïŒã
ãã£ããChatGPTã«èããŠã¿ããïŒ
ïŒïŒãã£ãŠã»ããããšãã§ããã ãæç¢ºã«äŒããŸãã
ãïŒFusion 360 script ã§æåãã€ããã¹ã¯ãªããã€ãã£ãŠ

ïŒïŒäžèšã®ãããªã¹ã¯ãªããã®åçãããŸããã
ããFusion 360 ã®ã¹ã¯ãªããã¯PythonããŒã¹ã®ã³ãŒãã§ãã
import adsk.core, adsk.fusion, adsk.cam, math
# ãŠãŒã¶ãŒã«ãã©ã¡ãŒã¿ãå
¥åããŠããããŸã
num_points = int(input("æåã®å
端æ°ãå
¥åããŠãã ãã: "))
radius = float(input("æåã®ååŸãå
¥åããŠãã ãã: "))
center_point = adsk.core.Point3D.create(0, 0, 0)
# ã¹ã±ãããäœæããŸã
app = adsk.core.Application.get()
design = app.activeProduct
root_comp = design.rootComponent
sketches = root_comp.sketches
xy_plane = root_comp.xYConstructionPlane
sketch = sketches.add(xy_plane)
# æåã®ãã€ã³ããèšç®ããŸã
angle_between_points = math.pi / num_points
angle_offset = math.pi / 2
points = []
for i in range(num_points * 2):
angle = i * angle_between_points + angle_offset
if i % 2 == 0:
x = radius * math.cos(angle)
y = radius * math.sin(angle)
else:
x = (radius / 2) * math.cos(angle)
y = (radius / 2) * math.sin(angle)
points.append(adsk.core.Point3D.create(x, y, 0))
# æåãæç»ããŸã
lines = sketch.sketchCurves.sketchLines
for i in range(len(points)):
start_point = points[i]
end_point = points[(i + 1) % len(points)]
lines.addByTwoPoints(start_point, end_point)
# 3Dãªããžã§ã¯ããäœæããŸã
extrudes = root_comp.features.extrudeFeatures
profile = sketch.profiles.item(0)
distance = adsk.core.ValueInput.createByReal(10)
extrude_input = extrudes.createInput(profile, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
extrude_input.setDistanceExtent(False, distance)
extrude_feature = extrudes.add(extrude_input)
ïŒïŒæ©éFusion 360 ã®ã¹ã¯ãªãããšããŠå®è¡ããããã«ã¢ãã€ã³ã¢ã€ã³ã³ããFusion 360 ã®ã¹ã¯ãªãããã¡ã€ã«ãæ°èŠäœæããŸãã

ïŒïŒåæã®ã¹ã¯ãªãããã¡ã€ã«ãäœæã§ããããããç·šéããŸãã

ç·šéãã¿ã³ãæŒã
ïŒïŒç·šéãã¿ã³ãæŒããšãã¹ã¯ãªããç·šéçšã®Visual Studio Codeã® ãšãã£ã¿ãŒãèµ·åããŸãã®ã§ãããã«å çšã®ChatGPTã®åçã®ã¹ã¯ãªããã³ãŒããå ¥ãæ¿ãã§è²Œãä»ããŠå®è¡ããŠã¿ãŸãã
ïŒïŒïŒçµæãå®è¡ãšã©ãŒã«ãªããŸããïŒïŒïŒ

num_points = int(input("æåã®å
端æ°ãå
¥åããŠãã ãã: "))
RuntimeError: input(): lost sys.stdinïŒïŒChatGPTã«æ»ã£ãŠãšã©ãŒã®å 容ãäŒããŸãã
ãïŒäžèšã®ãšã©ãŒã«ãªããŸããã©ã®ããã«ä¿®æ£ãããããã§ããïŒ ããnum_points = int(input("æåã®å 端æ°ãå ¥åããŠãã ãã: ")) ããRuntimeError: input(): lost sys.stdin

ïŒïŒChatGPTãããšã©ãŒå 容ã®èª¬æä»ãã§ä¿®æ£ãããã¹ã¯ãªããã®åçãããŸããã
ïŒãã®ãšã©ãŒã¯ãã¹ã¯ãªãããFusion 360ã®Pythonç°å¢ã§å®è¡ãããŠãããããæšæºå
¥åïŒinput颿°ïŒããµããŒããããŠããªãããšã«ãããã®ã§ãã
ãã®ããã代ããã«Fusion 360ã®UIã䜿çšããŠãŠãŒã¶ãŒã«ãã©ã¡ãŒã¿ãå
¥åããå¿
èŠããããŸãã
以äžã¯ãUIã䜿çšããŠæåã®å
端æ°ãšååŸããŠãŒã¶ãŒã«å
¥åããŠãããããã®ã³ãŒãäŸã§ãã
import adsk.core, adsk.fusion, adsk.cam, math
# ãã€ã¢ãã°ã衚瀺ããŠãŠãŒã¶ãŒã«ãã©ã¡ãŒã¿ãå
¥åããŠããããŸã
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
num_points = ui.inputBox("æåã®å
端æ°ãå
¥åããŠãã ãã:", "å
端æ°", "5")
radius = ui.inputBox("æåã®ååŸãå
¥åããŠãã ãã:", "ååŸ", "10")
except:
if ui:
ui.messageBox('å
¥åããã¯ã¹ã®è¡šç€ºäžã«ãšã©ãŒãçºçããŸããã')
num_points = int(num_points[0])
radius = float(radius[0])
center_point = adsk.core.Point3D.create(0, 0, 0)
# ã¹ã±ãããäœæããŸã
app = adsk.core.Application.get()
design = app.activeProduct
root_comp = design.rootComponent
sketches = root_comp.sketches
xy_plane = root_comp.xYConstructionPlane
sketch = sketches.add(xy_plane)
# æåã®ãã€ã³ããèšç®ããŸã
angle_between_points = math.pi / num_points
angle_offset = math.pi / 2
points = []
for i in range(num_points * 2):
angle = i * angle_between_points + angle_offset
if i % 2 == 0:
x = radius * math.cos(angle)
y = radius * math.sin(angle)
else:
x = (radius / 2) * math.cos(angle)
y = (radius / 2) * math.sin(angle)
points.append(adsk.core.Point3D.create(x, y, 0))
# æåãæç»ããŸã
lines = sketch.sketchCurves.sketchLines
for i in range(len(points)):
start_point = points[i]
end_point = points[(i + 1) % len(points)]
lines.addByTwoPoints(start_point, end_point)
# 3Dãªããžã§ã¯ããäœæããŸã
extrudes = root_comp.features.extrudeFeatures
profile = sketch.profiles.item(0)
distance = adsk.core.ValueInput.createByReal(10)
extrude_input = extrudes.createInput(profile, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
extrude_input.setDistanceExtent(False, distance)
extrude_feature = extrudes.add(extrude_input)ïŒïŒFusion360ã®ã¹ã¯ãªããç·šéçšã®Visual Studio Codeã® ãšãã£ã¿ãŒã«æ»ã£ãŠãããã«å çšã®ChatGPTã®åçã®ã¹ã¯ãªããã³ãŒããå床貌ãä»ããŠå®è¡ããŠã¿ãŸãã
ïŒïŒïŒçµæãä»åºŠã¯ãšã©ãŒã¯è¡šç€ºãããŠããŸãããïŒïŒïŒ

ïŒïŒãããã¯ã¢ãŒãã§å®è¡ããŠããã®ã§ãFusion 360 åŽã®ç»é¢ã§å®è¡ãããŠãããã確èªããŸãã
ãæåã®å
端æ°ãå
¥åããŠãã ãããã®ãã€ã¢ãã°ã衚瀺ãããŠããŸãã
ãã®ãŸãŸãïŒãïŒäºè§ïŒãæå®ããŸãã

ãæåã®ååŸãå
¥åããŠãã ãããã®ãã€ã¢ãã°ã衚瀺ãããŸãã
ãã®ãŸãŸãïŒïŒãïŒcmïŒã§æå®ããŸãã

ïŒïŒïŒãã®çµæãã¡ãããšæåã®ç«äœã¢ãã«ãã€ãã£ãŠãããŸããã
ã¹ã±ãããæŒãåºãã³ãã³ãã®å±¥æŽããããŸãã
ïŒïŒïŒèªåã§ã³ãŒãã£ã³ã°ãèããªããŠãç°¡åã«ã§ããŸããïŒïŒïŒ

è£è¶³ã§ã
å®è¡ã§ããã¹ã¯ãªãããã§ããŸãããã䜿ã£ãŠããŠã¡ãã£ãšäœ¿ãã¥ãããšãããããã®ã§ãåŸããã§ã倿ŽãããŠãããã®ããã£ãŠã¿ãŸããïŒ

ïŒãã®Fusion 360ã®ã¹ã¯ãªããã§æåã®é«ããæå®ããããšã¯ã§ããŸããïŒ
ïŒã¯ãããã®Fusion 360ã®ã¹ã¯ãªããã§ã¯æåã®é«ããæå®ããããšãã§ããŸãã
ã¹ã¯ãªããã®æåŸã®éšåã§ã3Dãªããžã§ã¯ããäœæããããã®ExtrudeFeatureãå®çŸ©ããŠããŸãããã®ExtrudeFeatureã®é«ããèšå®ããã«ã¯ãsetDistanceExtentã¡ãœããã䜿çšããŸãããã®ã¡ãœããã«æž¡ã2çªç®ã®åŒæ°ã«ãè·é¢ã衚ãadsk.core.ValueInputãªããžã§ã¯ããæž¡ãããšãã§ããŸãã
以äžã«ãé«ããæå®ããããã«ã¹ã¯ãªããã倿ŽããäŸã瀺ããŸãããã®äŸã§ã¯ããŠãŒã¶ãŒããã€ã¢ãã°ããã¯ã¹ã§é«ããå
¥åã§ããããã«ããŠããŸãã
import adsk.core, adsk.fusion, adsk.cam, math
# ãã€ã¢ãã°ã衚瀺ããŠãŠãŒã¶ãŒã«ãã©ã¡ãŒã¿ãå
¥åããŠããããŸã
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
num_points = ui.inputBox("æåã®å
端æ°ãå
¥åããŠãã ãã:", "å
端æ°", "5")
radius = ui.inputBox("æåã®ååŸãå
¥åããŠãã ãã:", "ååŸ", "10")
height = ui.inputBox("é«ããå
¥åããŠãã ãã:", "é«ã", "5")
except:
if ui:
ui.messageBox('å
¥åããã¯ã¹ã®è¡šç€ºäžã«ãšã©ãŒãçºçããŸããã')
num_points = int(num_points[0])
radius = float(radius[0])
height = float(height[0])
center_point = adsk.core.Point3D.create(0, 0, 0)
# ã¹ã±ãããäœæããŸã
app = adsk.core.Application.get()
design = app.activeProduct
root_comp = design.rootComponent
sketches = root_comp.sketches
xy_plane = root_comp.xYConstructionPlane
sketch = sketches.add(xy_plane)
# æåã®ãã€ã³ããèšç®ããŸã
angle_between_points = math.pi / num_points
angle_offset = math.pi / 2
points = []
for i in range(num_points * 2):
angle = i * angle_between_points + angle_offset
if i % 2 == 0:
x = radius * math.cos(angle)
y = radius * math.sin(angle)
else:
x = (radius / 2) * math.cos(angle)
y = (radius / 2) * math.sin(angle)
points.append(adsk.core.Point3D.create(x, y, 0))
# æåãæç»ããŸã
lines = sketch.sketchCurves.sketchLines
for i in range(len(points)):
start_point = points[i]
end_point = points[(i + 1) % len(points)]
lines.addByTwoPoints(start_point, end_point)
# ã¹ã±ããå
ã§ç«äœãªããžã§ã¯ããäœæããŸã
profile = sketch.profiles.item(0)
extrudes = root_comp.features.extrudeFeatures
extrude_input = extrudes.createInput(profile, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
distance = adsk.core.ValueInput.createByReal(height)
extrude_input.setDistanceExtent(True, distance)
extrude_feature = extrudes.add(extrude_input)
å®è¡ããŠã¿ãŸããããã¡ãããšé«ãã®æå®ãã§ããããã«ãªããŸããïŒ
ïŒïŒcmïŒã§å®è¡ããŠã¿ãŸãã

æå®éãã®é«ãã®æåã®ç«äœã«ãªããŸããïŒ

ãããã§ããããïŒ
äžçºã§æ£ç¢ºãªåçããããã®ã¯é£ãããšæããŸãããäœåããã©ã€ã»ã¢ã³ãã»ãšã©ãŒãç¹°ãè¿ããªããChatGPTã®åçã®ç²ŸåºŠãäžããŠããã°ãããªãæçãªåçãåŸãããããšãããããŸããã