@itwin/editor-frontend 3.0.0-dev.139 → 3.0.0-dev.144

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -98,7 +98,9 @@ export declare abstract class CreateOrContinuePathTool extends CreateElementTool
98
98
  protected setupAccuDraw(): void;
99
99
  protected setupAndPromptForNextAction(): void;
100
100
  protected acceptPoint(ev: BeButtonEvent): Promise<boolean>;
101
+ protected cancelPoint(_ev: BeButtonEvent): Promise<boolean>;
101
102
  onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled>;
103
+ onResetButtonUp(ev: BeButtonEvent): Promise<EventHandled>;
102
104
  onUndoPreviousStep(): Promise<boolean>;
103
105
  onCleanup(): Promise<void>;
104
106
  }
@@ -111,7 +113,7 @@ export declare class CreateLineStringTool extends CreateOrContinuePathTool {
111
113
  protected get wantClosure(): boolean;
112
114
  protected isComplete(ev: BeButtonEvent): boolean;
113
115
  protected createNewCurvePrimitive(ev: BeButtonEvent, isDynamics: boolean): CurvePrimitive | undefined;
114
- onResetButtonUp(ev: BeButtonEvent): Promise<EventHandled>;
116
+ protected cancelPoint(ev: BeButtonEvent): Promise<boolean>;
115
117
  onRestartTool(): Promise<void>;
116
118
  }
117
119
  /** @alpha */
@@ -201,7 +203,7 @@ export declare class CreateCircleTool extends CreateOrContinuePathTool {
201
203
  set radius(value: number);
202
204
  protected isComplete(_ev: BeButtonEvent): boolean;
203
205
  protected createNewCurvePrimitive(ev: BeButtonEvent, isDynamics: boolean): CurvePrimitive | undefined;
204
- onResetButtonUp(ev: BeButtonEvent): Promise<EventHandled>;
206
+ protected cancelPoint(_ev: BeButtonEvent): Promise<boolean>;
205
207
  private syncToolSettingsRadius;
206
208
  private syncRadiusState;
207
209
  applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
@@ -269,6 +271,10 @@ export declare enum BCurveMethod {
269
271
  export declare class CreateBCurveTool extends CreateOrContinuePathTool {
270
272
  static toolId: string;
271
273
  static iconSpec: string;
274
+ protected _isPhysicallyClosedOrComplete: boolean;
275
+ protected _tangentPhase: CreateCurvePhase;
276
+ static get minArgs(): number;
277
+ static get maxArgs(): number;
272
278
  protected get wantPickableDynamics(): boolean;
273
279
  protected get showCurveConstructions(): boolean;
274
280
  protected provideToolAssistance(_mainInstrText?: string, _additionalInstr?: ToolAssistanceInstruction[]): void;
@@ -284,12 +290,19 @@ export declare class CreateBCurveTool extends CreateOrContinuePathTool {
284
290
  set order(value: number);
285
291
  protected get minOrder(): number;
286
292
  protected get maxOrder(): number;
293
+ private _tangentsProperty;
294
+ get tangentsProperty(): DialogProperty<boolean>;
295
+ get tangents(): boolean;
296
+ set tangents(value: boolean);
287
297
  protected get wantClosure(): boolean;
298
+ protected get requiredPointCount(): number;
299
+ protected get createCurvePhase(): CreateCurvePhase;
288
300
  protected isComplete(ev: BeButtonEvent): boolean;
301
+ protected showConstructionGraphics(ev: BeButtonEvent, context: DynamicsContext): boolean;
289
302
  protected createNewCurvePrimitive(ev: BeButtonEvent, isDynamics: boolean): CurvePrimitive | undefined;
290
- protected addConstructionGraphics(curve: CurvePrimitive, showCurve: boolean, context: DynamicsContext): void;
291
303
  protected getSnapGeometry(): GeometryQuery | undefined;
292
- onResetButtonUp(ev: BeButtonEvent): Promise<EventHandled>;
304
+ protected acceptPoint(ev: BeButtonEvent): Promise<boolean>;
305
+ protected cancelPoint(ev: BeButtonEvent): Promise<boolean>;
293
306
  private syncOrderState;
294
307
  applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
295
308
  supplyToolSettingsProperties(): DialogItem[] | undefined;
@@ -298,6 +311,7 @@ export declare class CreateBCurveTool extends CreateOrContinuePathTool {
298
311
  /** The keyin takes the following arguments, all of which are optional:
299
312
  * - `method=0|1` How bcurve will be defined. 0 for control points, 1 for through points.
300
313
  * - `order=number` bcurve order from 2 to 16.
314
+ * - 'tangents=0|1 Whether to specify start/end tangents for through points construction.
301
315
  */
302
316
  parseAndRun(...inputArgs: string[]): Promise<boolean>;
303
317
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SketchTools.d.ts","sourceRoot":"","sources":["../../src/SketchTools.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAA4F,cAAc,EAA0B,aAAa,EAAkC,QAAQ,EAAE,IAAI,EAAgC,OAAO,EAAmC,SAAS,EAAE,QAAQ,EAAsB,MAAM,sBAAsB,CAAC;AACxV,OAAO,EAAmC,mBAAmB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAsB,kBAAkB,EAAc,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpP,OAAO,EAAmD,aAAa,EAAE,cAAc,EAAa,eAAe,EAAE,eAAe,EAAE,YAAY,EAAe,SAAS,EAA6E,UAAU,EAAuF,yBAAyB,EAAyB,MAAM,sBAAsB,CAAC;AACva,OAAO,EAAE,2BAA2B,EAAuB,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAkC,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEjH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,sBAAsB,EAA6F,MAAM,uBAAuB,CAAC;AAEtL,8FAA8F;AAC9F,oBAAY,gBAAgB;IAC1B;;OAEG;IACH,WAAW,IAAA;IACX;;OAEG;IACH,SAAS,IAAA;IACT;;OAEG;IACH,WAAW,IAAA;CACZ;AAED,4DAA4D;AAC5D,8BAAsB,wBAAyB,SAAQ,iBAAiB;IACtE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAM;IAC5C,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IACnC,SAAS,CAAC,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,qBAAqB,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,CAAC;IAClG,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,cAAc,UAAS;IACjC,SAAS,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IACtD,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IACnC,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;cAEf,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;WAMjC,WAAW,CAAC,CAAC,SAAS,MAAM,2BAA2B,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAIlL,cAAuB,YAAY,IAAI,OAAO,CAAiB;IAC/D,cAAuB,YAAY,IAAI,OAAO,CAAiB;IAE/D,SAAS,KAAK,SAAS,IAAI,OAAO,CAA+B;IACjE,SAAS,KAAK,YAAY,IAAI,OAAO,CAA+B;IACpE,SAAS,KAAK,aAAa,IAAI,OAAO,CAAiB;IAEvD,SAAS,KAAK,iBAAiB,IAAI,OAAO,CAAwC;IAClF,SAAS,KAAK,oBAAoB,IAAI,OAAO,CAAkB;IAC/D,SAAS,KAAK,QAAQ,IAAI,OAAO,CAA2B;IAC5D,SAAS,KAAK,WAAW,IAAI,OAAO,CAA6D;IACjG,SAAS,KAAK,YAAY,IAAI,OAAO,CAA+B;IAEpE,SAAS,KAAK,sBAAsB,IAAI,OAAO,CAAkB;IACjE,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAkG;IACnI,SAAS,KAAK,WAAW,IAAI,OAAO,CAAkF;IAEtH,yGAAyG;IACzG,SAAS,KAAK,gBAAgB,IAAI,gBAAgB,CAEjD;IAED;;;;KAIC;IACD,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAE9G,SAAS,CAAC,kBAAkB,CAAC,EAAE,EAAE,aAAa,GAAG,QAAQ;IAKzD,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,QAAQ;cAIlC,8BAA8B,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9H,SAAS,KAAK,sBAAsB,IAAI,OAAO,CAAgD;cAE/E,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,qBAAqB,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,GAAG,SAAS,CAAC;cAuC/H,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;cAwBlC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;WAYvC,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,GAAG,SAAS;WAwC/F,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;WAW1D,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO;IA+C7E,SAAS,CAAC,aAAa,IAAI,IAAI;cAOf,cAAc,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhE,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAwD5G,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO;IAczE,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAQ3D,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAwCxE,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAgC3D,iBAAiB,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAIpC,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IAM/E,SAAS,CAAC,eAAe,IAAI,aAAa,GAAG,SAAS;IAQtC,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,mBAAmB,GAAG,SAAS;IASvF,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAwC7C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAalC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAQzI,SAAS,CAAC,iBAAiB,IAAI,cAAc,GAAG,SAAS;IA2BzD,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IAc7G,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IA6CpH,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IAOhH,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,cAAc,GAAG,qBAAqB,GAAG,SAAS;cAavE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC9C,SAAS,CAAC,aAAa,IAAI,IAAI;cAkBZ,2BAA2B,IAAI,IAAI;cAKtC,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1C,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAM1D,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAatC,SAAS;CAIhC;AAED,oGAAoG;AACpG,qBAAa,oBAAqB,SAAQ,wBAAwB;IAChE,OAAuB,MAAM,SAAsB;IACnD,OAAuB,QAAQ,SAAgB;IAE/C,cAAuB,oBAAoB,IAAI,OAAO,CAAiB;cAEpD,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;IAyBvH,cAAuB,WAAW,IAAI,OAAO,CAG5C;cAEkB,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO;IASzD,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAY/E,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAUlE,aAAa;CAK3B;AAED,aAAa;AACb,oBAAY,SAAS;IACnB,WAAW,IAAI;IACf,WAAW,IAAI;IACf,WAAW,IAAI;IACf,WAAW,IAAI;CAChB;AAED,oFAAoF;AACpF,qBAAa,aAAc,SAAQ,wBAAwB;IACzD,OAAuB,MAAM,SAAe;IAC5C,OAAuB,QAAQ,SAAoC;IAEnE,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,cAAuB,sBAAsB,IAAI,OAAO,CAAiB;cAEtD,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAwBlG,aAAa,IAAI,IAAI;IAuDxC,OAAO,CAAC,MAAM,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAO7B;IAEF,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAKxB;IAED,IAAW,MAAM,IAAI,SAAS,CAAmD;IACjF,IAAW,MAAM,CAAC,MAAM,EAAE,SAAS,EAAyC;IAE5E,OAAO,CAAC,kBAAkB,CAAsC;IAChE,IAAW,iBAAiB,4BAI3B;IAED,IAAW,SAAS,IAAI,OAAO,CAAyC;IACxE,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAA2C;IAE9E,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAIxB;IAED,IAAW,MAAM,IAAI,MAAM,CAAsC;IACjE,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAAwC;IAEvE,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,IAAW,gBAAgB,4BAI1B;IAED,IAAW,QAAQ,IAAI,OAAO,CAAwC;IACtE,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAA0C;IAE5E,OAAO,CAAC,cAAc,CAAqC;IAC3D,IAAW,aAAa,2BAIvB;IAED,IAAW,KAAK,IAAI,MAAM,CAAqC;IAC/D,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAAuC;cAElD,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAI1D,cAAuB,gBAAgB,IAAI,gBAAgB,CAc1D;IAED,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAwErG,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAsGrG,OAAO,CAAC,8BAA8B;IA8BtC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,cAAc;IAMA,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwC5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAgB3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAkCnD;;;;OAIG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA2D5E;AAED,aAAa;AACb,oBAAY,YAAY;IACtB,MAAM,IAAI;IACV,IAAI,IAAI;CACT;AAED,sFAAsF;AACtF,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,OAAuB,MAAM,SAAkB;IAC/C,OAAuB,QAAQ,SAAiB;IAEhD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,cAAuB,sBAAsB,IAAI,OAAO,CAAqE;IAE7H,cAAuB,gBAAgB,IAAI,gBAAgB,CAAyC;cAEjF,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAgBlG,aAAa,IAAI,IAAI;IAmBxC,OAAO,CAAC,MAAM,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAK7B;IAEF,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAKxB;IAED,IAAW,MAAM,IAAI,YAAY,CAAsD;IACvF,IAAW,MAAM,CAAC,MAAM,EAAE,YAAY,EAAyC;IAE/E,OAAO,CAAC,kBAAkB,CAAsC;IAChE,IAAW,iBAAiB,4BAI3B;IAED,IAAW,SAAS,IAAI,OAAO,CAAyC;IACxE,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAA2C;IAE9E,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAIxB;IAED,IAAW,MAAM,IAAI,MAAM,CAAsC;IACjE,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAAwC;cAEpD,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAM1D,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAqC/E,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAU/E,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,eAAe;IAMD,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAY3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,aAAa;IAWb,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAuBnD;;;OAGG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAyC5E;AAED,wFAAwF;AACxF,qBAAa,iBAAkB,SAAQ,wBAAwB;IAC7D,OAAuB,MAAM,SAAmB;IAChD,OAAuB,QAAQ,SAAkB;cAE9B,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAI1D,cAAuB,gBAAgB,IAAI,gBAAgB,CAAyC;cAEjF,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAoBlG,aAAa,IAAI,IAAI;IAwBxC,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IA0BxF,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5C;AAED,0GAA0G;AAC1G,qBAAa,mBAAoB,SAAQ,wBAAwB;IAC/D,OAAuB,MAAM,SAAqB;IAClD,OAAuB,QAAQ,SAAoB;IAEnD,SAAS,CAAC,YAAY,YAA8B;IACpD,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEhC,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAE/B,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAKlG,aAAa,IAAI,IAAI;IAcxC,OAAO,CAAC,kBAAkB,CAAsC;IAChE,IAAW,iBAAiB,4BAI3B;IAED,IAAW,SAAS,IAAI,OAAO,CAAyC;IACxE,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAA2C;IAE9E,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAIxB;IAED,IAAW,MAAM,IAAI,MAAM,CAAsC;IACjE,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAAwC;cAEpD,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAI1D,cAAuB,gBAAgB,IAAI,gBAAgB,CAAyC;IAEpG,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;cA+BlF,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IAgBtH,OAAO,CAAC,eAAe;IAMD,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAW3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAmBnD;;OAEG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAyB5E;AAED,aAAa;AACb,oBAAY,YAAY;IACtB,aAAa,IAAI;IACjB,aAAa,IAAI;CAClB;AAED,wHAAwH;AACxH,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,OAAuB,MAAM,SAAkB;IAC/C,OAAuB,QAAQ,SAAwB;IAEvD,cAAuB,oBAAoB,IAAI,OAAO,CAAiB;IACvE,cAAuB,sBAAsB,IAAI,OAAO,CAAiB;cAEtD,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;IAyBvH,OAAO,CAAC,MAAM,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAK7B;IAEF,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAKxB;IAED,IAAW,MAAM,IAAI,YAAY,CAAsD;IACvF,IAAW,MAAM,CAAC,MAAM,EAAE,YAAY,EAAyC;IAE/E,OAAO,CAAC,cAAc,CAAqC;IAC3D,IAAW,aAAa,2BAMvB;IAED,IAAW,KAAK,IAAI,MAAM,CAAqC;IAC/D,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAAuC;IAErE,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAc;IAC9C,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAe;IAE/C,cAAuB,WAAW,IAAI,OAAO,CAG5C;cAEkB,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO;IASzD,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;cAoBlF,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;cAelG,eAAe,IAAI,aAAa,GAAG,SAAS;IAQzC,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAU/E,OAAO,CAAC,cAAc;IAKA,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAO3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBnD;;;OAGG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAsC5E"}
1
+ {"version":3,"file":"SketchTools.d.ts","sourceRoot":"","sources":["../../src/SketchTools.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { BentleyError } from "@itwin/core-bentley";
6
- import { Angle, AngleSweep, Arc3d, BSplineCurve3d, BSplineCurveOps, CurveFactory, FrameBuilder, Geometry, IModelJson, LineString3d, Loop, Matrix3d, Path, Plane3dByOriginAndUnitNormal, Point3d, PointString3d, Ray3d, RegionOps, Transform, Vector3d, YawPitchRollAngles } from "@itwin/core-geometry";
6
+ import { Angle, AngleSweep, Arc3d, BSplineCurve3d, CurveFactory, FrameBuilder, Geometry, IModelJson, InterpolationCurve3d, InterpolationCurve3dOptions, LineString3d, Loop, Matrix3d, Path, Plane3dByOriginAndUnitNormal, Point3d, PointString3d, Ray3d, RegionOps, Transform, Vector3d, YawPitchRollAngles } from "@itwin/core-geometry";
7
7
  import { Code, ColorDef, ElementGeometry, isPlacement3dProps, LinePixels } from "@itwin/core-common";
8
8
  import { AccuDrawHintBuilder, AngleDescription, BeButton, BeModifierKeys, CoreTools, EventHandled, GraphicType, IModelApp, LengthDescription, NotifyMessageDetails, OutputMessagePriority, TentativeOrAccuSnap, ToolAssistance, ToolAssistanceImage, ToolAssistanceInputMethod } from "@itwin/core-frontend";
9
9
  import { editorBuiltInCmdIds } from "@itwin/editor-common";
@@ -233,6 +233,7 @@ export class CreateOrContinuePathTool extends CreateElementTool {
233
233
  switch (curve.curvePrimitiveType) {
234
234
  case "arc":
235
235
  case "bsplineCurve":
236
+ case "interpolationCurve":
236
237
  break;
237
238
  default:
238
239
  return;
@@ -267,6 +268,12 @@ export class CreateOrContinuePathTool extends CreateElementTool {
267
268
  builder.addPointString(poles);
268
269
  break;
269
270
  }
271
+ case "interpolationCurve": {
272
+ const fitCurve = curve;
273
+ builder.setSymbology(context.viewport.getContrastToBackgroundColor(), ColorDef.black, 5);
274
+ builder.addPointString(fitCurve.options.fitPoints); // deep copy shoulnd't be necessary...
275
+ break;
276
+ }
270
277
  default:
271
278
  break;
272
279
  }
@@ -554,11 +561,17 @@ export class CreateOrContinuePathTool extends CreateElementTool {
554
561
  await this.updateCurveAndContinuationData(ev, false, phase);
555
562
  return true;
556
563
  }
564
+ async cancelPoint(_ev) { return true; }
557
565
  async onDataButtonDown(ev) {
558
566
  if (!await this.acceptPoint(ev))
559
567
  return EventHandled.Yes;
560
568
  return super.onDataButtonDown(ev);
561
569
  }
570
+ async onResetButtonUp(ev) {
571
+ if (!await this.cancelPoint(ev))
572
+ return EventHandled.Yes;
573
+ return super.onResetButtonUp(ev);
574
+ }
562
575
  async onUndoPreviousStep() {
563
576
  if (0 === this.accepted.length)
564
577
  return false;
@@ -617,13 +630,13 @@ export class CreateLineStringTool extends CreateOrContinuePathTool {
617
630
  const pts = (isDynamics ? [...this.accepted, ev.point] : this.accepted);
618
631
  return LineString3d.create(pts);
619
632
  }
620
- async onResetButtonUp(ev) {
633
+ async cancelPoint(ev) {
621
634
  // NOTE: Starting another tool will not create element...require reset or closure...
622
635
  if (this.isComplete(ev)) {
623
636
  await this.updateCurveAndContinuationData(ev, false, CreateCurvePhase.DefineEnd);
624
637
  await this.createElement();
625
638
  }
626
- return super.onResetButtonUp(ev);
639
+ return true;
627
640
  }
628
641
  async onRestartTool() {
629
642
  const tool = new CreateLineStringTool();
@@ -1189,13 +1202,13 @@ export class CreateCircleTool extends CreateOrContinuePathTool {
1189
1202
  vector90.scaleToLength(radius, vector90);
1190
1203
  return Arc3d.create(center, vector0, vector90);
1191
1204
  }
1192
- async onResetButtonUp(ev) {
1205
+ async cancelPoint(_ev) {
1193
1206
  if (CircleMethod.Center === this.method && this.useRadius) {
1194
1207
  // Exit instead of restarting to avoid having circle "stuck" on cursor...
1195
1208
  await this.exitTool();
1196
- return EventHandled.Yes;
1209
+ return false;
1197
1210
  }
1198
- return super.onResetButtonUp(ev);
1211
+ return true;
1199
1212
  }
1200
1213
  syncToolSettingsRadius() {
1201
1214
  if (this.useRadius)
@@ -1565,6 +1578,13 @@ export var BCurveMethod;
1565
1578
  })(BCurveMethod || (BCurveMethod = {}));
1566
1579
  /** @alpha Creates a bspline curve by poles or through points. Uses model and category from ToolAdmin.ActiveSettings. */
1567
1580
  export class CreateBCurveTool extends CreateOrContinuePathTool {
1581
+ constructor() {
1582
+ super(...arguments);
1583
+ this._isPhysicallyClosedOrComplete = false;
1584
+ this._tangentPhase = CreateCurvePhase.DefineOther;
1585
+ }
1586
+ static get minArgs() { return 0; }
1587
+ static get maxArgs() { return 3; } // method, order, tangents...
1568
1588
  get wantPickableDynamics() { return true; } // Allow snapping to control polygon or through points...
1569
1589
  get showCurveConstructions() { return true; } // Display control polygon or through points...
1570
1590
  provideToolAssistance(_mainInstrText, _additionalInstr) {
@@ -1603,43 +1623,93 @@ export class CreateBCurveTool extends CreateOrContinuePathTool {
1603
1623
  set order(value) { this.orderProperty.value = value; }
1604
1624
  get minOrder() { return 2; }
1605
1625
  get maxOrder() { return 16; }
1626
+ get tangentsProperty() {
1627
+ if (!this._tangentsProperty)
1628
+ this._tangentsProperty = new DialogProperty(PropertyDescriptionHelper.buildToggleDescription("bcurveTangents", EditTools.translate("CreateBCurve.Label.Tangents")), false);
1629
+ return this._tangentsProperty;
1630
+ }
1631
+ get tangents() { return this.tangentsProperty.value; }
1632
+ set tangents(value) { this.tangentsProperty.value = value; }
1606
1633
  get wantClosure() {
1607
1634
  // A bcurve can support physical closure when creating a new path...
1608
1635
  return this.allowClosure;
1609
1636
  }
1637
+ get requiredPointCount() {
1638
+ if (BCurveMethod.ThroughPoints === this.method)
1639
+ return 3; // Interpolation curve is always order 4 with 3 point minimum...
1640
+ return this.order;
1641
+ }
1642
+ get createCurvePhase() {
1643
+ if (CreateCurvePhase.DefineOther !== this._tangentPhase)
1644
+ return CreateCurvePhase.DefineOther;
1645
+ return super.createCurvePhase;
1646
+ }
1610
1647
  isComplete(ev) {
1611
1648
  // Accept on reset with sufficient points...
1612
1649
  if (BeButton.Reset === ev.button)
1613
- return (this.accepted.length >= this.order);
1650
+ return (this.accepted.length >= this.requiredPointCount);
1614
1651
  // Allow data to complete on physical closure...
1615
- return this.isClosed;
1652
+ return this.isClosed || this._isPhysicallyClosedOrComplete;
1653
+ }
1654
+ showConstructionGraphics(ev, context) {
1655
+ if (CreateCurvePhase.DefineOther !== this._tangentPhase && this.current) {
1656
+ const fitCurve = this.current;
1657
+ const builder = context.createGraphic({ type: GraphicType.WorldOverlay });
1658
+ const color = context.viewport.getContrastToBackgroundColor();
1659
+ builder.setSymbology(color, ColorDef.black, 1, LinePixels.Code2);
1660
+ builder.addLineString([ev.point, fitCurve.options.fitPoints[CreateCurvePhase.DefineStart === this._tangentPhase ? 0 : fitCurve.options.fitPoints.length - 1]]);
1661
+ builder.setSymbology(color, ColorDef.black, 8);
1662
+ builder.addPointString([ev.point]);
1663
+ context.addGraphic(builder.finish());
1664
+ }
1665
+ return super.showConstructionGraphics(ev, context);
1616
1666
  }
1617
1667
  createNewCurvePrimitive(ev, isDynamics) {
1668
+ if (CreateCurvePhase.DefineOther !== this._tangentPhase && this.current) {
1669
+ const fitCurve = this.current;
1670
+ if (CreateCurvePhase.DefineStart === this._tangentPhase) {
1671
+ const tangentS = Vector3d.createStartEnd(ev.point, fitCurve.options.fitPoints[0]);
1672
+ if (tangentS.magnitude() > Geometry.smallMetricDistance)
1673
+ fitCurve.options.startTangent = tangentS;
1674
+ }
1675
+ else {
1676
+ const tangentE = Vector3d.createStartEnd(ev.point, fitCurve.options.fitPoints[fitCurve.options.fitPoints.length - 1]);
1677
+ if (tangentE.magnitude() > Geometry.smallMetricDistance)
1678
+ fitCurve.options.endTangent = tangentE;
1679
+ }
1680
+ return fitCurve;
1681
+ }
1618
1682
  // Don't include current point if it's the same as the last accepted point, want dynamics to show an accurate preview of what reset will accept...
1619
1683
  const includeCurrPt = (isDynamics && (0 === this.accepted.length || !ev.point.isAlmostEqual(this.accepted[this.accepted.length - 1])));
1620
1684
  const pts = (includeCurrPt ? [...this.accepted, ev.point] : this.accepted);
1621
- const numRequired = this.order;
1685
+ const numRequired = this.requiredPointCount;
1622
1686
  if (pts.length < numRequired) {
1623
1687
  // Create point/linestring construction geometry to support join...
1624
1688
  this.isConstruction = true;
1625
1689
  return LineString3d.create(1 === pts.length ? [pts[0], pts[0]] : pts);
1626
1690
  }
1627
- // TODO: Support physical closure by creating closed/rational bcurve...
1691
+ // Create periodic-looking curve on physical closure with sufficient points even when not creating a loop/surface...
1692
+ this._isPhysicallyClosedOrComplete = (undefined === this.continuationData && pts[0].isAlmostEqual(pts[pts.length - 1]));
1693
+ // TODO: Support physical closure for pole construction...
1628
1694
  if (BCurveMethod.ControlPoints === this.method)
1629
1695
  return BSplineCurve3d.createUniformKnots(pts, this.order);
1630
- // TODO: InterpolationCurve3d, set end tangents using continuation curve...self-closure, etc.
1631
- return BSplineCurveOps.createThroughPoints(pts, this.order);
1632
- }
1633
- addConstructionGraphics(curve, showCurve, context) {
1634
- // TODO: Need proper Interpolation curve class to extract/show through points...
1635
- if (BCurveMethod.ThroughPoints === this.method && !showCurve && 0 !== this.accepted.length) {
1636
- const builder = context.createGraphic({ type: GraphicType.WorldOverlay });
1637
- builder.setSymbology(context.viewport.getContrastToBackgroundColor(), ColorDef.black, 5);
1638
- builder.addPointString(this.accepted);
1639
- context.addGraphic(builder.finish());
1640
- return;
1696
+ const interpProps = { fitPoints: pts, closed: this._isPhysicallyClosedOrComplete, isChordLenKnots: 1, isColinearTangents: 1 };
1697
+ // Create interpolation curve tangent to continuation curve...
1698
+ if (undefined !== this.continuationData && this.tangents) {
1699
+ const tangentS = this.continuationData.path.children[0].fractionToPointAndUnitTangent(0.0);
1700
+ const tangentE = this.continuationData.path.children[this.continuationData.path.children.length - 1].fractionToPointAndUnitTangent(1.0);
1701
+ if (pts[0].isAlmostEqual(tangentS.origin))
1702
+ interpProps.startTangent = tangentS.direction.scale(-1);
1703
+ else if (pts[0].isAlmostEqual(tangentE.origin))
1704
+ interpProps.startTangent = tangentE.direction;
1705
+ if (pts[pts.length - 1].isAlmostEqual(tangentS.origin))
1706
+ interpProps.endTangent = tangentS.direction.scale(-1);
1707
+ else if (pts[pts.length - 1].isAlmostEqual(tangentE.origin))
1708
+ interpProps.endTangent = tangentE.direction;
1709
+ this._isPhysicallyClosedOrComplete = (undefined !== interpProps.startTangent && undefined !== interpProps.endTangent);
1641
1710
  }
1642
- return super.addConstructionGraphics(curve, showCurve, context);
1711
+ const interpOpts = InterpolationCurve3dOptions.create(interpProps);
1712
+ return InterpolationCurve3d.createCapture(interpOpts);
1643
1713
  }
1644
1714
  getSnapGeometry() {
1645
1715
  // Only snap to through points...
@@ -1647,13 +1717,46 @@ export class CreateBCurveTool extends CreateOrContinuePathTool {
1647
1717
  return (this.accepted.length > 1 ? PointString3d.create(this.accepted) : undefined);
1648
1718
  return super.getSnapGeometry();
1649
1719
  }
1650
- async onResetButtonUp(ev) {
1720
+ async acceptPoint(ev) {
1721
+ switch (this._tangentPhase) {
1722
+ case CreateCurvePhase.DefineOther:
1723
+ return super.acceptPoint(ev);
1724
+ case CreateCurvePhase.DefineStart:
1725
+ this._tangentPhase = CreateCurvePhase.DefineEnd;
1726
+ break;
1727
+ case CreateCurvePhase.DefineEnd:
1728
+ this._isPhysicallyClosedOrComplete = true;
1729
+ break;
1730
+ }
1731
+ await this.updateCurveAndContinuationData(ev, false, CreateCurvePhase.DefineOther);
1732
+ return true;
1733
+ }
1734
+ async cancelPoint(ev) {
1651
1735
  // NOTE: Starting another tool will not create element...require reset or closure...
1652
1736
  if (this.isComplete(ev)) {
1737
+ if (BCurveMethod.ThroughPoints === this.method && this.tangents && this.current) {
1738
+ const fitCurve = this.current;
1739
+ switch (this._tangentPhase) {
1740
+ case CreateCurvePhase.DefineOther:
1741
+ await this.updateCurveAndContinuationData(ev, false, CreateCurvePhase.DefineEnd);
1742
+ this._tangentPhase = (undefined === fitCurve.options.startTangent ? CreateCurvePhase.DefineStart : CreateCurvePhase.DefineEnd);
1743
+ IModelApp.toolAdmin.updateDynamics();
1744
+ return false;
1745
+ case CreateCurvePhase.DefineStart:
1746
+ fitCurve.options.startTangent = undefined; // Not accepted, compute default start tangent...
1747
+ this._tangentPhase = CreateCurvePhase.DefineEnd;
1748
+ IModelApp.toolAdmin.updateDynamics();
1749
+ return false;
1750
+ case CreateCurvePhase.DefineEnd:
1751
+ fitCurve.options.endTangent = undefined; // Not accepted, compute default end tangent...
1752
+ await this.createElement();
1753
+ return true;
1754
+ }
1755
+ }
1653
1756
  await this.updateCurveAndContinuationData(ev, false, CreateCurvePhase.DefineEnd);
1654
1757
  await this.createElement();
1655
1758
  }
1656
- return super.onResetButtonUp(ev);
1759
+ return true;
1657
1760
  }
1658
1761
  syncOrderState() {
1659
1762
  this.orderProperty.displayValue = this.orderProperty.description.format(this.order);
@@ -1675,12 +1778,20 @@ export class CreateBCurveTool extends CreateOrContinuePathTool {
1675
1778
  IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, this.orderProperty.item);
1676
1779
  return true;
1677
1780
  }
1781
+ else if (updatedValue.propertyName === this.tangentsProperty.name) {
1782
+ this.tangents = updatedValue.value.value;
1783
+ IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, this.tangentsProperty.item);
1784
+ return true;
1785
+ }
1678
1786
  return false;
1679
1787
  }
1680
1788
  supplyToolSettingsProperties() {
1681
1789
  const toolSettings = new Array();
1682
1790
  toolSettings.push(this.methodProperty.toDialogItem({ rowPriority: 1, columnIndex: 0 }));
1683
- toolSettings.push(this.orderProperty.toDialogItem({ rowPriority: 2, columnIndex: 1 }));
1791
+ if (BCurveMethod.ThroughPoints === this.method)
1792
+ toolSettings.push(this.tangentsProperty.toDialogItem({ rowPriority: 2, columnIndex: 0 }));
1793
+ else
1794
+ toolSettings.push(this.orderProperty.toDialogItem({ rowPriority: 2, columnIndex: 1 }));
1684
1795
  return toolSettings;
1685
1796
  }
1686
1797
  async onRestartTool() {
@@ -1698,15 +1809,20 @@ export class CreateBCurveTool extends CreateOrContinuePathTool {
1698
1809
  const orderValue = IModelApp.toolAdmin.toolSettingsState.getInitialToolSettingValue(this.toolId, this.orderProperty.name);
1699
1810
  if (undefined !== orderValue)
1700
1811
  this.orderProperty.dialogItemValue = orderValue;
1812
+ const tangentsValue = IModelApp.toolAdmin.toolSettingsState.getInitialToolSettingValue(this.toolId, this.tangentsProperty.name);
1813
+ if (undefined !== tangentsValue)
1814
+ this.tangentsProperty.dialogItemValue = tangentsValue;
1701
1815
  return true;
1702
1816
  }
1703
1817
  /** The keyin takes the following arguments, all of which are optional:
1704
1818
  * - `method=0|1` How bcurve will be defined. 0 for control points, 1 for through points.
1705
1819
  * - `order=number` bcurve order from 2 to 16.
1820
+ * - 'tangents=0|1 Whether to specify start/end tangents for through points construction.
1706
1821
  */
1707
1822
  async parseAndRun(...inputArgs) {
1708
1823
  let bcurveMethod;
1709
1824
  let bcurveOrder;
1825
+ let bcurveTangents;
1710
1826
  for (const arg of inputArgs) {
1711
1827
  const parts = arg.split("=");
1712
1828
  if (2 !== parts.length)
@@ -1730,12 +1846,18 @@ export class CreateBCurveTool extends CreateOrContinuePathTool {
1730
1846
  bcurveOrder = order;
1731
1847
  }
1732
1848
  }
1849
+ else if (parts[0].toLowerCase().startsWith("ta")) {
1850
+ const tangents = Number.parseInt(parts[1], 10);
1851
+ bcurveTangents = (0 !== tangents);
1852
+ }
1733
1853
  }
1734
1854
  // Update current session values so keyin args are picked up for tool settings/restart...
1735
1855
  if (undefined !== bcurveMethod)
1736
1856
  IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: this.methodProperty.name, value: { value: bcurveMethod } });
1737
1857
  if (undefined !== bcurveOrder)
1738
1858
  IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: this.orderProperty.name, value: { value: bcurveOrder } });
1859
+ if (undefined !== bcurveTangents)
1860
+ IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: this.tangentsProperty.name, value: { value: bcurveTangents } });
1739
1861
  return this.run();
1740
1862
  }
1741
1863
  }