3D-Netzobjekt in AutoCAD (pyautocad)

In diesem Blog-Beitrag werden wir uns ansehen, wie wir mit pyautocad-Modul in AutoCAD mit 3D-Netzobjekten arbeiten können. Wenn wir möchten, können wir auch das pywin32-Modul verwenden, um mit 3D-Mesh zu arbeiten.

Bedeutung der 3D-Mesh-Darstellung

Das 3D-Netz kann in mehreren Branchen für unterschiedliche Zwecke eingesetzt werden.

Als Bauingenieur kann ich definitiv sagen, dass bei der Arbeit als Landvermesser das 3D-Netz bei der Darstellung von Konturpunkten sehr hilfreich sein kann. Es kann auch bei Konstruktionsfehlern verwendet werden, indem eine Inspektion der Koordinaten jedes kleinen Elements einer Struktur durchgeführt wird.

Es kann in der mechanischen Industrie bei der Arbeit mit Maschinendesign verwendet werden.

Heutzutage verwenden wir das Mesh-Modell auch zur Gesichtserkennung. Hier kann es darüber hinaus z. B. zur Erkennung von Veränderungen im Gesichtsausdruck eingesetzt werden.

Es gibt weitere solcher Anwendungsfälle von 3D-Mesh, die in vielen Branchen eine sehr wichtige Rolle spielen.

Initiieren des Skripts in Python mit pyautocad oder pywin32

Wir können unsere Arbeitsumgebung mit dem pyautocad-Modul wie unten angegeben einrichten:

from pyautocad import Autocad, aDouble

acad = Autocad(create_if_not_exists=True)

Alternativ können wir auch win32com.client verwenden, um die Dinge gemäß dem folgenden Skript zum Laufen zu bringen:

from win32com.client import *
import pythoncom

acad = win32com.client.Dispatch("AutoCAD.Application")
acadModel = acad.ActiveDocument.ModelSpace

def aDouble(*argv):
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (argv))

Hinzufügen von 3D-Mesh zu AutoCAD-Vorlagen mit pyautocad oder pywin32

Um ein 3D-Netz auf die AutoCAD-Vorlage zu zeichnen, ist ein sehr kleiner Befehl mit wenigen Parametern erforderlich.

Die Syntax des Befehls ist wie folgt:

object.Add3DMesh(M, N, PointsMatrix)

Hier nimmt M & N eine ganzzahlige Eingabe im Bereich von 2–256, die die Größe des Arrays in (oder die Anzahl der Scheitelpunkte entlang) in beiden M- und N-Richtungen darstellt.

Abbildung 1: Netzstruktur gemäß Autodesk-Dokumentation

Die PointsMatrix repräsentiert das Array von Doubles. Es ist dieselbe Matrix, die wir zB beim Erstellen von Polylinien mit pyautocad verwenden .

Lassen Sie uns ein solches Netzmodell anhand des vorhandenen Beispiels erstellen, das in der Autodesk-Dokumentation bereitgestellt wird. Ich werde die PointsMatrix nehmen, wie in der Dokumentation angegeben.

pmatrx = aDouble(10, 1, 3, 10, 5, 5, 10, 10, 3, 15, 1, 0, 15, 5, 0, 15, 10, 0, 20, 1, 0, 20, 5, -1, 20, 10, 0, 25, 1, 0, 25, 5,  0, 25, 10, 0)

mesh1 = acad.model.Add3DMesh(4, 3, pmatrx)

In diesem Code haben wir 12 Koordinatenpunkte in der PointsMatrix bereitgestellt.

Außerdem wollen wir 4 Scheitelpunkte entlang der M-Richtung und 3 Scheitelpunkte entlang der N-Richtung.

Abbildung 2.1: Draufsicht auf das 3D-Netz, das mit Pyautocad auf der AutoCAD-Vorlage erstellt wurde
Abbildung 2.2: Ansicht der oberen rechten Ecke des 3D-Netzes, das auf der AutoCAD-Vorlage mit Pyautocad erstellt wurde

Analyse des neu erstellten 3D-Netzes

Wie wir in den Abbildungen 2.1 und 2.2 sehen können, haben wir 4 Scheitelpunkte in der M-Richtung und 3 Scheitelpunkte entlang N, wie im Befehl übergeben.

Bevor wir dasselbe zeichnen, haben wir uns vorgestellt, dass die Scheitelpunkte dieses Format haben sollen. dh

Abbildung 3.1: Darstellung der 3D-Netzbildung

Andernfalls, wenn wir versuchen, ein Netz mit einer Polylinie zu zeichnen, indem wir denselben Satz von Koordinatenpunkten verwenden, führt dies nicht zu einem Netz, sondern verbindet einfach die Punkte in einer bestimmten Reihe, die ein Zickzackmuster bilden.

pl = acad.model.AddPolyline(pmatrx)
Abbildung 3.2: Polylinie mit demselben Koordinatensatz wie zum Zeichnen des 3D-Netzes

Wir können auch sehen, wie das Netzmodell aussieht, wenn wir die realistische Ansicht anstelle des 2D-Drahtmodells verwenden. Dies zeigt uns deutlich die Vertiefungen oder Buckel, falls vorhanden, im gegebenen Netzmodell.

Abbildung 3.3: Realistische Darstellung eines 3D-Netzes

Wie oben erwähnt, ist in Abbildung 3.3 die Vertiefung in der rechten Hälfte des Netzes deutlich zu sehen, außerdem ragt der mittlere Teil der linken Hälfte an der Grenze heraus.

Eigenschaften eines 3D-Netzes mit Pyautocad

Wir haben einige netzspezifische Methoden, die verwendet werden können, um die Eigenschaften eines bestimmten Netzes abzurufen, abgesehen von einigen gängigen Methoden, die wir in AutoCAD-Operationen verwenden.

print("Coordinates of the mesh:", end='')
print(mesh1.Coordinates)
print("Is mesh one is closed in M direction: " + str(mesh1.MClose))
print("Density of mesh in M direction: " + str(mesh1.MDensity))
print("Number of vertices in M direction: " + str(mesh1.MVertexCount))
print("Is mesh one is closed in N direction: " + str(mesh1.NClose))
print("Density of mesh in N direction: " + str(mesh1.NDensity))
print("Number of vertices in N direction: " + str(mesh1.NVertexCount))


O/p:

Coordinates of the mesh:(10.0, 1.0, 3.0, 10.0, 5.0, 5.0, 10.0, 10.0, 3.0, 15.0, 1.0, 0.0, 15.0, 5.0, 0.0, 15.0, 10.0, 0.0, 20.0, 1.0, 0.0, 20.0, 5.0, -1.0, 20.0, 10.0, 0.0, 25.0, 1.0, 0.0, 25.0, 5.0, 0.0, 25.0, 10.0, 0.0)
Is mesh one is closed in M direction: False
Density of mesh in M direction: 0
Number of vertices in M direction: 4
Is mesh one is closed in N direction: False
Density of mesh in N direction: 0
Number of vertices in N direction: 3

You May Also Like

Leave a Reply

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.