|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Loolik, если коротенько обобщить, то длину каких примитивов нужно считать и в какие вставлять? По мне, так лучше выстругать новые грабли)
|
||||
|
||||
Регистрация: 10.10.2008
Сообщений: 26
|
koMon, постараюсь перефразировать)
Собственно, взят код из поста 104. Добавляю в конце команду: Len2ET - вставка результата функции EntLen в существующий Текст/МТекст/Ячейку таблицы/Атрибут/МВыноску. Эта команда работает как положено, за исключением вставки текста в ячейку таблицы с пустым текстом. Своими силами исправить ошибку не смогу Код:
Интуитивно понимаю, что не работает эта часть кода Код:
|
|||
|
||||
Вот. Вы Entlen-ом суммарную длину каких-то определённых примитивов считаете, ну там отрезок, полилиния..? Потому как Entlen из #104, по ходу, будет считать всё, что считается.
|
||||
|
||||
Регистрация: 10.10.2008
Сообщений: 26
|
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Добавлена опция "Точка"
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 27.04.2018 в 10:55. Причина: Добавлена мультивыноска ("MULTILEADER") |
|||
|
||||
Регистрация: 10.10.2008
Сообщений: 26
|
Спасибо, но результат выполнения "Точка для пустой ячейки" создает новый текстовый примитив.
А возможно реализовать вставку текста именно в пустую ячейку таблицы, причем без дополнительного выбора в контекстном меню? Т.е. чтобы TTC_Paste понимала, что я выбрал либо текстосодержащий объект (МТекст, Текст, Артибут, ЯчейкуТаблицыСТекстом), либо ПустуюЯчейкуТаблицы? |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Проблема как понять, что ты выбрал пустую ячейку? Ведь в ней ничего нет, соответственно выбрать ничего нельзя.
Ну так и ткни им в пустую ячейку и посмотри на результат
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Регистрация: 10.10.2008
Сообщений: 26
|
Происходит создание текста поверх таблицы. В содержимое ячейки ничего не вписывается. Проверял на AutoCAD 2009x86, AutoCAD 2015x64.
Последний раз редактировалось Loolik, 25.04.2018 в 14:27. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Регистрация: 10.10.2008
Сообщений: 26
|
VVA, спасибо за помощь, работает отлично.
Осталась последняя хотелка, но затыкаюсь в одном месте. Программингом не владею, делаю свою команду по подобию, которая будет делать следующее:
Код:
Код:
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Loolik, Так не пойдет. Я обновил #205 еще раз. Добавил возможность передать параметр "Точка" (почитай коментарии в начале)
Соответственно для вставки в ячейку таблицы своя команда Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Регистрация: 10.10.2008
Сообщений: 26
|
Цитата:
Вдруг кому пригодится результат - запускать командой LEN2TX Код:
Последний раз редактировалось Loolik, 27.04.2018 в 11:07. Причина: Добавлена обработка МВыносок |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Когда писалась эта программа мультивыносок не было как класса. Обновил #205 Правки минимальные (добавить "MULTILEADER" в перечень)
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Loolik,
я-таки, в промежутках между, выстругал альтернативные к-рабли)... |
||||
|
||||
|
||||
|
||||
Loolik,
Happy husing!-) Хочу отметить, что проверок на заблокированность текущего слоя, слоёв объектов, выбранных для вставки суммы не производится, то есть вполне возможно аварийное завершение команды. Новый текст вставляется в кликнутую точку с в текущем слое с текущим стилем и высотой 5 единиц. Последний раз редактировалось koMon, 26.05.2018 в 15:55. |
||||
|
||||
Оснащение проходки горных выработок, ПОС, нормоконтроль, КР, АР Блог Регистрация: 30.01.2008
Ленинград
Сообщений: 18,695
|
На мой взгляд это был самый лучший вариант от Mike - lisp для суммирования длин линий отрезков полилиний и т.п.
Сколько же вы тут написали... Ключевые слова. Макрос, длина линий, длина отрезков, длина полилиний, Lsum , Mike - lisp , tyhig (мой ник только ключевое слово для поиска). Цитата:
;****************************************************************************** ; ; Lsum -функция определяет суммарные длинну и площадь набора линий и полилиний ; ;****************************************************************************** (defun C:lsum (/ cmdold nabor nl i j prima sum_line sum_pline asum_pline pt_list) (vl-load-com) (setq cmdold (getvar "cmdecho")) (setvar "cmdecho" 0) (princ "\n Выберите линии и 2D-полилинии:\n") (if (eq nil (setq nabor (ssget '((-4 . "<OR") (0 . "line") (0 . "lwpolyline") (-4 . "OR>") ) ) ) ) (progn (princ "***** Среди указаных объектов ни линий, ни 2D-полилиний НЕТ! *****\n")(textscr)(princ) ) (progn (setq nl (sslength nabor)) (setq i nl j 0 sum_line 0 sum_pline 0 asum_pline 0) (while (< 0 i) (setq i (1- i)) (setq prima (ssname nabor i)) (if (eq "LWPOLYLINE" (cdr (assoc 0 (entget prima)))) (progn (command "_AREA" "_o" (ssname nabor i)) (setq sum_pline (+ sum_pline (getvar "Perimeter"))) (if (or (eq 1 (cdr (assoc 70 (entget prima)))) (equal (assoc 10 (entget prima)) (assoc 10 (reverse (entget prima)))) ) (setq asum_pline (+ asum_pline (getvar "Area"))) ) ) (progn (setq sum_line (+ sum_line (vla-get-length (vlax-ename->vla-object prima)))) (setq pt_list (append pt_list (cdr (assoc 10 (entget prima))) (cdr (assoc 11 (entget prima))))) (setq j (1+ j)) ) ) ) (setvar "cmdecho" cmdold) (textscr) (princ " Выбрано: Линий - ")(princ j)(princ "; Полилиний - ")(princ (- nl j))(princ ".\n") (princ " Сумма длин линий - ")(princ sum_line)(princ "\n") (princ " Суммарный периметр полилиний - ")(princ sum_pline)(princ "\n") (princ " Сумма площадей \"замкнутых\" полилиний - ")(princ asum_pline)(princ "\n") (princ) ) ) ) (princ "\n Загружена утилита Lsum,\n") (princ " вычисляющая сумму длин линий и суммарный периметр полилиний,\n") (princ " для \"замкнутых\" полилиний вычисляется сумма площадей.\n") (princ " Для работы с утилитой введите в командной строке Lsum.\n") (textscr) (princ)
__________________
"Безвыходных ситуаций не бывает" барон Мюнхаузен Последний раз редактировалось Tyhig, 19.12.2022 в 17:14. |
|||