feat(array): ARRAYEDIT Source edits what an associative array repeats

ARRAYEDIT picks an associative array (or takes the preselected one) and
its Source option opens the objects every item repeats in the Block
Editor; saving there updates all items at once. Counts and spacings stay
in Properties.

Refs #1109

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Opus 5.5 committed 2026-10-13 22:29:56 +03:00
1 parent 780b54489e
commit 881d237629
26 files changed
+187

No files matched your search

+3
View File
@@ -3134,6 +3134,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT حدد كتلة ذات سمات:
.annotation-object-scale = مقياس كائن التعليق التوضيحي
.bedit-select-block-reference-to-edit = BEDIT حدد مرجع الكتلة لتحريره:
.arrayedit-select-array = ARRAYEDIT حدد المصفوفة:
.arrayedit-options = ARRAYEDIT أدخل خيارًا [المصدر/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: الكائن المحدد ليس مصفوفة ترابطية.
.blend-enter-continuity-tangent-curvature-c = BLEND أدخل الاستمرارية [مماس/انحناء] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND حدد المنحنى المفتوح الأول [الاستمرارية=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND حدد المنحنى المفتوح الثاني [الاستمرارية=__ocs_arg_c__]:
+3
View File
@@ -3121,6 +3121,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Избери блок с атрибути:
.annotation-object-scale = Мащаб на анотационен обект
.bedit-select-block-reference-to-edit = BEDIT Избери препратка към блок за редактиране:
.arrayedit-select-array = ARRAYEDIT Изберете масив:
.arrayedit-options = ARRAYEDIT Въведете опция [Източник/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: избраният обект не е асоциативен масив.
.blend-enter-continuity-tangent-curvature-c = BLEND Въведи непрекъснатост [Допирателност/Кривина] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Избери първа отворена крива [Непрекъснатост=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Избери втора отворена крива [Непрекъснатост=__ocs_arg_c__]:
+3
View File
@@ -3121,6 +3121,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Vyberte blok s atributy:
.annotation-object-scale = Měřítko objektu anotace
.bedit-select-block-reference-to-edit = BEDIT Vyberte referenci bloku, kterou chcete upravit:
.arrayedit-select-array = ARRAYEDIT Vyberte pole:
.arrayedit-options = ARRAYEDIT Zadejte možnost [Zdroj/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: vybraný objekt není asociativní pole.
.blend-enter-continuity-tangent-curvature-c = BLEND Enter spojitost [Tečna/Zakřivení] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Vyberte první otevřenou křivku [Continuity=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Vyberte druhou otevřenou křivku [Continuity=__ocs_arg_c__]:
+3
View File
@@ -3122,6 +3122,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Block mit Attributen auswählen:
.annotation-object-scale = Beschriftungsobjektmaßstab
.bedit-select-block-reference-to-edit = BEDIT Blockreferenz zum Bearbeiten auswählen:
.arrayedit-select-array = ARRAYEDIT Reihe wählen:
.arrayedit-options = ARRAYEDIT Option eingeben [Quelle/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: das gewählte Objekt ist keine assoziative Reihe.
.blend-enter-continuity-tangent-curvature-c = BLEND Geben Sie Kontinuität ein [Tangente/Krümmung] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Erste offene Kurve auswählen [Continuity=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND zweite offene Kurve auswählen [Continuity=__ocs_arg_c__]:
+3
View File
@@ -3122,6 +3122,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Επιλέξτε μπλοκ με χαρακτηριστικά:
.annotation-object-scale = Κλίμακα αντικειμένου επισημείωσης
.bedit-select-block-reference-to-edit = BEDIT Επιλέξτε αναφορά μπλοκ προς επεξεργασία:
.arrayedit-select-array = ARRAYEDIT Επιλέξτε διάταξη:
.arrayedit-options = ARRAYEDIT Δώστε επιλογή [Πηγή/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: το επιλεγμένο αντικείμενο δεν είναι συσχετιστική διάταξη.
.blend-enter-continuity-tangent-curvature-c = BLEND Δώστε συνέχεια [Εφαπτομενική/Καμπυλότητα] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Επιλέξτε πρώτη ανοικτή καμπύλη [Συνέχεια=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Επιλέξτε δεύτερη ανοικτή καμπύλη [Συνέχεια=__ocs_arg_c__]:
+3
View File
@@ -3122,6 +3122,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Select block with attributes:
.annotation-object-scale = Annotation Object Scale
.bedit-select-block-reference-to-edit = BEDIT Select block reference to edit:
.arrayedit-select-array = ARRAYEDIT Select array:
.arrayedit-options = ARRAYEDIT Enter an option [Source/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: the selected object is not an associative array.
.blend-enter-continuity-tangent-curvature-c = BLEND Enter continuity [Tangent/Curvature] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Select first open curve [Continuity=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Select second open curve [Continuity=__ocs_arg_c__]:
+3
View File
@@ -3122,6 +3122,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Seleccione un bloque con atributos:
.annotation-object-scale = Escala del objeto anotativo
.bedit-select-block-reference-to-edit = BEDIT Seleccione la referencia de bloque que desea editar:
.arrayedit-select-array = ARRAYEDIT Seleccione la matriz:
.arrayedit-options = ARRAYEDIT Indique una opción [Origen/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: el objeto seleccionado no es una matriz asociativa.
.blend-enter-continuity-tangent-curvature-c = BLEND Indique la continuidad [Tangente/Curvatura] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Seleccione la primera curva abierta [Continuidad=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Seleccione la segunda curva abierta [Continuidad=__ocs_arg_c__]:
+3
View File
@@ -3121,6 +3121,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Valitse lohko määritteillä:
.annotation-object-scale = Merkintäobjektin mittakaava
.bedit-select-block-reference-to-edit = BEDIT Valitse muokattava lohkoviite:
.arrayedit-select-array = ARRAYEDIT Valitse sarja:
.arrayedit-options = ARRAYEDIT Anna vaihtoehto [Lähde/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: valittu objekti ei ole assosiatiivinen sarja.
.blend-enter-continuity-tangent-curvature-c = BLEND Enter jatkuvuus [tangentti/kaarevuus] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Valitse ensimmäinen avoin käyrä [Continuity=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Valitse toinen avoin käyrä [Continuity=__ocs_arg_c__]:
+3
View File
@@ -3122,6 +3122,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Sélectionner un bloc avec des attributs :
.annotation-object-scale = Échelle d'objets d'annotation
.bedit-select-block-reference-to-edit = BEDIT Sélectionnez la référence de bloc à modifier :
.arrayedit-select-array = ARRAYEDIT Sélectionnez le réseau :
.arrayedit-options = ARRAYEDIT Entrez une option [Source/eXit] <eXit> :
.arrayedit-not-an-array = ARRAYEDIT : l'objet sélectionné n'est pas un réseau associatif.
.blend-enter-continuity-tangent-curvature-c = BLEND Entrer la continuité [Tangent/Curvature] <__ocs_arg_c__:
.blend-select-first-open-curve-continuity-c = BLEND Sélectionner la première courbe ouverte [Continuité=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Sélectionner la deuxième courbe ouverte [Continuité=__ocs_arg_c__]:
+3
View File
@@ -3110,6 +3110,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT विशेषताओं के साथ ब्लॉक का चयन करें:
.annotation-object-scale = Annotation ऑब्जेक्ट स्केल
.bedit-select-block-reference-to-edit = BEDIT संपादित करने के लिए ब्लॉक संदर्भ का चयन करें:
.arrayedit-select-array = ARRAYEDIT ऐरे चुनें:
.arrayedit-options = ARRAYEDIT विकल्प दर्ज करें [स्रोत/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: चुना गया ऑब्जेक्ट सहयोगी ऐरे नहीं है।
.blend-enter-continuity-tangent-curvature-c = BLEND निरंतरता चुनें [स्पर्शरेखा/वक्रता] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND प्रथम खुले वक्र का चयन करें [Continuity=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND दूसरा खुला वक्र चुनें [Continuity=__ocs_arg_c__]:
+3
View File
@@ -3124,6 +3124,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Blokk kiválasztása attribútumokkal:
.annotation-object-scale = Feliratozási objektum léptéke
.bedit-select-block-reference-to-edit = BEDIT Válassza ki a szerkeszteni kívánt blokkreferenciát:
.arrayedit-select-array = ARRAYEDIT Válassza ki a tömböt:
.arrayedit-options = ARRAYEDIT Adjon meg egy lehetőséget [Forrás/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: a kijelölt objektum nem asszociatív tömb.
.blend-enter-continuity-tangent-curvature-c = BLEND Adja meg a folytonosságot [Tangent/Curvature] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Válassza ki az első nyitott görbét [Continuity=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Válassza ki a második nyitott görbét [Continuity=__ocs_arg_c__]:
+3
View File
@@ -3121,6 +3121,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Seleziona blocco con attributi:
.annotation-object-scale = Scala oggetto annotazione
.bedit-select-block-reference-to-edit = BEDIT Selezionare il riferimento di blocco da modificare:
.arrayedit-select-array = ARRAYEDIT Selezionare la serie:
.arrayedit-options = ARRAYEDIT Immettere un'opzione [Origine/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: l'oggetto selezionato non è una serie associativa.
.blend-enter-continuity-tangent-curvature-c = BLEND Enter continuità [Tangente/Curvatura] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Selezionare la prima curva aperta [Continuità=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Selezionare la seconda curva aperta [Continuità=__ocs_arg_c__]:
+3
View File
@@ -3112,6 +3112,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT 属性付きブロックを選択:
.annotation-object-scale = 注釈オブジェクト尺度
.bedit-select-block-reference-to-edit = BEDIT 編集するブロック参照を選択:
.arrayedit-select-array = ARRAYEDIT 配列複写を選択:
.arrayedit-options = ARRAYEDIT オプションを入力 [元/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: 選択したオブジェクトは自動調整配列複写ではありません。
.blend-enter-continuity-tangent-curvature-c = BLEND 連続性を入力 [接線/曲率] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND 1 本目の開いた曲線を選択 [連続性=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND 2 本目の開いた曲線を選択 [連続性=__ocs_arg_c__]:
+3
View File
@@ -3121,6 +3121,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT 속성이 있는 블록 선택:
.annotation-object-scale = 주석 객체 축척
.bedit-select-block-reference-to-edit = BEDIT 편집할 블록 참조 선택:
.arrayedit-select-array = ARRAYEDIT 배열 선택:
.arrayedit-options = ARRAYEDIT 옵션 입력 [원본/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: 선택한 객체는 연관 배열이 아닙니다.
.blend-enter-continuity-tangent-curvature-c = BLEND Enter 연속성 [접선/곡률] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND 첫 번째 열린 곡선 선택 [연속성=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND 두 번째 열린 곡선 선택 [연속성=__ocs_arg_c__]:
+3
View File
@@ -3122,6 +3122,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT ເລືອກບລັອກທີ່ມີຄຸນລັກສະນະ:
.annotation-object-scale = ມາດຕາສ່ວນວັດຖຸຄຳອະທິບາຍ
.bedit-select-block-reference-to-edit = BEDIT ເລືອກການອ້າງອີງບລັອກທີ່ຈະແກ້ໄຂ:
.arrayedit-select-array = ARRAYEDIT ເລືອກອາເຣ:
.arrayedit-options = ARRAYEDIT ປ້ອນທາງເລືອກ [ແຫຼ່ງ/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: ວັດຖຸທີ່ເລືອກບໍ່ແມ່ນອາເຣທີ່ເຊື່ອມໂຍງ.
.blend-enter-continuity-tangent-curvature-c = BLEND ປ້ອນຄວາມຕໍ່ເນື່ອງ [Tangent/Curvature] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND ເລືອກເສັ້ນໂຄ້ງປາຍເປີດທຳອິດ [Continuity=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND ເລືອກເສັ້ນໂຄ້ງປາຍເປີດທີສອງ [Continuity=__ocs_arg_c__]:
+3
View File
@@ -3122,6 +3122,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Selecteer symbool met attributen:
.annotation-object-scale = Annotatie objectschaal
.bedit-select-block-reference-to-edit = BEDIT Selecteer symboolverwijzing naar bewerken:
.arrayedit-select-array = ARRAYEDIT Selecteer de reeks:
.arrayedit-options = ARRAYEDIT Geef een optie [Bron/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: het geselecteerde object is geen associatieve reeks.
.blend-enter-continuity-tangent-curvature-c = BLEND Vul continuïteit [tangent/curvature] <__ocs_arg_c__> in:
.blend-select-first-open-curve-continuity-c = BLEND Selecteer eerste open curve [Continuïteit=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Selecteer tweede open curve [Continuïteit=__ocs_arg_c__]:
+3
View File
@@ -3121,6 +3121,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Wybierz blok z atrybutami:
.annotation-object-scale = Skala obiektu adnotacji
.bedit-select-block-reference-to-edit = BEDIT Wybierz odniesienie do bloku do edycji:
.arrayedit-select-array = ARRAYEDIT Wybierz szyk:
.arrayedit-options = ARRAYEDIT Podaj opcję [Źródło/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: wybrany obiekt nie jest szykiem skojarzonym.
.blend-enter-continuity-tangent-curvature-c = BLEND Enter ciągłość [styczna/krzywizna] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Wybierz pierwszą otwartą krzywą [Continuity=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Wybierz drugą otwartą krzywą [Continuity=__ocs_arg_c__]:
+3
View File
@@ -3122,6 +3122,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Selecione um bloco com atributos:
.annotation-object-scale = Escala de objeto de anotação
.bedit-select-block-reference-to-edit = BEDIT Selecione a referência de bloco a editar:
.arrayedit-select-array = ARRAYEDIT Selecione o arranjo:
.arrayedit-options = ARRAYEDIT Digite uma opção [Origem/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: o objeto selecionado não é um arranjo associativo.
.blend-enter-continuity-tangent-curvature-c = BLEND Insira a continuidade [Tangente/Curvatura] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Selecione a primeira curva aberta [Continuidade=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Selecione a segunda curva aberta [Continuidade=__ocs_arg_c__]:
+3
View File
@@ -3125,6 +3125,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Выберите блок с атрибутами:
.annotation-object-scale = Масштаб аннотативного объекта
.bedit-select-block-reference-to-edit = BEDIT Выберите ссылку на блок для редактирования:
.arrayedit-select-array = ARRAYEDIT Выберите массив:
.arrayedit-options = ARRAYEDIT Введите параметр [Исходные/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: выбранный объект не является ассоциативным массивом.
.blend-enter-continuity-tangent-curvature-c = BLEND Введите непрерывность [Тангент/Курватура] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND Выберите первую открытую кривую [Продолжение=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND Выберите вторую открытую кривую [Продолжение=__ocs_arg_c__]:
+3
View File
@@ -3103,6 +3103,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT Öznitelikleri olan bir blok seçin:
.annotation-object-scale = Açıklama Nesnesi Ölçeği
.bedit-select-block-reference-to-edit = BEDIT Düzenlenecek blok referansını seçin:
.arrayedit-select-array = ARRAYEDIT Diziyi seçin:
.arrayedit-options = ARRAYEDIT Bir seçenek girin [Kaynak/çıKış] <çıKış>:
.arrayedit-not-an-array = ARRAYEDIT: seçilen nesne ilişkili bir dizi değil.
.blend-enter-continuity-tangent-curvature-c = BLEND Sürekliliği girin [Teğet/Eğrilik] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND İlk açık eğriyi seçin [Süreklilik=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND İkinci açık eğriyi seçin [Süreklilik=__ocs_arg_c__]:
+3
View File
@@ -3109,6 +3109,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT 选择带属性的块:
.annotation-object-scale = 注释对象比例
.bedit-select-block-reference-to-edit = BEDIT 选择要编辑的块引用 :
.arrayedit-select-array = ARRAYEDIT 选择阵列:
.arrayedit-options = ARRAYEDIT 输入选项 [源/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: 所选对象不是关联阵列。
.blend-enter-continuity-tangent-curvature-c = BLEND 输入连续性 [相切/曲率] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND 选择第一条开放曲线 [Continuity=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND 选择第二条开放曲线 [Continuity=__ocs_arg_c__]:
+3
View File
@@ -3121,6 +3121,9 @@ modify =
.attedit-select-block-with-attributes = ATTEDIT 選擇帶屬性的圖塊:
.annotation-object-scale = 註解物件比例
.bedit-select-block-reference-to-edit = BEDIT 選擇要編輯的圖塊引用 :
.arrayedit-select-array = ARRAYEDIT 選取陣列:
.arrayedit-options = ARRAYEDIT 輸入選項 [來源/eXit] <eXit>:
.arrayedit-not-an-array = ARRAYEDIT: 選取的物件不是關聯式陣列。
.blend-enter-continuity-tangent-curvature-c = BLEND 輸入連續性 [相切/曲率] <__ocs_arg_c__>:
.blend-select-first-open-curve-continuity-c = BLEND 選擇第一條開放曲線 [Continuity=__ocs_arg_c__]:
.blend-select-second-open-curve-continuity-c = BLEND 選擇第二條開放曲線 [Continuity=__ocs_arg_c__]:
+39
View File
@@ -301,6 +301,45 @@ impl OpenCADStudio {
}
}
// ARRAYEDIT — edit an associative array; a preselected one skips
// the pick.
"ARRAYEDIT" => {
use crate::modules::draw::modify::arrayedit::ArrayEditCommand;
let selected = self.tabs[i].scene.selected_handles_in_order();
let array = match selected.as_slice() {
[handle] => Some(*handle),
_ => None,
};
self.tabs[i].scene.deselect_all();
let command = ArrayEditCommand::new(array);
self.command_line.push_info(&command.prompt());
self.tabs[i].active_cmd = Some(Box::new(command));
}
// ARRAYEDIT Source: edit the objects the array repeats in the
// Block Editor; every item follows when it is saved.
cmd if cmd.starts_with("ARRAYEDIT_SOURCE:") => {
let handle = codec::Handle::new(
cmd["ARRAYEDIT_SOURCE:".len()..].parse().unwrap_or(0),
);
let document = &self.tabs[i].scene.document;
let source = crate::scene::assoc_array::array_of_insert(document, handle)
.and_then(|array| {
document
.block_records
.iter()
.find(|record| record.handle == array.source_block)
.map(|record| record.name.clone())
});
match source {
Some(name) => return Some(self.dispatch_command(&format!("BEDIT_OPEN:{name}"))),
None => self.command_line.push_error(
crate::t!("ARRAYEDIT: the selected object is not an associative array.")
.as_ref(),
),
}
}
// PASTESPEC — offer the copied objects now; the system clipboard's
// text joins the formats once read (Message::PasteSpecial).
"PASTESPEC" => {
+3
View File
@@ -802,6 +802,9 @@ pub(super) fn message_attribute(source: &str) -> Option<(&'static str, &'static
"BACKGROUND colour [Default/Black/DarkGray/Gray/LightGray/White] or R G B (0–255):" => Some(("file", "background-colour-default-black-darkgray-gray")),
"BASE Specify base point:" => Some(("insert", "base-specify-base-point")),
"BEDIT Select block reference to edit:" => Some(("modify", "bedit-select-block-reference-to-edit")),
"ARRAYEDIT Select array:" => Some(("modify", "arrayedit-select-array")),
"ARRAYEDIT Enter an option [Source/eXit] <eXit>:" => Some(("modify", "arrayedit-options")),
"ARRAYEDIT: the selected object is not an associative array." => Some(("modify", "arrayedit-not-an-array")),
"BEDIT: Block \"{}\" edit discarded." => Some(("inquiry", "bedit-block-edit-discarded")),
"BEDIT: Block \"{}\" saved. All references updated." => Some(("inquiry", "bedit-block-saved-all-references-updated")),
"BEDIT: Editing block \"{}\". Use Save Block or Discard to finish." => Some(("inquiry", "bedit-editing-block-use-save-block-or-discard")),
+78
View File
@@ -0,0 +1,78 @@
// ARRAYEDIT — edit an associative array. Counts and spacings are edited in
// Properties; Source opens the objects every item repeats in the Block
// Editor, and closing it updates all items at once.
use crate::command::{CadCommand, CmdOption, CmdResult};
use codec::Handle;
use glam::DVec3;
pub struct ArrayEditCommand {
array: Option<Handle>,
}
impl ArrayEditCommand {
pub fn new(array: Option<Handle>) -> Self {
Self { array }
}
}
impl CadCommand for ArrayEditCommand {
fn name(&self) -> &'static str {
"ARRAYEDIT"
}
fn prompt(&self) -> String {
match self.array {
None => crate::t!("ARRAYEDIT Select array:").into_owned(),
Some(_) => crate::t!("ARRAYEDIT Enter an option [Source/eXit] <eXit>:").into_owned(),
}
}
fn options(&self) -> Vec<CmdOption> {
match self.array {
None => Vec::new(),
Some(_) => vec![
CmdOption::new(crate::t!("Source").as_ref(), "S"),
CmdOption::new(crate::t!("eXit").as_ref(), "X"),
],
}
}
fn needs_entity_pick(&self) -> bool {
self.array.is_none()
}
fn on_entity_pick(&mut self, handle: Handle, _pt: DVec3) -> CmdResult {
if handle.is_null() {
return CmdResult::NeedPoint;
}
self.array = Some(handle);
CmdResult::NeedPoint
}
fn wants_text_input(&self) -> bool {
self.array.is_some()
}
fn on_text_input(&mut self, text: &str) -> Option<CmdResult> {
let array = self.array?;
match text.trim().trim_start_matches('_').to_ascii_uppercase().as_str() {
"S" | "SOURCE" => Some(CmdResult::Dispatch(format!(
"ARRAYEDIT_SOURCE:{}",
array.value()
))),
"X" | "EXIT" => Some(CmdResult::Cancel),
_ => None,
}
}
fn on_point(&mut self, _pt: DVec3) -> CmdResult {
CmdResult::NeedPoint
}
fn on_enter(&mut self) -> CmdResult {
CmdResult::Cancel
}
}
inventory::submit!(crate::command::CommandRegistration { names: &["ARRAYEDIT"] });
+1
View File
@@ -1,5 +1,6 @@
pub mod align;
pub mod array;
pub mod arrayedit;
pub mod attedit;
pub mod blend;
pub mod block_edit;