После долгого обсуждения в личной переписке написал для Виктoрия небольшой лисп для вставки в чертеж длин и площадей линий и площадей штриховок. Обрабатываются линии и штриховки текущего слоя.
Оффтоп (Move your mouse to the spoiler area to reveal the content) Хватит вам уже эту фразу из анекдота писать с ошибкой. Штаны не одевают, а надевают!
Оффтоп (Move your mouse to the spoiler area to reveal the content) Не "ошибка", а маркер, такой же как чорт. "По следу хлебных крошек..."
Так вот, Виктoрия попросила написать раздельные лиспы для длин линий и всего остального. Представляю лисп для подписи длины всевозможных линий, как то отрезки, линии, полилинии, сплайны, дуги, эллипсы, окружности и не знаю чего еще.
В личной переписке Alexandor1983 сообщил, что в Civil 3D 2019 ll.lsp не работает. Проверил в Civil 3D 2018, тоже не пашет. Пришел к выводу, что команда ll используется (зарезервирована) Civil. Поэтому переименовал лисп и команду запуска на lenlin и, о чудо, всё заработало.
Добрый день! Могу попросить чуть доработать, нужно чтобы указывал длину пролета между опорами ЛЭП в формате L= "число округленное до целого, но затем через точку должен стоять 0"
Здравствуйте! Есть ли lisp по выводы длин выделенных полилиний, в их серединах, c задаваемым отступом? p.s Примерный вид во вложении
В апреле делал лисп для Виктoрия, немного переделал. Отступ текста от линий - двойной размер высоты текста. Подписываются длины всех линий, отрезков, дуг, окружностей, эллипсов.
Хмм. А так: Код: (setq i (1+ i)) можно? Я то всегда пользую: Код: (setq i (+ i 1)) PS: А ещё предлагают (https://stackoverflow.com/questions/3736094/how-do-i-increment-or-decrement-a-number-in-common-lisp) заменить это хозяйство на: Код: (incf i)
1+ - увеличение на 1 1- - уменьшение на 1 incf и setf - это функции Common Lisp, я использую AutoLISP. Пример чертежа с вашей полилинией в студию, пожалуйста. Для примера приведу свой чертеж:
Ну да. Если обратите внимание, то выборка линейных элементов происходит с учетом текущего слоя: (setq lay (getvar "clayer") - переменной lay присваивается имя текущего слоя i -1 ss (ssget "_X" (list (cons 0 "*LINE,ARC,CIRCLE,ELLIPSE") (cons 8 lay))) - выбираются линейные элементы на текущем слое. Кстати, если на текущем слое имеется мультилиния, то будет происходить затык.
Подскажите пожалуйста, можно ли в программе прописать условие, при котором некоторые размеры округлялись бы до определенного числа?
Найдите строку (setq s (strcat "L" k "=" (rtos s 2 2) "m")) - вторая двойка это разрядность после запятой.