Подчеркивание перед командой необходимо, если это родная команда Автокада, и оно нужно для того, чтобы фирменную англоязычную команду понимали локализованные версии. Т.е., если версия русскоязычная или пр.
Может лезу не в свою тему, но это неверно. Подчёркивание перед командой указывает на то, что это не команда, а так-называемый alias (ссылка) на команду. Пример для русскоязычного автокад: - команда ОТРЕЗОК (это родная команда этого автокад) - команда _line (это alias на родную команду ОТРЕЗОК) На родную команду может быть неограниченное количество alias-ов, но при этом родная команда может быть только в единственном числе. Структура автокад позволяет работать со своими ВШИТЫМИ командами и позволяет прописывать любые алиасы на эти команды. Всё это можно сделать в специальных текстовых файлах, которые можно найти внутри установленного пакета автокад. Если LISP программа написана в оригинальной (английской) версии автокад, то часто она не будет работать в локализованной версии (и наоборот). Связано это с тем, что в английской версии прошиты англгийские команды, а в русской версии эти же самые команды НЕ РОДНЫЕ и прошиты в автокад как alias. Поэтому, если пишется программа LISP для любых локализаций автокад, то все команды надо прописывать в ней только ЛАТИНСКИЕ и всегда прописывать их как алиасы (со знаком подчёркивания перед командой). Если же вы будете писать команды в программе каким-либо другим способом, то получите работоспособную программу ТОЛЬКО в одной своей локализации автокад. Автокад допускает в оригинальной (Английской) версии дублирующие алиасы на команды, т.е.: - LINE (команда для черчения линии/отрезка) - допускает запуск этой команды через алиас _LINE Поэтому всегда В ЛЮБОЙ локализации работают алиасы на английские команды автокад (потому, что для английской версии они допустимы, а для других локализаций они прописаны в конфиге на основные локализованные команды). В неоригинальной версии автокад (НЕ английской), НЕ допускаются алиасы на родные команды. Пример: - родная команда в русском автокад ОТРЕЗОК - НЕ допускает ссылаться на себя алиасом _ОТРЕЗОК
О1 Спасибо за информацию. Правильно понял, что в данном случае можно p_h вызывать и с подчеркиванием, и без? И в русском, и в английском Автокаде? Т.к. это "родная команда".
Есть топосъемка с постоянной ошибкой по высоте прим.40см. Делаю обновление = испралвение. Нужна программка, котрая автоматичеки исправит высотные отметки (по клику или по выделению) на заданную величину. Есть что-нибудь подобное?
Используйте для отметок блок точки с атрибутом, в котором будет считываться Z этого блока. После опускания/подъема этих точек на 40 или т.п. см/м надписи высот сами изменятся. (Обычно после _regenall это еще и видно становится).
Необходимо знать, в топосъемке в качестве пикетов какой примитив Автокада выступает? Если примитив точка Автокада, то поднять\опустить можно выделив необходимые точки, дать команду Переместить нажать Ентер и в командной строке указать 0,0,0.40 нажать Ентер. Все выбранные примитивы переместятся только по высоте на указанную величину. А что бы пере подписать новые отметки текстом, можно лиспом. Код: (defun c:pl ( / H SSET lay osm npoint n ent pxy pz) (if(and (setq sset (ssget '((0 . "POINT")))) (setq h (getreal "\tУкажи высоту текста\t\t"))) (mapcar(function(lambda (x) (entmake(list '(0 . "text") (assoc 10 (entget x))(cons 40 h) (cons 1 (rtos (cadddr (assoc 10 (entget x))) 2 2)))))) (vl-remove-if (function listp) (mapcar (function cadr) (ssnamex sset))))) (princ))
<p> </p><p>Воспользовалась данным лиспом, что нужно изменить что бы подписывались отметки высот до двух знаков?</p>
Нужно, что бы точка имела отметку. А так она, точки, имеет отметку "ноль", вот программа и подписывает "ноль". А что должна была подписать? --- Сообщения объединены, 20 янв 2015, Оригинальное время сообщения: 20 янв 2015 --- А сколько подписывает? До двух, (по цитате) в данном случае и подписывает. Где-то я выкладывал здесь этот же код, что-бы до трёх подписывало. Там всего один параметр изменить надо, в коде, и будет подписывать до необходимого количества знаков. (defun c:pl ( / H SSET lay osm npoint n ent pxy pz) (if(and (setq sset (ssget '((0 . "POINT")))) (setq h (getreal "\tУкажи высоту текста\t\t"))) (mapcar(function(lambda (x) (entmake(list '(0 . "text") (assoc 10 (entget x))(cons 40 h) (cons 1 (rtos (cadddr (assoc 10 (entget x))) 2 2)))))) (vl-remove-if (function listp) (mapcar (function cadr) (ssnamex sset))))) (princ)) Вот красненькую циферку меняйте на необходимую, напр. 5, будет вам до пяти знаков после запятой, с нулями. Только, после изменения кода, не забывайте сохранится, и по новой загрузить лиспик.
Игорь, здравствуйте! Пришлось вернуться к Вашему лиспу по подписи отметок точек из свойств. Загружаю лисп---появляется меню быстрого выбора---точки выделяются (в командной строке сообщение гласит, что выбрано 22 объекта)---неизвестная команда (((((((((((( Помогите, пожалуйста, разобраться. Примечание. На автокаде установлен Гео_Тулс от Андрея.
Лучше вот, повыше твоего сообщения, лиспом пользуйся. Там выбор по другому реализован. pl называется.
Оффтоп (Move your mouse to the spoiler area to reveal the content) Да ладно. Не вгоняй меня в краску. Тут покруче меня форумчане пишут. Я так, только балуюсь. На Бованах надо было ко мне подходить, когда вместе работали.
Оффтоп (Move your mouse to the spoiler area to reveal the content) Игорь, к сожалению я не работал на Бованах (если имеется ввиду именно Бованенковское месторождение)...
Здравствуйте , а не подскажите лисп что бы делал подписи : отметок,имени и кода точки? Съемка с прибора SOKKIA CX-102 , Нужно повернуть чертеж "вид спереди" и при этом все подписи точек становятся плавной линией, а мне нужно знать их данные для дальнейшей обработки , подскажите как бы это лучше сделать при данных условиях.