📄 splshape.h
字号:
CoreExport SplineShape &operator=(SplineShape &from);
// inherited virtual methods:
// From BaseObject
CoreExport virtual int HitTest(TimeValue t, INode* inode, int type, int crossing, int flags, IPoint2 *p, ViewExp *vpt);
CoreExport virtual int HitTest(TimeValue t, INode* inode, int type, int crossing, int flags, IPoint2 *p, ViewExp *vpt, ModContext* mc);
CoreExport virtual void Snap(TimeValue t, INode* inode, SnapInfo *snap, IPoint2 *p, ViewExp *vpt);
CoreExport virtual int Display(TimeValue t, INode* inode, ViewExp *vpt, int flags);
CoreExport virtual CreateMouseCallBack* GetCreateMouseCallBack();
CoreExport virtual RefTargetHandle Clone(RemapDir& remap = NoRemap());
// Specialized xform for bezier handles
CoreExport void XFormHandles( SSXFormProc *xproc, TimeValue t, Matrix3& partm, Matrix3& tmAxis );
// Generic xform procedure.
CoreExport void XFormVerts( SSXFormProc *xproc, TimeValue t, Matrix3& partm, Matrix3& tmAxis );
// Affine transform methods
CoreExport void Move( TimeValue t, Matrix3& partm, Matrix3& tmAxis, Point3& val, BOOL localOrigin=FALSE );
CoreExport void Rotate( TimeValue t, Matrix3& partm, Matrix3& tmAxis, Quat& val, BOOL localOrigin=FALSE );
CoreExport void Scale( TimeValue t, Matrix3& partm, Matrix3& tmAxis, Point3& val, BOOL localOrigin=FALSE );
// The following is called before the first Move(), Rotate() or Scale() call
CoreExport void TransformStart(TimeValue t);
// The following is called after the user has completed the Move, Rotate or Scale operation and
// the undo object has been accepted.
CoreExport void TransformFinish(TimeValue t);
// The following is called when the transform operation is cancelled by a right-click and the undo
// has been cancelled.
CoreExport void TransformCancel(TimeValue t);
// From Object
CoreExport ObjectState Eval(TimeValue time);
CoreExport Interval ObjectValidity(TimeValue t);
CoreExport void MaybeEnlargeViewportRect(GraphicsWindow *gw, Rect &rect);
// Named selection set support:
BOOL SupportsNamedSubSels() {return TRUE;}
CoreExport void ActivateSubSelSet(TSTR &setName);
CoreExport void NewSetFromCurSel(TSTR &setName);
CoreExport void RemoveSubSelSet(TSTR &setName);
CoreExport void SetupNamedSelDropDown();
CoreExport int NumNamedSelSets();
CoreExport TSTR GetNamedSelSetName(int i);
CoreExport void SetNamedSelSetName(int i,TSTR &newName);
CoreExport void NewSetByOperator(TSTR &newName,Tab<int> &sets,int op);
CoreExport BOOL GetUniqueSetName(TSTR &name);
CoreExport int SelectNamedSet();
CoreExport void NSCopy();
CoreExport void NSPaste();
CoreExport SSNamedSelSetList GetSelSet();
// The validty interval of channels necessary to do a convert to type
CoreExport Interval ConvertValidity(TimeValue t);
// get and set the validity interval for the nth channel
CoreExport Interval ChannelValidity(TimeValue t, int nchan);
CoreExport void SetChannelValidity(int i, Interval v);
CoreExport void InvalidateChannels(ChannelMask channels);
// Deformable object procs
int IsDeformable() { return 1; }
CoreExport int NumPoints();
CoreExport Point3 GetPoint(int i);
CoreExport void SetPoint(int i, const Point3& p);
CoreExport BOOL IsPointSelected (int i);
CoreExport void PointsWereChanged();
CoreExport void GetDeformBBox(TimeValue t, Box3& box, Matrix3 *tm=NULL,BOOL useSel=FALSE );
CoreExport void Deform(Deformer *defProc, int useSel);
CoreExport int CanConvertToType(Class_ID obtype);
CoreExport Object* ConvertToType(TimeValue t, Class_ID obtype);
CoreExport void GetCollapseTypes(Tab<Class_ID> &clist,Tab<TSTR*> &nlist);
CoreExport void FreeChannels(ChannelMask chan);
CoreExport Object *MakeShallowCopy(ChannelMask channels);
CoreExport void ShallowCopy(Object* fromOb, ChannelMask channels);
CoreExport void NewAndCopyChannels(ChannelMask channels);
CoreExport DWORD GetSubselState();
// From ShapeObject
CoreExport ObjectHandle CreateTriObjRep(TimeValue t); // for rendering, also for deformation
CoreExport void GetWorldBoundBox(TimeValue t, INode *inode, ViewExp* vpt, Box3& box );
CoreExport void GetLocalBoundBox(TimeValue t, INode *inode, ViewExp* vpt, Box3& box );
CoreExport int NumberOfVertices(TimeValue t, int curve);
CoreExport int NumberOfCurves();
CoreExport BOOL CurveClosed(TimeValue t, int curve);
CoreExport Point3 InterpCurve3D(TimeValue t, int curve, float param, int ptype=PARAM_SIMPLE);
CoreExport Point3 TangentCurve3D(TimeValue t, int curve, float param, int ptype=PARAM_SIMPLE);
CoreExport float LengthOfCurve(TimeValue t, int curve);
CoreExport int NumberOfPieces(TimeValue t, int curve);
CoreExport Point3 InterpPiece3D(TimeValue t, int curve, int piece, float param, int ptype=PARAM_SIMPLE);
CoreExport Point3 TangentPiece3D(TimeValue t, int curve, int piece, float param, int ptype=PARAM_SIMPLE);
CoreExport MtlID GetMatID(TimeValue t, int curve, int piece);
BOOL CanMakeBezier() { return TRUE; }
CoreExport void MakeBezier(TimeValue t, BezierShape &shape);
CoreExport ShapeHierarchy &OrganizeCurves(TimeValue t, ShapeHierarchy *hier = NULL);
CoreExport void MakePolyShape(TimeValue t, PolyShape &shape, int steps = PSHAPE_BUILTIN_STEPS, BOOL optimize = FALSE);
CoreExport int MakeCap(TimeValue t, MeshCapInfo &capInfo, int capType);
CoreExport int MakeCap(TimeValue t, PatchCapInfo &capInfo);
BezierShape& GetShape() { return shape; }
// Animatable methods
void DeleteThis() { delete this; }
void FreeCaches() { shape.InvalidateGeomCache(); }
virtual Class_ID ClassID() { return splineShapeClassID; }
CoreExport virtual void GetClassName(TSTR& s);
CoreExport void* GetInterface(ULONG id);
// This is the name that will appear in the history browser.
CoreExport virtual TCHAR *GetObjectName();
// Controller stuff for animatable points
CoreExport int NumSubs();
CoreExport Animatable* SubAnim(int i);
CoreExport TSTR SubAnimName(int i);
CoreExport BOOL AssignController(Animatable *control,int subAnim);
int SubNumToRefNum(int subNum) {return subNum;}
CoreExport BOOL SelectSubAnim(int subNum);
// Reference methods
CoreExport void RescaleWorldUnits(float f);
CoreExport int RemapRefOnLoad(int iref);
int NumRefs() {return cont.Count() + 1;}
CoreExport RefTargetHandle GetReference(int i);
CoreExport void SetReference(int i, RefTargetHandle rtarg);
CoreExport void CreateContArray();
CoreExport void SynchContArray();
CoreExport void AllocContArray(int count);
CoreExport void ReplaceContArray(Tab<Control *> &nc);
CoreExport void InsertPointConts(int index, int count);
CoreExport void DeletePointConts(BitArray &set);
CoreExport void ReversePointConts(int index, int count, BOOL keepFirst);
CoreExport void NullPointConts(int index, int count);
CoreExport void NullPolyPointConts(int poly);
CoreExport void PlugControllersSel(TimeValue t);
CoreExport BOOL PlugControl(TimeValue t,int i);
CoreExport void SetPtCont(int i, Control *c);
CoreExport void SetPointAnim(TimeValue t, int poly, int vert, Point3 pt);
CoreExport BOOL CloneVertCont(int from, int to);
// Editable spline stuff follows...
CoreExport void SetRollupPage(IObjParam *ip, BOOL creating);
CoreExport void RemoveRollupPage(IObjParam *ip);
CoreExport virtual void BeginEditParams( IObjParam *ip, ULONG flags,Animatable *prev);
CoreExport virtual void EndEditParams( IObjParam *ip, ULONG flags,Animatable *next);
CoreExport int GetSubobjectLevel();
CoreExport void SetSubobjectLevel(int level);
CoreExport void ActivateSubobjSel(int level, XFormModes& modes );
int NeedUseSubselButton() { return 0; }
CoreExport void SelectSubComponent( HitRecord *hitRec, BOOL selected, BOOL all, BOOL invert );
CoreExport void ClearSelection(int level);
CoreExport void SelectAll(int level);
CoreExport void InvertSelection(int level);
CoreExport void GetSubObjectCenters(SubObjAxisCallback *cb,TimeValue t,INode *node,ModContext *mc);
CoreExport void GetSubObjectTMs(SubObjAxisCallback *cb,TimeValue t,INode *node,ModContext *mc);
CoreExport int SubObjectIndex(HitRecord *hitRec);
CoreExport void MultiAttachObject(INodeTab &nodeTab);
CoreExport void BeginOutlineMove(TimeValue t);
CoreExport void BeginFilletMove(TimeValue t);
CoreExport void BeginChamferMove(TimeValue t);
CoreExport void OutlineMove( TimeValue t, float amount );
CoreExport void FilletMove( TimeValue t, float amount );
CoreExport void ChamferMove( TimeValue t, float amount );
CoreExport void EndMoveModes(TimeValue t, BOOL accept=TRUE); // End all Moves (below)
CoreExport void EndOutlineMove(TimeValue t,BOOL accept=TRUE);
CoreExport void EndFilletMove(TimeValue t,BOOL accept=TRUE);
CoreExport void EndChamferMove(TimeValue t,BOOL accept=TRUE);
CoreExport void StartOutlineMode();
CoreExport void StartFilletMode();
CoreExport void StartChamferMode();
CoreExport void DoOutline();
CoreExport void DoFillet();
CoreExport void DoChamfer();
CoreExport void StartSegBreakMode();
CoreExport void DoSegBreak(ViewExp *vpt, BezierShape *shape, int poly, int seg, IPoint2 p);
CoreExport void StartSegRefineMode();
CoreExport void DoSegRefine(ViewExp *vpt, BezierShape *shape, int poly, int seg, IPoint2 p);
CoreExport void StartCrossInsertMode();
CoreExport void DoCrossInsert(ViewExp *vpt, BezierShape *shape, int poly1, int seg1, int poly2, int seg2, IPoint2 p);
CoreExport void StartVertConnectMode();
CoreExport void DoVertConnect(ViewExp *vpt, BezierShape *shape, int poly1, int vert1, int poly2, int vert2);
CoreExport void StartVertInsertMode(int controlID);
CoreExport int StartVertInsert(ViewExp *vpt, BezierShape *shape, int poly, int seg, int vert);
CoreExport void EndVertInsert(BOOL acceptUndo);
CoreExport void StartCreateLineMode();
CoreExport BOOL StartCreateLine(BezierShape **shape);
CoreExport void EndCreateLine();
CoreExport BOOL BooleanStartUp();
CoreExport void StartBooleanMode();
CoreExport void DoBoolean(int poly2);
CoreExport void StartTrimMode();
CoreExport void StartExtendMode();
CoreExport void HandleTrimExtend(ViewExp *vpt, ShapeHitData *hit, IPoint2 &m, int operation);
// from AttachMatDlgUser
CoreExport int GetAttachMat();
CoreExport void SetAttachMat(int value);
CoreExport BOOL GetCondenseMat();
CoreExport void SetCondenseMat(BOOL sw);
CoreExport int DoAttach(INode *node, bool & canUndo);
CoreExport void DoVertBreak();
CoreExport void DoVertWeld();
CoreExport void DoMakeFirst();
CoreExport void DoVertDelete();
CoreExport void DoSegDelete();
CoreExport void DoSegDetach(int sameShape, int copy, int reorient);
CoreExport void DoSegDivide(int divisions);
CoreExport void DoPolyClose();
CoreExport void DoPolyDetach(int copy, int reorient);
CoreExport void DoPolyMirror(int type, int copy);
CoreExport void DoPolyDelete();
CoreExport void DoPolyReverse();
CoreExport void DoPolyExplode();
CoreExport void DoExplodeToObjects();
CoreExport void SetBoolOperation(int type) { boolType = type; }
CoreExport void SetMirrorOperation(int type) { mirrorType = type; }
CoreExport int GetBoolOperation() { return boolType; }
CoreExport int GetMirrorOperation() { return mirrorType; }
CoreExport int GetBoolCursorID();
CoreExport int GetBoolMirrString(int type);
CoreExport void SetBooleanButton();
CoreExport void SetMirrorButton();
CoreExport void ChangeSelVerts(int type);
CoreExport void ChangeRememberedVert(int type);
CoreExport int RememberVertThere(HWND hWnd, IPoint2 m);
CoreExport void SetRememberedVertType(int type);
CoreExport void ChangeSelSegs(int type);
CoreExport void ChangeRememberedSeg(int type);
CoreExport int RememberSegThere(HWND hWnd, IPoint2 m);
CoreExport void SetRememberedSegType(int type);
CoreExport void ChangeSelPolys(int type);
CoreExport void ChangeRememberedPoly(int type);
CoreExport int RememberPolyThere(HWND hWnd, IPoint2 m);
CoreExport void SetRememberedPolyType(int type);
CoreExport void SplineShapeClone( SplineShape *source );
// The following methods do the job and update controllers, named selections, etc.
CoreExport void DeleteSpline(int poly);
CoreExport void InsertSpline(Spline3D *spline, int poly);
CoreExport void Reverse(int poly, BOOL keepFirst = FALSE);
CoreExport void DeleteKnot(int poly, int index);
CoreExport void AddKnot(int poly, SplineKnot &k, int where = -1);
CoreExport BOOL Append(int poly, Spline3D *spline, BOOL weldCoincidentFirstVertex=TRUE);
CoreExport BOOL Prepend(int poly, Spline3D *spline, BOOL weldCoincidentLastVertex=TRUE);
CoreExport void ReplaceSpline(int poly, Spline3D *spline);
CoreExport BOOL DeleteSelVerts(int poly);
CoreExport BOOL DeleteSelSegs(int poly);
CoreExport void MakeFirst(int poly, int index);
// Support for general parameters
CoreExport void SetOptimize(BOOL sw);
CoreExport void SetAdaptive(BOOL sw);
CoreExport void SetSteps(int n);
CoreExport void SetGenUVs(BOOL sw);
CoreExport void SetRenderable(BOOL sw);
CoreExport void SetThickness(float t);
// Store current topology in the BezierShape
CoreExport void RecordTopologyTags();
// Re-match named selection sets, etc. with changed topology (Call RecordTopologyTags
// before making the changes to the shape, then call this)
CoreExport void ResolveTopoChanges(BezierShape *shape = NULL);
CoreExport void RefreshSelType();
CoreExport void UpdateSelectDisplay();
CoreExport void SetSelDlgEnables();
CoreExport void SetOpsDlgEnables();
CoreExport void SetSurfDlgEnables();
CoreExport void SelectionChanged();
CoreExport BOOL MaybeSelectSingleSpline(BOOL makeUndo = FALSE); // Returns TRUE if selected
CoreExport void SetFCLimit();
// Materials
CoreExport int GetSelMatIndex();
CoreExport void SetSelMatIndex(int index);
CoreExport void SelectByMat(int index,BOOL clear);
CoreExport void InvalidateSurfaceUI();
// IO
CoreExport IOResult Save(ISave *isave);
CoreExport IOResult Load(ILoad *iload);
//watje
BOOL showVerts;
BOOL showSelected;
BOOL smoothRefineConnect;
BOOL closedRefineConnect;
BOOL bindFirst, bindLast;
//2-1-99 watje
BOOL rConnect;
BOOL useAreaSelect;
float areaSelect;
//2-21-99 watje
SplineKnot knotPoint1, knotPoint2;
int startSegRC, startSegSplineRC;
int startSplineRC;
int endSegRC, endSegSplineRC;
int endSplineRC;
Tab<Point3> pointList;
static SSBindCMode *bindMode;
static SSRefineConnectCMode *refineConnectMode;
CoreExport void StartBindMode();
CoreExport void DoBind(int poly1, int vert1, int poly2, int vert2);
CoreExport void DoUnBind();
CoreExport void DoHide();
CoreExport void DoUnhide();
CoreExport void DoCycleVerts();
CoreExport void StartRefineConnectMode();
CoreExport void EndRefineConnectMode();
CoreExport void DoRefineConnect(ViewExp *vpt, BezierShape *shape, int poly, int seg, IPoint2 p);
//2-1-99 watje
CoreExport void DoVertFuse();
// spline select and operations interfaces, JBW 2/1/99
CoreExport void StartCommandMode(splineCommandMode mode);
CoreExport void ButtonOp(splineButtonOp opcode);
CoreExport DWORD GetSelLevel();
CoreExport void SetSelLevel(DWORD level);
CoreExport void LocalDataChanged();
CoreExport BitArray GetVertSel();
CoreExport BitArray GetSegmentSel();
CoreExport BitArray GetSplineSel();
CoreExport void SetVertSel(BitArray &set, ISplineSelect *imod, TimeValue t);
CoreExport void SetSegmentSel(BitArray &set, ISplineSelect *imod, TimeValue t);
CoreExport void SetSplineSel(BitArray &set, ISplineSelect *imod, TimeValue t);
CoreExport GenericNamedSelSetList& GetNamedVertSelList();
CoreExport GenericNamedSelSetList& GetNamedSegmentSelList();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -