| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Целые числа с нулями впереди

Целые числа с нулями впереди

Ответ
Поиск в этой теме
Непрочитано 10.07.2021, 20:07 #1
Целые числа с нулями впереди
shishoq
 
spb
Регистрация: 23.01.2005
Сообщений: 119

Как проставить в таблице целые числа (номера помещений или мест и т.д. типа 001), чтобы нули впереди не "съедались", а само число оставалось логически целым числом (whole number), а не превращалось в текст? Чтобы можно было ячейку с ним "растягивать" на след.строки и они автоматом прибавлялись бы по +1, как обычное число, но сохраняя впереди нужное количество нулей до 3-значного вида (001 > .. > 015 > .. > 158). (Искал по форуму, но не нашёл)
Просмотров: 4301
 
Непрочитано 10.07.2021, 22:05
#2
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,096


Ну простое решение "в лоб" - преффиксы. Но как добавить нужное число разрядов- вопрос.... Ну или начинать с 10 до 99...
v.psk вне форума  
 
Непрочитано 11.07.2021, 07:05
#3
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,224


А что если соединить два поля - номер этажа и номер помещения.
Разместив два атрибута рядом, как одна строка.

Последний раз редактировалось VitalyAF, 11.07.2021 в 16:14.
VitalyAF вне форума  
 
Автор темы   Непрочитано 05.01.2022, 22:24
#4
shishoq


 
Регистрация: 23.01.2005
spb
Сообщений: 119


спасибо, примерно так и делал (столбец с "пустыми" нулями, привязка MR + столбец со значащими цифрами, привязка ML), но не решает полностью проблемы, -- когда кол-во разрядов меняется. -- ручной труд остаётся )..
shishoq на форуме  
 
Непрочитано 05.01.2022, 23:40
#5
BURAN988

проект-конструктор
 
Регистрация: 14.12.2014
Ростов-на-Дону
Сообщений: 2,345
Отправить сообщение для BURAN988 с помощью Skype™


Цитата:
Сообщение от shishoq Посмотреть сообщение
но не решает полностью проблемы
В Excele заполнить и перенести в Autocad
__________________
Человек может всё, пока не начинает что-то делать...
BURAN988 вне форума  
 
Непрочитано 06.01.2022, 04:15
#6
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,096


Единственное что требуется, это чтобы текст в таблице был числом, но с тремя разрядами? Никаких ссылок, полей итд не требуется?
v.psk вне форума  
 
Непрочитано 06.01.2022, 10:47
#7
zvezdochiot

маркшейдер
 
Регистрация: 25.09.2021
Москва
Сообщений: 146


Цитата:
Сообщение от shishoq Посмотреть сообщение
чтобы нули впереди не "съедались"
Самое распространённое решение - добавить 1000, перевести в строку и убрать ведущую 1. (или, ежели говорить более правильно, взять 3 правых символа).
__________________
Keep it simple, stupid.
zvezdochiot вне форума  
 
Автор темы   Непрочитано 21.01.2022, 16:00
#8
shishoq


 
Регистрация: 23.01.2005
spb
Сообщений: 119


Цитата:
Сообщение от v.psk Посмотреть сообщение
Единственное что требуется, это чтобы текст в таблице был числом, но с тремя разрядами? Никаких ссылок, полей итд не требуется?
- Да, просто номера по порядку, но чтобы срабатывало авто-увеличение на +1 при "растяжке" ячейки

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от zvezdochiot Посмотреть сообщение
Самое распространённое решение - добавить 1000, перевести в строку и убрать ведущую 1. (или, ежели говорить более правильно, взять 3 правых символа).
-- Ну так это ж уже программным способом? или макрос какой можно кудато вставить? Я имел в виду как-то по-человечески настроить формат таблицы...
shishoq на форуме  
 
Непрочитано 21.01.2022, 16:29
#9
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,096


shishoq, вроде отдельно не писали....
Цитата:
Сообщение от shishoq Посмотреть сообщение
но не решает полностью проблемы, -- когда кол-во разрядов меняется. -- ручной труд остаётся )..
начинать нумерацию со 101 - не вариант?
преффиксы не выход?
Вложения
Тип файла: dwg
DWG 2010
преффиксы.dwg (7.38 Мб, 12 просмотров)

Последний раз редактировалось v.psk, 21.01.2022 в 16:39.
v.psk вне форума  
 
Непрочитано 22.01.2022, 22:05
#10
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Можно было бы легко написать небольшой лиспик, который бы попросил указать нужный столбец и в зависимости от количества цифр в числе добавлял бы нужное кол-во нулей в префикс каждой ячейке. Каждый раз при изменении нумерации, правда пришлось бы вызывать лисп, но это всё же удобнее, чем менять префиксы вручную. Только есть одно "но". В ActiveX почему-то не нашел метода, хоть сколько-то связанного с префиксами. Неужто нету? Или просто не задокументировали, как всегда?
Правда, не сказать, что я прям упорно и долго искал...
Полещука тоже смотрел.

----- добавлено через ~4 мин. -----
Хотя там (по ссылке) сверху написано следующее:
Код:
[Выделить все]
Create using:     Dim customObj as AcadTable
Что бы это значило?
Может подойдет свойство TextPrefix для объектов размеров? Что тогда скармливать ему в качестве объекта (текст таблицы)? Что-то забыл уже, как его выцепить?
skkkk вне форума  
 
Непрочитано 23.01.2022, 09:50
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


skkkk, на форуме были коды для работы с префиксами / постфиксами. Ищи по слову "нумератор" или наподобие
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.01.2022, 14:27
#12
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Кулик Алексей aka kpblc, насколько помню, там была работа со строками, а не метод вла-вла-вла-prefix, но погляжу на досуге, спасибо
skkkk вне форума  
 
Непрочитано 23.01.2022, 15:17
#13
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Ну как бы "префикс" - это часть строки. Так что и искать надо работу со строками (как мне кажется).
Чтоб "растягивать" в таблице - такое вряд ли получится в ACAD. Я бы подумал на предмет кода, в котором пользователь указывает ячейку таблицы, а дальше код уже сам идет до конца таблицы и формирует соответствующую строку.
Что-нибудь такого типа (написано на коленке и ни в коем случае не претендует на рабочий код):
Код:
[Выделить все]
 (vl-load-com)
(defun t1 (/ fun_append-prefix table point row cur_row cur_col cur_value range)

  (defun fun_append-prefix (str len)
    (while (<= (strlen str) len)
      (setq str (strcat "0" str))
    ) ;_ end of while
    str
  ) ;_ end of defun

  (if (and (setq table (vlax-ename->vla-object (car (entsel "\nSelect table : "))))
           (setq point (getpoint "\Pick point : "))
           (equal (vla-hittest
                    table
                    (vlax-3d-point point)
                    (vlax-3d-point (trans (getvar "viewdir") 1 0))
                    'cur_row
                    'cur_col
                  ) ;_ end of vla-hittest
                  :vlax-true
           ) ;_ end of equal
      ) ;_ end of and
    (progn
      (setq cur_value (atoi (vla-gettext table cur_row cur_col))
            range     (strlen (itoa (- (vla-get-rows table) cur_row)))
            row       cur_row
      ) ;_ end of setq
      (while (< row (vla-get-rows table))
        (vla-setcelltype table row cur_col actextcell)
        (vla-settext table row cur_col (fun_append-prefix (itoa cur_value) range))
        (setq row       (1+ row)
              cur_value (1+ cur_value)
        ) ;_ end of setq
      ) ;_ end of while
    ) ;_ end of progn
  ) ;_ end of if
) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.01.2022, 16:03
#14
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Кулик Алексей aka kpblc, так видишь ли в чём дело? Надо же, чтоб формат оставался числом, чтоб растягивать можно было.
Цитата:
Сообщение от shishoq Посмотреть сообщение
Да, просто номера по порядку, но чтобы срабатывало авто-увеличение на +1 при "растяжке" ячейки
Хотя, вместо растяжения применил код, да и всё. Он, кстати, работает.

----- добавлено через ~3 ч. -----
Однако, я подумал, а ведь иногда в таблице надо пропустить строку или начать нумерацию разделов сначала. Тут-то и запнётся ТС. Можно вывести в запрос стартовый номер.

Просто мне интересно, сработает ли (vla-put-TextPrefix..) на табличном тексте?
Кулик Алексей aka kpblc, не знаешь, случайно, как выцепить vla-объект этого текста? Вроде что-то припоминаю такое смутное, но блин, уже год наверное не шкодил, не растерять бы навыки, пригодятся ведь.
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Целые числа с нулями впереди

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Оптимизация обработки большого числа элементов АлексЮстасу Программирование 127 05.10.2017 01:18
Как отключить автозамену числа на дату в Excel? Art1st Прочее. Программное обеспечение 10 31.07.2015 14:45
Учитываются ли подземные этажи при определении этажности для расчета числа лифтов? Them Архитектура 21 03.07.2015 12:09
Почему (vla-get-Alignment возвращает целые числа? {Smirnoff} Программирование 3 07.04.2004 18:51