Exécutons Fusion 360 avec Python Partie 11 Puisqu'il n'y a aucun point le long du chemin dans l'API, j'ai pensé à une alternative

introduction

Fusion 360 a une commande ** Points le long du chemin ** .. Ceci est un record de rebondissements essayant d'y parvenir avec l'API Fusion 360. image.png

Consultez le manuel de référence

Pour spécifier comment créer un point de construction avec l'API Fusion 360, spécifiez [** ConstructionPointInput Object **](http://help.autodesk.com/view/fusion360/ENU/?guid=GUID-b3ffae9a-d7d7-48ee- bd66-b1138536767f) est utilisé. Les méthodes du manuel de référence qui commencent par ** setBy ** correspondent à chaque commande de l'interface utilisateur, cherchez donc des "points le long du chemin". image.png ** setByCenter **> Point central Circle / Sphere / Taurus ** setByEdgePlane **> Points sur les arêtes et les plans //help.autodesk.com/view/NINVFUS/JPN/?guid=GUID-BF8B03C7-6E09-44E3-A641-E310E3E53FF1) ** setByPoint **> [Top Point](https: // help.autodesk.com/view/NINVFUS/JPN/?guid=GUID-0513EE5B-3A28-425E-AE34-E9E0BFF7D8D1) ** setByThreePlanes **> Points par lesquels passent les trois avions ** setByTwoEdges **> Two Edges Passing Point //help.autodesk.com/view/NINVFUS/JPN/?guid=GUID-C0483AF3-AD6E-48C5-8BA7-0443C8AB4D65) cette···? ?? ?? Existe-t-il une méthode qui correspond à la ligne le long du chemin? ?? ??

Il n'y avait pas de "point le long du chemin" mais il y avait un "avion le long du chemin"!

Avec une commande similaire à un point le long du chemin [** Plan le long du chemin **](https://help.autodesk.com/view/NINVFUS/JPN/?guid=GUID-4ED5A7DB-8EAE-466E- Il y a A860-8A8968BDD3F8). image.png Pour une raison quelconque, il semble y avoir ** méthode ConstructionPlaneInput.setByDistanceOnPath **. est. Pourquoi y a-t-il une surface plane mais pas de points? Il n'y a rien qui n'existe pas, j'ai donc décidé de rouvrir et d'envisager une alternative.

Créer un plan le long du chemin> Utilisons l'API Fusion 360 pour créer l'intersection du plan et du chemin.

procédure

Il s'agit de la procédure de création de points courbes dans une esquisse. image.png

De la première et dernière magie au milieu

import adsk.core, adsk.fusion, traceback

def run(context):
    ui = None
    try:
        app = adsk.core.Application.get()
        ui  = app.userInterface
        design = app.activeProduct

        # Get the root component of the active design.
        rootComp = design.rootComponent

        # 
        #Ajoutez le code ici
        # 
        
    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

Obtenez la spline dans l'esquisse

Obtenez la spline dans l'esquisse 1 et affectez-la à crvPath

        #Obtenez Sketch 1 dans Sketch>Obtenir la courbe spline dans l'esquisse 1
        sketch1 = rootComp.sketches.item(0)
        crvPath = sketch1.sketchCurves.sketchFittedSplines.item(0)

Créer un plan le long du chemin

Utilisez setByDistanceOnPath pour créer une face le long du chemin. Je spécifie une valeur de 0 à 1 avec 0 comme point de départ et 1 comme point final, mais au lieu de saisir directement la valeur numérique, ** ValueInput ** / ENU /? Guid = GUID-bdeb52e0-a6af-4909-93e8-3b13acd0e39c) Doit être spécifié dans l'objet.

        #Obtenir l'objet constructionPlanes
        planes = rootComp.constructionPlanes
        
        #Obtenir l'objet ConstructionPlaneInput
        planeInput = planes.createInput()

        #Créer un plan le long du chemin
        distance = adsk.core.ValueInput.createByReal(0.4)
        planeInput.setByDistanceOnPath(crvPath, distance)
        plane = planes.add(planeInput)

Créer une intersection entre un plan et une trajectoire

Fusion 360 n'a pas de commande pour créer une intersection d'un plan et d'une trajectoire, mais la [** méthode Sketch.intersectWithSketchPlane **](http://help.autodesk.com/view/fusion360/ENU/?guid=GUID-1EB28A55 -7250-4694-A253-582B395AB234) vous permet de créer l'intersection du plan d'esquisse et de la courbe. Même si le chemin spécifié est une seule courbe, il semble qu'il doit s'agir d'un tableau. Ici, nous ajoutons crvPath au tableau ʻentities` et le mettons dans l'argument de la méthode intersectWithSketchPlane.

        #Ajouter une nouvelle esquisse
        sketch2 = rootComp.sketches.add(plane)

        #Créer l'intersection du plan d'esquisse et de la trajectoire
        entities = []
        entities.append(crvPath)
        skPoints = sketch2.intersectWithSketchPlane(entities)

Quand je lance ce script, ça ressemble à ceci image.png

Résumé

C'était bien de pouvoir le faire, mais c'était beaucoup de travail et c'était assez gênant. J'ai dessiné et exécuté ce code avec une faible attente que pointInput.setByDistanceOnPath pourrait en fait être utilisé simplement parce qu'il n'est pas répertorié dans la référence ... mais j'ai eu une erreur et cela n'a pas fonctionné!

        # Get construction points
        points = rootComp.constructionPoints
        
        # Create construction point input
        pointInput = points.createInput()

        # Add construction point by distance on path
        distance = adsk.core.ValueInput.createByReal(0.4)
        pointInput.setByDistanceOnPath(crvPath, distance)
        point = points.add(pointInput)

Je souhaite qu'il soit implémenté dans l'API dès que possible!

Recommended Posts

Exécutons Fusion 360 avec Python Partie 11 Puisqu'il n'y a aucun point le long du chemin dans l'API, j'ai pensé à une alternative
J'ai réfléchi à la raison pour laquelle Python self est nécessaire avec le sentiment d'un interpréteur Python
Lors de la lecture d'une image avec SimpleITK, il y a un problème s'il y a du japonais dans le chemin
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
Le dernier NGINX est un serveur d'applications! ?? J'ai mesuré le benchmark de NGINX Unit avec PHP, Python, Go! !!
Comment est le progrès? Continuons le boom ?? en Python
Puisqu'il n'y a pas de description sur la façon de créer un environnement pour nnabla avec Docker, y compris le GPU, je l'ai essayé moi-même Partie 1
Liste des codes de langue utilisés dans Twitter (y compris l'API) (avec dictionnaire Python). Quelle est la langue la plus couramment utilisée?
J'ai essayé de refactoriser le code du modèle publié dans "Obtenir des images de l'API Flickr avec Python" (Partie 2)
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Je veux colorer une partie de la chaîne Excel avec Python
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Partie 1 J'ai écrit un exemple de la réponse au problème de référence de l'écriture hors ligne en temps réel en Python
J'ai essayé d'expliquer comment obtenir le contenu de l'article avec l'API MediaWiki d'une manière facile à comprendre avec des exemples (Python 3)
J'ai installé Pygame avec Python 3.5.1 dans l'environnement de pyenv sur OS X
Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python
En voici une, je vais résumer les applications équipées "d'intelligence artificielle" qui m'intéressaient
[New Corona] Le prochain pic est-il en décembre? J'ai essayé l'analyse des tendances avec Python!
J'ai posé le problème de la séquence tribonatch en C ++ et le nombre d'appels de fonction lors de l'écriture avec une fonction de récurrence (python est également disponible)
Depuis que j'ai touché Tensorflow pendant 2 mois, j'ai expliqué le réseau de neurones convolutifs d'une manière facile à comprendre avec 95,04% d'identification «hiragana manuscrite».