Name
draw_nurbsT_draw_nurbsDrawNurbsdraw_nurbsDrawNurbsDrawNurbs — Interaktives Erstellen einer NURBS-Kurve.
Herror 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)
HXLDCont HXLDCont::DrawNurbs(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)
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
void HOperatorSetX.DrawNurbs(
[out] IHUntypedObjectX** ContOut, [in] VARIANT WindowHandle, [in] VARIANT Rotate, [in] VARIANT Move, [in] VARIANT Scale, [in] VARIANT KeepRatio, [in] VARIANT Degree, [out] VARIANT* Rows, [out] VARIANT* Cols, [out] VARIANT* Weights)
VARIANT HXLDContX.DrawNurbs(
[in] IHWindowX* WindowHandle, [in] BSTR Rotate, [in] BSTR Move, [in] BSTR Scale, [in] BSTR KeepRatio, [in] Hlong Degree, [out] VARIANT* Cols, [out] VARIANT* Weights)
IHXLDContX* HWindowX.DrawNurbs(
[in] BSTR Rotate, [in] BSTR Move, [in] BSTR Scale, [in] BSTR KeepRatio, [in] Hlong Degree, [out] VARIANT* Rows, [out] VARIANT* Cols, [out] VARIANT* Weights)
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)
draw_nurbsdraw_nurbsDrawNurbsdraw_nurbsDrawNurbsDrawNurbs liefert die Kontur ContOutContOutContOutContOutContOutcontOut und
Kontrollinformationen (RowsRowsRowsRowsRowsrows, ColsColsColsColsColscols und
WeightsWeightsWeightsWeightsWeightsweights) einer NURBS-Kurve, die interaktiv durch den Benutzer
im Fenster WindowHandleWindowHandleWindowHandleWindowHandleWindowHandlewindowHandle erzeugt worden ist. Zusätzliche
Informationen über NURBS-Kurven finden sich in der Dokumentation des
Operators gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXld. Um die Kontrollinformationen
RowsRowsRowsRowsRowsrows, ColsColsColsColsColscols und WeightsWeightsWeightsWeightsWeightsweights in einem Aufruf des
Operators gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXld zu verwenden, muss dort der
Knotenvektor KnotsKnotsKnotsKnotsKnotsknots auf 'auto'"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_interpDrawNurbsInterpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterp
durch Interpolation von Stützstellen (die interaktiv manipuliert werden
können) erzeugt.
Direkt nach dem Aufruf von draw_nurbsdraw_nurbsDrawNurbsdraw_nurbsDrawNurbsDrawNurbs 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 DegreeDegreeDegreeDegreeDegreedegree
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 (RotateRotateRotateRotateRotaterotate,
MoveMoveMoveMoveMovemove, ScaleScaleScaleScaleScalescale auf 'true'"true""true""true""true""true" gesetzt wurde. Die Kontur
wird zusammen mit einem Kreuz in der Mitte, einem Pfeil nach rechts, falls
RotateRotateRotateRotateRotaterotate auf 'true'"true""true""true""true""true" gesetzt wurde, und einem Doppelpfeil,
falls ScaleScaleScaleScaleScalescale auf 'true'"true""true""true""true""true" gesetzt wurde, dargestellt.
Die Kurve kann
-
verschoben werden, indem man mit der linke Maustaste auf das Kreuz
im Mittelpunkt klickt und dann die Kurve an die neue Position schiebt.
-
rotiert werden, indem man mit der linken Maustaste auf den Pfeil
klickt und die Maus bewegt bis die Kurve die gewünschte Lage eingenommen
hat.
-
skaliert werden, indem der Doppelpfeil verschoben wird. Um das
Seitenverhältnis beim Skalieren beizubehalten, muss der Parameter
KeepRatioKeepRatioKeepRatioKeepRatioKeepRatiokeepRatio auf 'true'"true""true""true""true""true" gesetzt werden.
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_nurbsDrawNurbsdraw_nurbsDrawNurbsDrawNurbs 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_colorSetColorset_colorSetColorSetColor,
set_coloredset_coloredSetColoredset_coloredSetColoredSetColored, set_line_widthset_line_widthSetLineWidthset_line_widthSetLineWidthSetLineWidth und set_line_styleset_line_styleSetLineStyleset_line_styleSetLineStyleSetLineStyle
gesetzt werden können. Das Kontrollpolygon und alle Anfasser werden in
der zweiten Farbe gezeichnet, die via set_colorset_colorSetColorset_colorSetColorSetColor oder
set_coloredset_coloredSetColoredset_coloredSetColoredSetColored gesetzt wurde. Ihre Linienbreite ist fest auf 1 gesetzt,
außerdem werden ihre Linien durchgezogen gezeichnet.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Rotation ermöglichen?
Defaultwert:
'true'
"true"
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
Verschieben ermöglichen?
Defaultwert:
'true'
"true"
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
Skalieren ermöglichen?
Defaultwert:
'true'
"true"
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
Seitenverhältnis beim Skalieren beibehalten?
Defaultwert:
'true'
"true"
"true"
"true"
"true"
"true"
Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
Grad p der Kurve. Vernünftige Werte liegen zwischen 3
und 25.
Defaultwert: 3
Wertevorschläge: 2, 3, 4, 5
Restriktion: Degree >= 2
Zeilenkoordinaten des Kontrollpolygons.
Spaltenkoordinaten des Kontrollpolygons.
draw_nurbsdraw_nurbsDrawNurbsdraw_nurbsDrawNurbsDrawNurbs liefert den Wert 2 (H_MSG_TRUE), falls das Fenster gültig ist.
Ansonsten wird eine Fehlerbehandlung durchgeführt.
open_windowopen_windowOpenWindowopen_windowOpenWindowOpenWindow
set_coloredset_coloredSetColoredset_coloredSetColoredSetColored,
set_line_widthset_line_widthSetLineWidthset_line_widthSetLineWidthSetLineWidth,
set_drawset_drawSetDrawset_drawSetDrawSetDraw,
set_insertset_insertSetInsertset_insertSetInsertSetInsert
draw_xlddraw_xldDrawXlddraw_xldDrawXldDrawXld,
draw_nurbs_interpdraw_nurbs_interpDrawNurbsInterpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterp
draw_nurbs_moddraw_nurbs_modDrawNurbsModdraw_nurbs_modDrawNurbsModDrawNurbsMod,
draw_nurbs_interpdraw_nurbs_interpDrawNurbsInterpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterp,
gen_contour_nurbs_xldgen_contour_nurbs_xldGenContourNurbsXldgen_contour_nurbs_xldGenContourNurbsXldGenContourNurbsXld
Foundation