draw_nurbsT_draw_nurbsDrawNurbsDrawNurbs (Operator)

Name

draw_nurbsT_draw_nurbsDrawNurbsDrawNurbs — Interaktives Erstellen einer NURBS-Kurve.

Warnung

Dieser Operator kann nicht in HDevelop-Grafikfenstern verwendet werden, die mit dev_open_window geöffnet wurden.

Signatur

draw_nurbs( : ContOut : WindowHandle, Rotate, Move, Scale, KeepRatio, Degree : Rows, Cols, Weights)

Herror T_draw_nurbs(Hobject* ContOut, const Htuple WindowHandle, const Htuple Rotate, const Htuple Move, const Htuple Scale, const Htuple KeepRatio, const Htuple Degree, Htuple* Rows, Htuple* Cols, Htuple* Weights)

void DrawNurbs(HObject* ContOut, const HTuple& WindowHandle, const HTuple& Rotate, const HTuple& Move, const HTuple& Scale, const HTuple& KeepRatio, const HTuple& Degree, HTuple* Rows, HTuple* Cols, HTuple* Weights)

void HXLDCont::DrawNurbs(const HWindow& WindowHandle, const HString& Rotate, const HString& Move, const HString& Scale, const HString& KeepRatio, Hlong Degree, HTuple* Rows, HTuple* Cols, HTuple* Weights)

void HXLDCont::DrawNurbs(const HWindow& WindowHandle, const char* Rotate, const char* Move, const char* Scale, const char* KeepRatio, Hlong Degree, HTuple* Rows, HTuple* Cols, HTuple* Weights)

void HXLDCont::DrawNurbs(const HWindow& WindowHandle, const wchar_t* Rotate, const wchar_t* Move, const wchar_t* Scale, const wchar_t* KeepRatio, Hlong Degree, HTuple* Rows, HTuple* Cols, HTuple* Weights)   (Nur Windows)

HXLDCont HWindow::DrawNurbs(const HString& Rotate, const HString& Move, const HString& Scale, const HString& KeepRatio, Hlong Degree, HTuple* Rows, HTuple* Cols, HTuple* Weights) const

HXLDCont HWindow::DrawNurbs(const char* Rotate, const char* Move, const char* Scale, const char* KeepRatio, Hlong Degree, HTuple* Rows, HTuple* Cols, HTuple* Weights) const

HXLDCont HWindow::DrawNurbs(const wchar_t* Rotate, const wchar_t* Move, const wchar_t* Scale, const wchar_t* KeepRatio, Hlong Degree, HTuple* Rows, HTuple* Cols, HTuple* Weights) const   (Nur Windows)

static void HOperatorSet.DrawNurbs(out HObject contOut, HTuple windowHandle, HTuple rotate, HTuple move, HTuple scale, HTuple keepRatio, HTuple degree, out HTuple rows, out HTuple cols, out HTuple weights)

void HXLDCont.DrawNurbs(HWindow windowHandle, string rotate, string move, string scale, string keepRatio, int degree, out HTuple rows, out HTuple cols, out HTuple weights)

HXLDCont HWindow.DrawNurbs(string rotate, string move, string scale, string keepRatio, int degree, out HTuple rows, out HTuple cols, out HTuple weights)

Beschreibung

draw_nurbsdraw_nurbsDrawNurbsDrawNurbsDrawNurbs liefert die Kontur ContOutContOutContOutContOutcontOut und Kontrollinformationen (RowsRowsRowsRowsrows, ColsColsColsColscols und WeightsWeightsWeightsWeightsweights) einer NURBS-Kurve, die interaktiv durch den Benutzer im Fenster WindowHandleWindowHandleWindowHandleWindowHandlewindowHandle erzeugt worden ist. Zusätzliche Informationen über NURBS-Kurven finden sich in der Dokumentation des Operators gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXldGenContourNurbsXld. Um die Kontrollinformationen RowsRowsRowsRowsrows, ColsColsColsColscols und WeightsWeightsWeightsWeightsweights in einem Aufruf des Operators gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXldGenContourNurbsXld zu verwenden, muss dort der Knotenvektor KnotsKnotsKnotsKnotsknots auf 'auto'"auto""auto""auto""auto" gesetzt werden.

Die NURBS-Kurve wird durch Manipulation ihres Kontrollpolygons gezeichnet. Dagegen wird die NURBS-Kurve mit dem Operator draw_nurbs_interpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterpDrawNurbsInterp durch Interpolation von Stützstellen (die interaktiv manipuliert werden können) erzeugt. Direkt nach dem Aufruf von draw_nurbsdraw_nurbsDrawNurbsDrawNurbsDrawNurbs kann man durch Drücken der linken Maustaste Punkte zum Kontrollpolygon hinzufügen. Der zuletzt angehängte Punkt kann durch Drücken der Steuerungstaste (Strg, Ctrl) gelöscht werden. Sobald das Kontrollpolygon aus 3 Punkten besteht, werden der erste und der letzte Punkt mit einem zusätzlichen Quadrat markiert. Durch Klicken auf den ersten oder letzten Kontrollpunkt wird die Kurve geschlossen bzw. wieder geöffnet. Sobald mehr als DegreeDegreeDegreeDegreedegree Kontrollpunkte vorhanden sind, wird die NURBS-Kurve angezeigt, die durch das Kontrollpolygon und die Gewichte bestimmt ist.

Der zuletzt angefasste Kontrollpunkt wird von einem Kreis umgeben, der das Gewicht dieses Punktes visualisiert. Die Größe des Kreises und damit das Gewicht kann durch Ziehen der Kreislinie mit der Maus verändert werden.

Bestehende Kontrollpunkte können mit gedrückter Maustaste verschoben werden. Außerdem können neue Punkte auf dem Kontrollpolygon eingefügt werden (um dieses zu verfeinern), indem mit der Maus auf die gewünschte Stelle auf dem Kontrollpolygon geklickt wird.

Durch Drücken der Umschalttaste kann in den Modus zum Transformieren der Kurve gewechselt werden. In diesem Modus kann die Kontur rotiert, verschoben und skaliert werden, jedoch nur, wenn der entsprechende Parameter (RotateRotateRotateRotaterotate, MoveMoveMoveMovemove, ScaleScaleScaleScalescale auf 'true'"true""true""true""true" gesetzt wurde. Die Kontur wird zusammen mit einem Kreuz in der Mitte, einem Pfeil nach rechts, falls RotateRotateRotateRotaterotate auf 'true'"true""true""true""true" gesetzt wurde, und einem Doppelpfeil, falls ScaleScaleScaleScalescale auf 'true'"true""true""true""true" gesetzt wurde, dargestellt.

Die Kurve kann

Durch ein weiteres Drücken der Umschalttaste wechselt man zurück in den Editiermodus. Ein Klick mit der rechten Maustaste beendet die Prozedur. Unter macOS kann draw_nurbsdraw_nurbsDrawNurbsDrawNurbsDrawNurbs auch durch Drücken der Escape-Taste beendet werden.

Das Aussehen der Kurve beim Zeichnen wird durch die Linienbreite, den Linienstil und die Farbe bestimmt, die mit den Operatoren set_colorset_colorSetColorSetColorSetColor, set_coloredset_coloredSetColoredSetColoredSetColored, set_line_widthset_line_widthSetLineWidthSetLineWidthSetLineWidth und set_line_styleset_line_styleSetLineStyleSetLineStyleSetLineStyle gesetzt werden können. Das Kontrollpolygon und alle Anfasser werden in der zweiten Farbe gezeichnet, die via set_colorset_colorSetColorSetColorSetColor oder set_coloredset_coloredSetColoredSetColoredSetColored gesetzt wurde. Ihre Linienbreite ist fest auf 1 gesetzt, außerdem werden ihre Linien durchgezogen gezeichnet.

Ausführungsinformationen

Parameter

ContOutContOutContOutContOutcontOut (output_object)  xld_cont objectHXLDContHXLDContHobject *

Kontur der NURBS-Kurve.

WindowHandleWindowHandleWindowHandleWindowHandlewindowHandle (input_control)  window HWindow, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Fenster-Handle.

RotateRotateRotateRotaterotate (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Rotation ermöglichen?

Defaultwert: 'true' "true" "true" "true" "true"

Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"

MoveMoveMoveMovemove (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Verschieben ermöglichen?

Defaultwert: 'true' "true" "true" "true" "true"

Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"

ScaleScaleScaleScalescale (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Skalieren ermöglichen?

Defaultwert: 'true' "true" "true" "true" "true"

Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"

KeepRatioKeepRatioKeepRatioKeepRatiokeepRatio (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Seitenverhältnis beim Skalieren beibehalten?

Defaultwert: 'true' "true" "true" "true" "true"

Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"

DegreeDegreeDegreeDegreedegree (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Grad p der Kurve. Vernünftige Werte liegen zwischen 3 und 25.

Defaultwert: 3

Wertevorschläge: 2, 3, 4, 5

Restriktion: Degree >= 2

RowsRowsRowsRowsrows (output_control)  coordinates.y-array HTupleHTupleHtuple (real) (double) (double) (double)

Zeilenkoordinaten des Kontrollpolygons.

ColsColsColsColscols (output_control)  coordinates.x-array HTupleHTupleHtuple (real) (double) (double) (double)

Spaltenkoordinaten des Kontrollpolygons.

WeightsWeightsWeightsWeightsweights (output_control)  real-array HTupleHTupleHtuple (real) (double) (double) (double)

Gewichtsvektor.

Ergebnis

draw_nurbsdraw_nurbsDrawNurbsDrawNurbsDrawNurbs liefert den Wert 2 (H_MSG_TRUE), falls das Fenster gültig ist. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

open_windowopen_windowOpenWindowOpenWindowOpenWindow

Nachfolger

set_coloredset_coloredSetColoredSetColoredSetColored, set_line_widthset_line_widthSetLineWidthSetLineWidthSetLineWidth, set_drawset_drawSetDrawSetDrawSetDraw, set_insertset_insertSetInsertSetInsertSetInsert

Alternativen

draw_xlddraw_xldDrawXldDrawXldDrawXld, draw_nurbs_interpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterpDrawNurbsInterp

Siehe auch

draw_nurbs_moddraw_nurbs_modDrawNurbsModDrawNurbsModDrawNurbsMod, draw_nurbs_interpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterpDrawNurbsInterp, gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXldGenContourNurbsXld

Modul

Foundation