Il semble que le "Fusion 360 Extrude Competition" (détails dans un autre article de blog ()) commencera également cette année. Des rumeurs ont coulé. Fusion 360 a une fonction de type macro appelée script. Si vous utilisez ce type, vous gagnerez certainement! ?? C'est pourquoi je l'ai essayé.
Comment créer un nouveau script ou modifier un script existant Veuillez vous référer à l'article suivant. Il a traduit l'aide officielle en japonais.
Créer des scripts et des compléments Fusion360
"Editez" l'exemple de script qui est inclus depuis le début (veillez à ne pas l'écraser!) Vous pouvez également vérifier le contenu. Aussi (bien qu'il soit pénible de n'avoir que l'anglais) sur la page officielle du script d'aide Il y avait différents échantillons, donc c'était très utile. Les liens ci-dessous sont ceux qui effectuent diverses extrusions.
Extrude Feature API Sample API Sample
Dessinez un cercle avec une esquisse et extrudez-le, puis dessinez un cercle différent dessus et extrudez-le, puis répétez. Données sur la hauteur de pas (= chaque hauteur d'extrusion), la position du cercle et le diamètre Si vous le chargez en tant que fichier CSV, il sera automatiquement expulsé.
J'ai réussi à le faire fonctionner en combinant différents échantillons. Ci-dessous, je vais vous expliquer le code avec une petite pause. Cela devrait fonctionner si vous connectez tout dans l'ordre, mais veuillez le corriger si nécessaire.
import adsk.core, adsk.fusion, traceback, math, io
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
# Get all components in the active design.
product = app.activeProduct
design = adsk.fusion.Design.cast(product)
# Get the root component of the active design
rootComp = design.rootComponent
# Get extrude features
extrudes = rootComp.features.extrudeFeatures
title = 'Import csv file'
if not design:
ui.messageBox('No active Fusion design', title)
return
dlg = ui.createFileDialog()
dlg.title = 'Open CSV File'
dlg.filter = 'Comma Separated Values (*.csv);;All Files (*.*)'
if dlg.showOpen() != adsk.core.DialogResults.DialogOK :
return
filename = dlg.filename
Jusqu'à ce point, l'écran de sélection des paramètres initiaux et du fichier CSV a été exécuté. C'est presque le même que l'exemple de script.
# Set 1st-sketch plane
sketches = rootComp.sketches
sketch = sketches.add(rootComp.xZConstructionPlane)
cnt = 0
# Read the csv file.
with io.open(filename, 'r', encoding='utf-8-sig') as f:
line = f.readline()
data = []
while line:
pntStrArr = line.split(',')
for pntStr in pntStrArr:
try:
data.append(float(pntStr))
except:
break
# csv file line 1 is pitch of extrude
if cnt == 0:
distance = adsk.core.ValueInput.createByReal(data[0]/10)
Définissez pour dessiner une esquisse sur le plan XZ et extrudez-la dans la direction Y. Lisez le fichier CSV ligne par ligne. Définissez la hauteur de pas (= chaque hauteur d'extrusion) à empiler, qui correspond aux données de la première ligne.
# csv file after line 2 are sketch of extrude
elif cnt == 1:
sketchCircles = sketch.sketchCurves.sketchCircles
centerPoint = adsk.core.Point3D.create(data[0]/10, data[1]/10, 0)
circle = sketchCircles.addByCenterRadius(centerPoint, data[2]/10)
prof = sketch.profiles.item(0)
extrude = extrudes.addSimple(prof, distance, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
else:
sketch = sketches.addWithoutEdges(extrude.endFaces.item(0) )
sketchCircles = sketch.sketchCurves.sketchCircles
centerPoint = adsk.core.Point3D.create(data[0]/10, data[1]/10, 0)
circle = sketchCircles.addByCenterRadius(centerPoint, data[2]/10)
prof = sketch.profiles.item(0)
extrude = extrudes.addSimple(prof, distance, adsk.fusion.FeatureOperations.JoinFeatureOperation)
line = f.readline()
data.clear()
cnt += 1
ui.messageBox('Finished')
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
Lisez les positions centrales X, Y et le diamètre du cercle, qui sont les données de la deuxième ligne du fichier CSV. Dessinez sur une esquisse et extrudez au pas défini. Dans la première étape, dessinez une esquisse sur le plan XY et extrudez avec un nouveau corps. À partir de la deuxième étape, dessinez une esquisse sur le plan du corps et extrudez par jointure. Répétez jusqu'à la fin du fichier CSV.
S'il existe un bouton "Enregistrer" comme une macro Excel, l'analyse de l'API progressera également. Il n'y a pas beaucoup d'informations en japonais et il y a beaucoup de choses que je ne comprends pas. C'est peut-être un code compliqué, mais pardonnez-moi s'il vous plaît.
Outre le cercle parfait, je pourrais dessiner une ellipse (Sketch Ellipses). Je ne sais pas dessiner un carré en combinant des lignes droites.
Je voulais vraiment commencer par choisir un plan arbitraire au lieu du plan XY. Je n'ai pas compris cela non plus, alors je vous serais reconnaissant si vous pouviez me le faire savoir.
En plus des articles présentés dans l'article, je me suis également référé à l'article de Qiita suivant. Il était sérialisé dans une série et était facile à comprendre car il était expliqué avec soin. Merci!
Lançons Fusion 360 avec Python Partie 1 Créez un nouveau script
D'ailleurs, cette fois, lors du concours d'extrusion 2020, il était clairement indiqué que "les scripts etc. ne peuvent pas être utilisés". Veuillez noter que ce sera une faute si vous l'utilisez (rires)
Recommended Posts