@mlightcad/data-model 1.15.22 → 1.15.24

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.
@@ -1,26 +1,389 @@
1
+ import { AcCmColor } from '@mlightcad/common';
1
2
  import { AcDbDxfFiler } from '../base/AcDbDxfFiler.js';
2
3
  import { AcDbObject, type AcDbObjectId } from '../base/AcDbObject.js';
4
+ import { AcDbEntity } from '../entity/AcDbEntity.js';
5
+ import { AcDbObjectIterator } from '../misc/AcDbObjectIterator.js';
3
6
  /**
4
- * Nongraphical GROUP object (DXF GROUP).
7
+ * Nongraphical GROUP object (DXF GROUP / ObjectARX `AcDbGroup`).
5
8
  *
6
- * Minimal fields: name, unnamed/selectable flags, and soft-pointers to
7
- * member entity handles.
9
+ * A group is an ordered, named persistent selection set of database entities.
10
+ * It does not own its members. The group **name** is the key in the
11
+ * `ACAD_GROUP` dictionary; DXF group code 300 stores the **description**.
12
+ *
13
+ * @remarks
14
+ * ObjectARX requires the group to be added to the group dictionary (so it has
15
+ * an object id) before members are appended.
8
16
  */
9
17
  export declare class AcDbGroup extends AcDbObject {
18
+ /** Dictionary key name of this group (`ACAD_GROUP` entry). */
10
19
  private _name;
11
- private _unnamed;
20
+ /** Group description (DXF group 300). */
21
+ private _description;
22
+ /** True when this is an anonymous (`*A…`) group. */
23
+ private _anonymous;
24
+ /** Whether the group can be selected as a unit. */
12
25
  private _selectable;
26
+ /** Soft-pointer member entity ids, in group order. */
13
27
  private _entityIds;
28
+ /**
29
+ * Creates a new group.
30
+ *
31
+ * @param description - Optional description (ObjectARX ctor first arg).
32
+ * @param selectable - Whether the group is selectable as a unit (default `true`).
33
+ */
34
+ constructor(description?: string, selectable?: boolean);
35
+ /**
36
+ * Gets the dictionary key name of this group (`ACAD_GROUP` entry).
37
+ *
38
+ * @returns The group name.
39
+ */
14
40
  get name(): string;
41
+ /**
42
+ * Sets the dictionary key name of this group.
43
+ *
44
+ * Prefer {@link setName} when the group is already stored in
45
+ * `database.objects.group`, so the dictionary key stays in sync.
46
+ *
47
+ * @param value - The new group name.
48
+ */
15
49
  set name(value: string);
50
+ /**
51
+ * Gets the group description (DXF group 300).
52
+ *
53
+ * @returns The description string.
54
+ */
55
+ get description(): string;
56
+ /**
57
+ * Sets the group description (DXF group 300).
58
+ *
59
+ * @param value - The new description.
60
+ */
61
+ set description(value: string);
62
+ /**
63
+ * Gets whether this is an anonymous (`*A…`) group.
64
+ *
65
+ * @returns `true` when the group is anonymous.
66
+ *
67
+ * @deprecated Prefer {@link isAnonymous} / {@link setAnonymous}.
68
+ */
16
69
  get unnamed(): boolean;
70
+ /**
71
+ * Sets whether this is an anonymous group.
72
+ *
73
+ * @param value - `true` to mark the group anonymous.
74
+ *
75
+ * @deprecated Prefer {@link isAnonymous} / {@link setAnonymous}.
76
+ */
17
77
  set unnamed(value: boolean);
78
+ /**
79
+ * Gets whether this is an anonymous group.
80
+ *
81
+ * @returns `true` when the group is anonymous.
82
+ */
83
+ get anonymous(): boolean;
84
+ /**
85
+ * Sets whether this is an anonymous group.
86
+ *
87
+ * @param value - `true` to mark the group anonymous.
88
+ */
89
+ set anonymous(value: boolean);
90
+ /**
91
+ * Gets whether the group can be selected as a unit.
92
+ *
93
+ * @returns `true` when the group is selectable.
94
+ */
18
95
  get selectable(): boolean;
96
+ /**
97
+ * Sets whether the group can be selected as a unit.
98
+ *
99
+ * @param value - `true` to allow selecting the group as a unit.
100
+ */
19
101
  set selectable(value: boolean);
102
+ /**
103
+ * Gets soft-pointer member entity ids, in group order.
104
+ *
105
+ * @returns A readonly view of member object ids.
106
+ */
20
107
  get entityIds(): readonly AcDbObjectId[];
108
+ /**
109
+ * Replaces the entire member id list.
110
+ *
111
+ * @param value - New ordered list of member object ids.
112
+ */
21
113
  set entityIds(value: readonly AcDbObjectId[]);
114
+ /**
115
+ * Appends one member id to the group.
116
+ *
117
+ * @param id - Object id of the entity to append.
118
+ *
119
+ * @deprecated Prefer {@link append}.
120
+ */
22
121
  addEntityId(id: AcDbObjectId): void;
122
+ /**
123
+ * Returns whether this group is anonymous.
124
+ *
125
+ * Mirrors ObjectARX `AcDbGroup::isAnonymous`.
126
+ *
127
+ * @returns `true` when the group is anonymous.
128
+ */
129
+ isAnonymous(): boolean;
130
+ /**
131
+ * Marks this group as anonymous.
132
+ *
133
+ * Mirrors ObjectARX `AcDbGroup::setAnonymous`.
134
+ */
135
+ setAnonymous(): void;
136
+ /**
137
+ * Returns whether the group is not accessible.
138
+ *
139
+ * Mirrors ObjectARX `AcDbGroup::isNotAccessible`. This port always returns
140
+ * `false` (inaccessible/proxy groups are not modeled).
141
+ *
142
+ * @returns Always `false`.
143
+ */
144
+ isNotAccessible(): boolean;
145
+ /**
146
+ * Sets the group name and, when database-bound, renames its `ACAD_GROUP`
147
+ * dictionary entry to match.
148
+ *
149
+ * Mirrors ObjectARX `AcDbGroup::setName`.
150
+ *
151
+ * @param name - The new group name.
152
+ */
153
+ setName(name: string): void;
154
+ /**
155
+ * Returns the number of member entities in the group.
156
+ *
157
+ * Mirrors ObjectARX `AcDbGroup::numEntities`.
158
+ *
159
+ * @returns Member count.
160
+ */
161
+ numEntities(): number;
162
+ /**
163
+ * Copies all member object ids into `out` (when provided) and returns the
164
+ * member count.
165
+ *
166
+ * Mirrors ObjectARX `AcDbGroup::allEntityIds`.
167
+ *
168
+ * @param out - Optional array cleared and filled with member ids.
169
+ * @returns The number of member ids.
170
+ */
171
+ allEntityIds(out?: AcDbObjectId[]): number;
172
+ /**
173
+ * Returns whether the group contains the given entity or object id.
174
+ *
175
+ * Mirrors ObjectARX `AcDbGroup::has`.
176
+ *
177
+ * @param entityOrId - An {@link AcDbEntity} or an object id string.
178
+ * @returns `true` when the id is a member of this group.
179
+ */
180
+ has(entityOrId: AcDbEntity | AcDbObjectId): boolean;
181
+ /**
182
+ * Returns the zero-based index of a member id, or `-1` when not found.
183
+ *
184
+ * Mirrors ObjectARX `AcDbGroup::getIndex`.
185
+ *
186
+ * @param id - Member object id to look up.
187
+ * @returns Index in the group, or `-1`.
188
+ */
189
+ getIndex(id: AcDbObjectId): number;
190
+ /**
191
+ * Creates an iterator over member object ids (in group order).
192
+ *
193
+ * Uses the shared {@link AcDbObjectIterator} pattern of this codebase
194
+ * (rather than ObjectARX `AcDbGroupIterator`).
195
+ *
196
+ * @returns An iterator yielding member {@link AcDbObjectId} values.
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * for (const id of group.newIterator()) {
201
+ * const entity = db.getObjectById(id)
202
+ * }
203
+ * ```
204
+ */
205
+ newIterator(): AcDbObjectIterator<AcDbObjectId>;
206
+ /**
207
+ * Appends one or more member ids to the end of the group.
208
+ *
209
+ * Duplicate ids already in the group are ignored. Mirrors ObjectARX
210
+ * `AcDbGroup::append`.
211
+ *
212
+ * @param idOrIds - A single object id or an array of object ids.
213
+ */
214
+ append(idOrIds: AcDbObjectId | readonly AcDbObjectId[]): void;
215
+ /**
216
+ * Prepends one or more member ids to the start of the group.
217
+ *
218
+ * Duplicate ids already in the group are ignored. Mirrors ObjectARX
219
+ * `AcDbGroup::prepend`.
220
+ *
221
+ * @param idOrIds - A single object id or an array of object ids.
222
+ */
223
+ prepend(idOrIds: AcDbObjectId | readonly AcDbObjectId[]): void;
224
+ /**
225
+ * Inserts one or more member ids at the given index.
226
+ *
227
+ * Duplicate ids already in the group are ignored. Mirrors ObjectARX
228
+ * `AcDbGroup::insertAt`.
229
+ *
230
+ * @param index - Zero-based insertion index (clamped to `[0, length]`).
231
+ * @param idOrIds - A single object id or an array of object ids.
232
+ */
233
+ insertAt(index: number, idOrIds: AcDbObjectId | readonly AcDbObjectId[]): void;
234
+ /**
235
+ * Removes one or more members by object id.
236
+ *
237
+ * Mirrors ObjectARX `AcDbGroup::remove`.
238
+ *
239
+ * @param idOrIds - A single object id or an array of object ids to remove.
240
+ */
241
+ remove(idOrIds: AcDbObjectId | readonly AcDbObjectId[]): void;
242
+ /**
243
+ * Removes a member at `index`, or removes the given ids starting from that
244
+ * index when `ids` is provided.
245
+ *
246
+ * Mirrors ObjectARX `AcDbGroup::removeAt`.
247
+ *
248
+ * @param index - Zero-based index of the first member to consider.
249
+ * @param ids - Optional subset of ids to remove from `index` onward.
250
+ */
251
+ removeAt(index: number, ids?: readonly AcDbObjectId[]): void;
252
+ /**
253
+ * Replaces one member id with another.
254
+ *
255
+ * If `newId` is already in the group, `oldId` is simply removed. Mirrors
256
+ * ObjectARX `AcDbGroup::replace`.
257
+ *
258
+ * @param oldId - Existing member object id.
259
+ * @param newId - Replacement object id.
260
+ */
261
+ replace(oldId: AcDbObjectId, newId: AcDbObjectId): void;
262
+ /**
263
+ * Moves `num` members starting at `fromIndex` so they begin at `toIndex`.
264
+ *
265
+ * Mirrors ObjectARX `AcDbGroup::transfer`.
266
+ *
267
+ * @param fromIndex - Start index of the block to move.
268
+ * @param toIndex - Destination index for the block.
269
+ * @param num - Number of members to move.
270
+ */
271
+ transfer(fromIndex: number, toIndex: number, num: number): void;
272
+ /**
273
+ * Reverses the order of members in the group.
274
+ *
275
+ * Mirrors ObjectARX `AcDbGroup::reverse`.
276
+ */
277
+ reverse(): void;
278
+ /**
279
+ * Removes all members from the group.
280
+ *
281
+ * Mirrors ObjectARX `AcDbGroup::clear`.
282
+ */
283
+ clear(): void;
284
+ /**
285
+ * Sets the color of every resolvable member entity.
286
+ *
287
+ * Mirrors ObjectARX `AcDbGroup::setColor`.
288
+ *
289
+ * @param color - Color to apply (cloned onto each entity).
290
+ */
291
+ setColor(color: AcCmColor): void;
292
+ /**
293
+ * Sets the ACI color of every resolvable member entity.
294
+ *
295
+ * Mirrors ObjectARX `AcDbGroup::setColorIndex`.
296
+ *
297
+ * @param index - AutoCAD Color Index (`0`–`256`).
298
+ */
299
+ setColorIndex(index: number): void;
300
+ /**
301
+ * Sets the layer of every resolvable member entity.
302
+ *
303
+ * Mirrors ObjectARX `AcDbGroup::setLayer`. When `layerOrId` is an object id
304
+ * of a layer table record, the record's name is used.
305
+ *
306
+ * @param layerOrId - Layer name or layer-table-record object id.
307
+ */
308
+ setLayer(layerOrId: string | AcDbObjectId): void;
309
+ /**
310
+ * Sets the linetype of every resolvable member entity.
311
+ *
312
+ * Mirrors ObjectARX `AcDbGroup::setLinetype`. When `linetypeOrId` is an
313
+ * object id of a linetype table record, the record's name is used.
314
+ *
315
+ * @param linetypeOrId - Linetype name or linetype-table-record object id.
316
+ */
317
+ setLinetype(linetypeOrId: string | AcDbObjectId): void;
318
+ /**
319
+ * Sets the linetype scale of every resolvable member entity.
320
+ *
321
+ * Mirrors ObjectARX `AcDbGroup::setLinetypeScale`.
322
+ *
323
+ * @param scale - Linetype scale factor.
324
+ */
325
+ setLinetypeScale(scale: number): void;
326
+ /**
327
+ * Sets the material of every resolvable member entity.
328
+ *
329
+ * Mirrors ObjectARX `AcDbGroup::setMaterial`. Currently a no-op because
330
+ * entities keep material as a raw DXF extra without a typed setter.
331
+ *
332
+ * @param _materialOrId - Material name or material object id.
333
+ */
334
+ setMaterial(_materialOrId: string | AcDbObjectId): void;
335
+ /**
336
+ * Sets the visibility of every resolvable member entity.
337
+ *
338
+ * Mirrors ObjectARX `AcDbGroup::setVisibility`.
339
+ *
340
+ * @param visible - `true` to show members; `false` to hide them.
341
+ */
342
+ setVisibility(visible: boolean): void;
343
+ /**
344
+ * Sets the highlight state of every resolvable member entity.
345
+ *
346
+ * Mirrors ObjectARX `AcDbGroup::setHighlight`. Currently a no-op because
347
+ * this model has no per-entity highlight persistence.
348
+ *
349
+ * @param _highlight - Desired highlight state.
350
+ */
351
+ setHighlight(_highlight: boolean): void;
352
+ /**
353
+ * Writes DXF subclass fields for this group.
354
+ *
355
+ * @param filer - DXF output writer.
356
+ * @returns This instance for chaining.
357
+ */
23
358
  dxfOutFields(filer: AcDbDxfFiler): this;
359
+ /**
360
+ * Reads DXF subclass fields for this group.
361
+ *
362
+ * @param filer - DXF input reader positioned at this object.
363
+ * @returns This instance for chaining.
364
+ */
24
365
  dxfInFields(filer: AcDbDxfFiler): this;
366
+ /**
367
+ * Resolves member ids to {@link AcDbEntity} instances via the owning
368
+ * database. Non-entity or missing ids are skipped.
369
+ *
370
+ * @returns Entities currently resolvable from {@link entityIds}.
371
+ */
372
+ private memberEntities;
373
+ /**
374
+ * Resolves a layer name from a name string or layer-table-record object id.
375
+ *
376
+ * @param layerOrId - Layer name or object id.
377
+ * @returns Layer name to apply to member entities.
378
+ */
379
+ private resolveLayerName;
380
+ /**
381
+ * Resolves a linetype name from a name string or linetype-table-record
382
+ * object id.
383
+ *
384
+ * @param linetypeOrId - Linetype name or object id.
385
+ * @returns Linetype name to apply to member entities.
386
+ */
387
+ private resolveLinetypeName;
25
388
  }
26
389
  //# sourceMappingURL=AcDbGroup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AcDbGroup.d.ts","sourceRoot":"","sources":["../../src/object/AcDbGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAErE;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,WAAW,CAAO;IAC1B,OAAO,CAAC,UAAU,CAAqB;IAEvC,IAAI,IAAI,IAGQ,MAAM,CADrB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED,IAAI,OAAO,IAGQ,OAAO,CADzB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,IAAI,UAAU,IAGQ,OAAO,CAD5B;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAE5B;IAED,IAAI,SAAS,IAAI,SAAS,YAAY,EAAE,CAEvC;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,EAE3C;IAED,WAAW,CAAC,EAAE,EAAE,YAAY;IAInB,YAAY,CAAC,KAAK,EAAE,YAAY;IAchC,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;CAgChD"}
1
+ {"version":3,"file":"AcDbGroup.d.ts","sourceRoot":"","sources":["../../src/object/AcDbGroup.ts"],"names":[],"mappings":"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"}