Lassen Sie uns Fusion 360 mit Python Part 11 ausführen. Da die API keinen Punkt auf dem Pfad enthält, habe ich mir eine Alternative überlegt

Einführung

Fusion 360 verfügt über einen Befehl ** Punkte entlang des Pfads **. .. Dies ist eine Aufzeichnung von Drehungen und Wendungen, die versucht werden, dies mit der Fusion 360-API zu erreichen. image.png

Überprüfen Sie das Referenzhandbuch

Geben Sie ** ConstructionPointInput Object ** an, um anzugeben, wie mit der Fusion 360-API ein Konstruktionspunkt erstellt werden soll bd66-b1138536767f) wird verwendet. Die Methoden im Referenzhandbuch, die mit ** setBy ** beginnen, entsprechen jedem Befehl in der Benutzeroberfläche. Suchen Sie daher nach "Punkten entlang des Pfads". image.png ** setByCenter **> Kreis / Kugel / Stier-Mittelpunkt ** setByEdgePlane **> Punkte auf Kanten und Ebenen //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 **> Punkte, durch die die drei Ebenen verlaufen ** setByTwoEdges **> Passing Point für zwei Kanten //help.autodesk.com/view/NINVFUS/JPN/?guid=GUID-C0483AF3-AD6E-48C5-8BA7-0443C8AB4D65) Das···? ?? ?? Gibt es eine Methode, die der Linie entlang des Pfades entspricht? ?? ??

Es gab keinen "Punkt entlang des Pfades", aber es gab ein "Flugzeug entlang des Pfades"!

Mit einem Befehl ähnlich einem Punkt entlang des Pfads [** Ebene entlang des Pfads ](https://help.autodesk.com/view/NINVFUS/JPN/?guid=GUID-4ED5A7DB-8EAE-466E- Es gibt A860-8A8968BDD3F8). image.png Aus irgendeinem Grund scheint es eine [ ConstructionPlaneInput.setByDistanceOnPath-Methode **] zu geben (http://help.autodesk.com/view/fusion360/ENU/?guid=GUID-46dd5f0a-e384-4707-b431-37c0e596f328). ist. Warum gibt es eine flache Oberfläche, aber keine Punkte? Es gibt nichts, was nicht vorhanden ist. Deshalb habe ich beschlossen, wieder zu öffnen und eine Alternative in Betracht zu ziehen.

Erstellen einer Ebene entlang des Pfads> Verwenden Sie die Fusion 360-API, um den Schnittpunkt der Ebene und des Pfads zu erstellen.

Verfahren

Dies ist das Verfahren zum Erstellen gekrümmter Punkte in einer Skizze. image.png

Von der ersten und letzten Magie bis zur Mitte

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

        # 
        #Fügen Sie hier Code hinzu
        # 
        
    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

Holen Sie sich den Spline in die Skizze

Holen Sie sich den Spline in Skizze 1 und weisen Sie ihn crvPath zu

        #Holen Sie sich Skizze 1 in Skizze>Holen Sie sich die Spline-Kurve in Skizze 1
        sketch1 = rootComp.sketches.item(0)
        crvPath = sketch1.sketchCurves.sketchFittedSplines.item(0)

Erstellen Sie eine Ebene entlang des Pfades

Verwenden Sie setByDistanceOnPath, um ein Gesicht entlang des Pfads zu erstellen. Ich gebe einen Wert von 0 bis 1 mit 0 als Startpunkt und 1 als Endpunkt an, aber anstatt den numerischen Wert direkt einzugeben, ** ValueInput ** / ENU /? Guid = GUID-bdeb52e0-a6af-4909-93e8-3b13acd0e39c) Muss im Objekt angegeben werden.

        #Holen Sie sich das ConstructionPlanes-Objekt
        planes = rootComp.constructionPlanes
        
        #Holen Sie sich das ConstructionPlaneInput-Objekt
        planeInput = planes.createInput()

        #Erstellen Sie eine Ebene entlang des Pfades
        distance = adsk.core.ValueInput.createByReal(0.4)
        planeInput.setByDistanceOnPath(crvPath, distance)
        plane = planes.add(planeInput)

Machen Sie einen Schnittpunkt aus einer Ebene und einem Pfad

Fusion 360 verfügt nicht über einen Befehl zum Erstellen eines Schnittpunkts einer Ebene und eines Pfads, sondern über die ** Sketch.intersectWithSketchPlane-Methode ** Mit -7250-4694-A253-582B395AB234) können Sie den Schnittpunkt der Skizzierebene und der Kurve erstellen. Selbst wenn der angegebene Pfad eine einzelne Kurve ist, scheint es sich um ein Array zu handeln. Hier wird "crvPath" zu dem Array mit dem Namen "entity" hinzugefügt und in das Argument der intersectWithSketchPlane-Methode eingefügt.

        #Neue Skizze hinzufügen
        sketch2 = rootComp.sketches.add(plane)

        #Erstellen Sie den Schnittpunkt der Skizzierebene und des Pfads
        entities = []
        entities.append(crvPath)
        skPoints = sketch2.intersectWithSketchPlane(entities)

Wenn ich dieses Skript ausführe, sieht es so aus image.png

Zusammenfassung

Es war schön, es tun zu können, aber es war viel Arbeit und es war ziemlich mühsam. Ich habe diesen Code mit der schwachen Erwartung gezeichnet und ausgeführt, dass pointInput.setByDistanceOnPath tatsächlich verwendet werden kann, nur weil er nicht in der Referenz aufgeführt ist ... aber ich habe einen Fehler erhalten und es hat nicht funktioniert!

        # 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)

Ich möchte, dass es so schnell wie möglich in der API implementiert wird!

Recommended Posts

Lassen Sie uns Fusion 360 mit Python Part 11 ausführen. Da die API keinen Punkt auf dem Pfad enthält, habe ich mir eine Alternative überlegt
Ich dachte darüber nach, warum Python selbst mit dem Gefühl eines Python-Interpreters notwendig ist
Beim Lesen eines Bildes mit SimpleITK tritt ein Problem auf, wenn sich Japanisch im Pfad befindet
Berühren wir die API der Netatmo Weather Station mit Python. #Python #Netatmo
Der neueste NGINX ist ein Anwendungsserver! ?? Ich habe den Benchmark von NGINX Unit mit PHP, Python, Go! !!
Wie ist der Fortschritt? Lassen Sie uns mit dem Boom in Python weitermachen
Da es keine Beschreibung zum Erstellen einer Umgebung für nnabla mit Docker einschließlich GPU gibt, habe ich es selbst versucht, Teil 1
Liste der in Twitter verwendeten Sprachcodes (einschließlich API) (mit Python-Wörterbuch). Was ist die am häufigsten verwendete Sprache?
Ich habe versucht, den unter "Abrufen von Bildern von der Flickr-API mit Python" (Teil 2) veröffentlichten Vorlagencode zu überarbeiten.
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich möchte einen Teil der Excel-Zeichenfolge mit Python einfärben
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Teil 1 Ich habe ein Beispiel für die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
Ich habe versucht zu erklären, wie der Artikelinhalt mit der MediaWiki-API auf leicht verständliche Weise anhand von Beispielen abgerufen werden kann (Python 3).
Ich habe Pygame mit Python 3.5.1 in der Umgebung von pyenv unter OS X installiert
So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python
Hier ist eine, ich werde die mit "künstlicher Intelligenz" ausgestatteten Anwendungen zusammenfassen, an denen ich interessiert war
[New Corona] Ist der nächste Höhepunkt im Dezember? Ich habe die Trendanalyse mit Python versucht!
Ich habe nach dem Problem der Tribonatch-Sequenz in C ++ und der Anzahl der Funktionsaufrufe beim Schreiben mit einer Wiederholungsfunktion gefragt (Python ist ebenfalls verfügbar).
Da ich Tensorflow 2 Monate lang berührt habe, habe ich das Faltungs-Neuronale Netzwerk auf leicht verständliche Weise mit 95,04% der "handgeschriebenen Hiragana" -Identifikation erklärt.