Nurbs Kontrollscheitelpunkte

Nurbs Kontrollscheitelpunkte

Anonymous
Nicht anwendbar
2.725Aufrufe
19Antworten
Nachricht 1 von 20

Nurbs Kontrollscheitelpunkte

Anonymous
Nicht anwendbar

Hallo Allerseits,

 

ich beschäftige mich derzeit mit Nurbs-Flächen in Autocad und komme bei folgendem Problem nicht weiter:

Bei jeder Nurbs Fläche (wie auch bei Splines) lassen sich die Kontrollscheitelpunkte anzeigen. Im Falle von Splines, sind die zugehörigen x- und y-Koordinaten der Kontrollscheitelpunkte (und sogar die Gewichte) unter "Eigenschaften" zu sehen. Bei Nurbs hingegen, wird mir nur die Anzahl an U- und V-Isolinien angezeigt, welche ich auch variieren kann. Die Kontrollscheitelpunkte bei Nurbs hingegen, werden leider nur grafisch dargestellt. Aber zu eben diesen brauche ich die Koordinaten (und am besten auch die Gewichte). Hat da irgendjemand einen Tipp, wie ich diese Daten sichtbar machen kann? Ich finde leider in keinem Forum irgendeine Hilfe und in sämtlichen Autodesk Beiträgen zu Nurbs, heißt es immer nur, dass sich die Kontrollscheitelpunkte durch "ziehen" bearbeiten lassen. Das funktioniert auch, ist aber natürlich deutlich ungenauer.

Ein ganz simples Beispiel würde mir schon reichen: Rechteckige Fläche bauen -> in Nurbs konvertieren -> "Koordinaten der KS und Gewichte anzeigen" (der dritte Schritt ist der, der bei mir nicht funktioniert bzw. der, den ich in Autocad nicht finde).

 

Ich hoffe ihr könnt mir helfen, danke im Voraus!

 

L. Schrade

0 „Gefällt mir“-Angaben
Akzeptierte Lösungen (1)
2.726Aufrufe
19Antworten
Antworten (19)
Nachricht 2 von 20

m_latz
Advisor
Advisor

Ich bin jetzt auch nicht sicher, was interaktiv in AutoCAD geht. Per Programm kann man auf jeden Fall alle Informationen (Knotenvektoren, Gewichte und X/Y-Koordinaten der Scheitelpunkte) auslesen.

 

Was umständlich ist, aber am schnellsten geht ist DXF Datei erstellen und dort reinschauen. Steht auch alles drin.

 

Bei größeren Modellen, damit man das Element besser findet einfach nach der Elementreferenz / Handle suchen.

 

Gruß

 

Markus

0 „Gefällt mir“-Angaben
Nachricht 3 von 20

j.palmeL29YX
Mentor
Mentor

Wenn Dir eine Anzeige der Koordinaten in der Befehlszeile genügen sollte:  *1)

- Man kann die Kontrollpunkte mit der 3D-Fangfunktion Scheitelpunkt fangen, zB. mit dem Befehl ID

- Das kann manchmal etwas tricky werden, da man nicht direkt auf den Kontrollpunkt, sondern an eine geeignete Stelle an der Kurve/Fläche zeigen muß. Um doch direkt auf den interessierenden Kontrollpunkt zeigen zu können kann man beispielsweise den Befehl ID transparent wie im >>Video<< gezeigt (ab etwa 1:45) anwenden.

  * Objekt wählen

  * Gewünschten Kontrollpunkt anpicken (dadurch wird Strecken aktiviert)

  * Punkt ein wenig weg ziehen

  * Befehl ID transparent (mit vorangestelltem Apostroph) starten

  * den roten Punkt picken, keine OFANG notwendig -> dessen Koordinate wird in der Befehlszeile angezeigt

  * das Strecken abbrechen.

 

 

 

 

*1): Ich bin mir nicht sicher, wann und wozu Du die genauen Koordinaten benötigst. Der Sinn der Nurbs-Flächen besteht ja eigentlich darin, frei(händig) modellieren zu können. Benötigst Du genaue Abmessungen, sollten eher prozedurale Flächen benutzt werden. (Achtung: prozedurale Flächen können in NURBS umgewandelt werden (convtonurbs), zurück von NURBS in prozedurale Flächen geht nicht).

 

 

 

 

 

 

Wenn meine Antwort Dein Problem löst, klicke auf die Schaltfläche "als Lösung akzeptieren". Dies kann anderen helfen, schneller Lösungen zu finden.

 

 

Jürgen Palme
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

0 „Gefällt mir“-Angaben
Nachricht 4 von 20

Anonymous
Nicht anwendbar

Hallo ihr Beiden,

 

erst mal vielen Dank für eure Tipps! Beides hat mir weiter geholfen.

 

Um etwas Klarheit zu schaffen: ich brauche die NURBS Daten im Rahmen einer Studienarbeit und letzten Endes läuft es daraus hinaus, die Daten mit einem anderen Programm (Matlab) auslesen zu können (später erfolgen dann Berechnungen innerhalb dieses Programms). Was das betrifft, scheint mir die Antwort von @m_latz die zunächst angenehmere zu sein. Hierzu hätte ich aber eine Frage, da ich mich an dieser Lösung bereits selbst versucht habe, aber leider gescheitert bin. Wenn ich die Datei als DXF Datei erstelle, finde ich leider nicht den "Weg" zu Knotenvektoren, Gewichten und X/Y-Koordinaten der Scheitelpunkte. Da harpert es bei mir etwas an der Routine in AutoCad. Zumindest im "List"-Befehl sehe ich die gesuchten Daten leider nicht. Wo genau stehen die in der DXF Datei?

 

Zu deiner Antwort @j.palmeL29YX : mit deiner Methode klappt soweit alles und ich kann die separaten Koordinaten der KS auslesen. Da ich zum jetzigen Zeitpunkt aber noch nicht weiß, wie umfangreich meine Modelle in der Studienarbeit werden, ist es für mich letztendlich vermutlich hilfreicher, wenn ich alle Daten in einer Liste (wie oben das Beispiel von @m_latz) aufgeführt habe. Trotzdem Danke für deinen Tipp, jetzt weiß ich immerhin, dass die Daten irgendwo existieren und ich nicht verloren bin.

 

Freundliche Grüße

Luis

0 „Gefällt mir“-Angaben
Nachricht 5 von 20

m_latz
Advisor
Advisor
Akzeptierte Lösung

Guten Abend Luis,

 

ja ich habe gerade mal ein DXF erzeugt. Du hast recht ist nicht (mehr) direkt leserlich im DXF drin.

 

Aber es gibt ja immer viele Wege zum Ziel 😉

 

Und da ich jetzt weiß, daß du das für Matlab brauchst, ist es sowieso besser das über IGES zu machen.

 

Also ich habe einfach eine IGES-Datei (Befehl igesout) erzeugt. Ist ein genormtes Format zum Austausch auch von Geometriedaten (NURBS-Fläche Elementtyp: 128) Referenzhandbuch kannst du dir hier herunterladen:

 

https://filemonger.com/specs/igs/devdept.com/version6.pdf

 

Und IGES kann man eventuell auch direkt in Matlab einlesen, zumindest geht es aber über dieses Programm:

 

https://www.mathworks.com/matlabcentral/fileexchange/13253-iges-toolbox

 

Ich hoffe das hilft Dir weiter, ansonsten nochmal melden.

 

Gruß

 

Markus

0 „Gefällt mir“-Angaben
Nachricht 6 von 20

Anonymous
Nicht anwendbar

Guten Abend Markus,

 

vielen Dank für diese schnelle (und hilfreiche) Antwort! Ich werde mich morgen daran versuchen und mich dann zurückmelden.

 

Schönen Abend noch!

0 „Gefällt mir“-Angaben
Nachricht 7 von 20

Anonymous
Nicht anwendbar

Hi Markus,

 

die IGES Toolbox scheint den Rahmen meiner Problemstellung deutlich zu sprengen (und gibt mir mehrere Fehler aus, wenn ich sie in Matlab laufen lassen will). Für meine Aufgabe ist es ausreichend, wenn die Matlab Routine nur die Gewichte, Koordinaten der Kontrollpunkte und Knotenvektoren extrahiert (ohne plots etc.) und in Matlab in einem Array hinterlegt.

Da die Hauptfunktion der Toolbox aus knapp 5000 Zeichen (und sämtlichen Unterfunktionen) besteht, kann ich hier leider nur sehr schwer nachvollziehen, wann was im Code passiert.

Trotzdem bin ich schon mal einen großen Schritt weiter, da ich jetzt weiß, dass ich die NURBS-Daten irgendwie mittels IGES-Datei von Autocad nach Matlab bekomme und wie ich eine IGES-Datei erzeuge.

Mein nächster Schritt wird dann wohl sein die Routine in Matlab zu schreiben, die die Daten aus der IGES-Datei liest.

Danke für deine Hilfe!

 

Freundliche Grüße

Luis

0 „Gefällt mir“-Angaben
Nachricht 8 von 20

Anonymous
Nicht anwendbar

Eine Frage hätte ich an dieser Stelle aber noch:

Weißt du, wie so eine IGES-Datei aufgebaut ist? Ich brauche ja irgendeinen Ansatz, mit dem ich Matlab befehle, auf genau die Stellen der IGES-Datei zuzugreifen, in denen Knotenvektor und co. stehen, nur komme ich nicht auf diesen Ansatz, da mir die Form einer solchen Datei eben nicht bekannt ist. Gruß Luis

0 „Gefällt mir“-Angaben
Nachricht 9 von 20

m_latz
Advisor
Advisor

Hallo Luis,

 

ja das ist nicht ganz so einfach, da die IGES Datei in mehrere Sektionen aufgeteilt ist, die variabel sind. Du brauchst die Daten aus der Parameter Data Section, in welcher Zeile diese beginnt steht wiederum in der Terminate Section usw.

 

In der Parameter Data Section müßtest Du dann nach Entity Type 128 suchen, usw.

 

Steht eigentlich alles im IGES-Handbuch (siehe Link in früherem Post). Aber wenn man noch nie was mit IGES zu tun hatte ist das etwas aufwändig.

 

Und ich dachte eigentlich, daß Matlab das vielleicht direkt einlesen kann ... aber anscheinend nicht und diese Toolbox funktioniert auch nicht.

 

Wie auch immer. Am einfachsten wäre ja du machst eine Beispieldatei wie Du das gerne hättest, damit Du das am einfachsten in Matlab einlesen kannst.

 

Ich schreibe Dir dann ein kleines ObjectArx-Programm, das eine in AutoCAD selektierte Fläche genauso rausschreibt.

Du kriegst dann das Visual Studio Projekt und könntest eventuell noch selbst Anpassungen machen ...

 

Sind nur ein paar Zeilen Code. Aber ich komme erst am Wochenende dazu, da ich gerade viel zu tun habe.

 

Wäre das ein Ansatz ?

 

Gruß

 

Markus

0 „Gefällt mir“-Angaben
Nachricht 10 von 20

Anonymous
Nicht anwendbar

Hallo Markus,

 

das hört sich sehr gut an, vielen Dank schon mal vorab.

 

Meinst du mit Beispieldatei eine Geometrie in Autocad?

 

Ich setze mich bis zum Wochenende dann noch mal mit dem IGES-Handbuch auseinander.

 

Gruß

Luis

0 „Gefällt mir“-Angaben
Nachricht 11 von 20

m_latz
Advisor
Advisor

Nee,

 

Du brauchst doch eine Textdatei, in der die mathematischen Daten der NURBS-Fläche drin stehen, die Du dann in Matlab importierst / einliest.

 

Zum Beispiel nach IGES-Vorbild:

 

K1 Integer Upper index of first sum.
K2 Integer Upper index of second sum.
M1 Integer Degree of first set of basis functions
M2 Integer Degree of second set of basis functions

TK1(...) - TK1(...) Double Knot sequence in U.

TK2(...) - TK2(...) Double Knot sequence in V.

W(0,0) - W(K1, K2) Double Weights

XYZ(0,0) - (K1, K2) Double Control Points.

... (eventuell noch andere Parameter)

 

Da müßtest Du mal in Matlab nachlesen, wie dort genau eine NURBS-Fläche definiert ist. Gibt noch so Flags wie Periodisch, Geschlossen, usw.

 

Das kann man als CSV-Datei rausschreiben, fest formatiert, XML, usw.

 

Deswegen frage ich Dich nach einem Beispiel ...

 

Gruß

 

Markus

 

PS: Ich hoffe ich habe jetzt adhoc bei der mathematischen Beschreibung der NURBS Fläche keinen Fehler gemacht, aber es geht ja nur ums Prinzip.

0 „Gefällt mir“-Angaben
Nachricht 12 von 20

Anonymous
Nicht anwendbar

Ich hab noch eine Methode entdeckt, die eventuell einfacher sein könnte:

 

Wenn ich die Dateien einer in Autocad gezeichneten Kontur extrahiere, besteht ja die Möglichkeit auszuwählen, welches Datei-Format am Ende rauskommen soll. Zur Option stehen: xls, csv, txt...

txt wäre das perfekte Format, das könnte ich ohne weiteres in Matlab laden. Natürlich gibts dabei wieder ein neues Problem: es können nur spezielle Daten extrahiert werden (unabhängig vom Format, das ich haben möchte).

Im Anhang ist ein Screenshot der Daten die man extrahieren kann. Wenn ich hier irgendwie die gesuchten Größen einstellen kann, wäre mein komplettes Problem gelöst.

Weißt du, ob man da noch irgendetwas drehen kann? Oder ist Autocad auf die Ausgabe dieser Daten "festgesetzt"?

 

Gruß

Luis

0 „Gefällt mir“-Angaben
Nachricht 13 von 20

m_latz
Advisor
Advisor

Ja das hilft Dir auch nicht wirklich weiter.

 

Und xls, csv, txt sagt ja nur etwas allgemeines über das Dateiformat aus:

 

xls -> Excel-Dateiformat

csv -> Comma Separated Values

txt -> Textdatei

 

Aber da ist ja überhaupt noch nicht definiert, wie das Element mathematisch in die Datei geschrieben wird.

 

Zum verdeutlichen ein einfaches Beispiel:

 

Ich kann einen Kreis definieren über den Mittelpunkt (xyz) und den Radius, aber auch über Mittelpunkt (xyz) und den Durchmesser oder über 3 Punkte, usw.

 

Deshalb lies bitte nach, wie Matlab eine NURBS-Fläche definiert !

 

Gruß

 

Markus

0 „Gefällt mir“-Angaben
Nachricht 14 von 20

Anonymous
Nicht anwendbar

Für den Anfang wäre es wohl am einfachsten , eine rechteckige Geometrie in der Ebene zu beschreiben, da in diesem Fall die Gewichte der Kontrollpunkte alle =1 sind.

 

Die Kontrollpunkte könnten also z.B. so aussehen: [0 0; 10 0; 10 10; 0 10] (beschreibt ein Quadrat)

Die zugehörigen Gewichte sind dann: [1;1;1;1]

Die beiden Knotenvektoren U und V beeinflussen die Basisfunktionen und mit all diesen Größen landen wir dann (nach endlos viel Theorie) am Ende bei den Nurbs.

Der Einfachheit halber, bieten sich auch hier klassische Beispiele aus der Literatur an:

U=[0 0 0 1 1 1]

V=[0 0 0 1 1 1]

Bedingt durch die Vielfachheit der Einträge in den Knotenvektoren, haben wir Polynome des Grads p=2 und q=2.

Wenn ich diese Größen habe, kann ich die Berechnung in Matlab starten. Ich hoffe dieses Beispiel entspricht deinen Vorstellungen.

 

Gruß

Luis

0 „Gefällt mir“-Angaben
Nachricht 15 von 20

m_latz
Advisor
Advisor

Hallo Luis,

 

mit welcher Version von AutoCAD arbeitest Du denn ?

 

Gruß

 

Markus

0 „Gefällt mir“-Angaben
Nachricht 16 von 20

Anonymous
Nicht anwendbar

Hallo Markus,

 

mit Autocad Mechanical 2021.

 

Gruß

Luis

0 „Gefällt mir“-Angaben
Nachricht 17 von 20

Anonymous
Nicht anwendbar

Hallo nochmal,

 

ich habe inzwischen einige Formate ausprobiert und bin zu folgendem Ergebnis gekommen:

Wenn wir eine Nurbs-Fläche aus Autocad exportieren, finden wir in verschiedenen Formaten, verschieden viele Informationen. In einer sat-Datei zb. komme ich mir ziemlich verloren vor. Nicht nur, weil dort über 10000 Zeilen Zeichen zu finden sind, sondern auch, weil die Group Codes zu Splines (die die Größen wie Knotenvektor Einträge etc. enthalten) nicht zu finden sind.

 

Hier die Group Codes: https://www.autodesk.com/techpubs/autocad/acad2000/dxf/spline_dxf_06.htm

 

Für normale Splines bzw. Nurbs Kurven (also rationale Splines) funktionieren die super, aber ich brauche eben Nurbs-Flächen und da scheint es deutlich bessere Abhilfen als die dxf-Datei zu geben.

 

Weiterhin habe ich mich an sat-Dateien und iges-Dateien probiert. Beide scheinen alle notwendigen Informationen zu enthalten, lassen sich sehr simpel via "export" Befehl aus Autocad exportieren und können einfach per Doppelklick in Matlab geladen werden. Außerdem sind beide Formate deutlich übersichtlicher als die dxf-Datei.

 

Jetzt fehlt nur noch der letzte Schliff, da ich in beiden Formaten eben die nötigen Einträge finde, aber noch nicht ganz genau zuordnen kann. Um etwas spezifischer zu weden: die iges-Datei ist verglichen mit der sat-Datei noch mal ein "größeres Durcheinander", denn in der sat-Datei findet man direkt auf den ersten Blick die Koordinaten der Kontrollpunkte + Gewichte in folgender Form:

 

(Kontrollpunkt 1):  x, y, z, w

(Kontrollpunkt 2):  x, y, z, w         usw.

 

"Kontrollpunkt 1/2" sind hier eingeklammert, da sie in der Datei nicht als solche zu sehen sind, aber die Koordinaten.

 

In Summe tendiere ich aber zu den sat-Dateien, da diese auf mich übersichtlicher wirken.

Anbei noch ein Screenshot einer sat-Datei aus Matlab, die den Aufbau zeigt.

 

Die Geometrie stammt aber nicht von mir selbst, sondern aus einem anderen Beitrag (der in etwa das gleiche Problem behandelt wie hier). Daher konnte ich diese Geometrie sehr gut als Vergleich heranziehen.

 

https://forums.autodesk.com/t5/autocad-forum/extract-nurbs-surface-control-point-weights-from-dxf-fi...

 

Viele Grüße und ein schönes Wochenende

Luis

 

 

0 „Gefällt mir“-Angaben
Nachricht 18 von 20

m_latz
Advisor
Advisor

Hallo Luis,

 

Um die SAT-Datei richtig zu verstehen brauchst Du eine Dateibeschreibung des SAT-/ACIS-Formats.

 

Hier kannst Du Dir einen Teil herunterladen, der die Beschreibung einer B-Surf enthält:

http://paulbourke.net/dataformats/sat/sat.pdf

 

Und so wie ich Dich jetzt verstehe, würdest Du als Austauschdatei SAT verwenden, so daß ich mir das Programm sparen kann ?

 

Guß

 

Markus

0 „Gefällt mir“-Angaben
Nachricht 19 von 20

Anonymous
Nicht anwendbar

Ganz genau! Trotzdem noch mal vielen Dank für deine Hife und das Angebot.

0 „Gefällt mir“-Angaben
Nachricht 20 von 20

m_latz
Advisor
Advisor

Immer gerne, dafür ist die Community ja da.

 

Gruß

 

Markus

0 „Gefällt mir“-Angaben