sergtor, это тот самый макрос. Но он поворачивает все выбранные примитивы. А мне нужно, чтобы из выбранных поворачивались бы только несколько, в случайном порядке. Догадываюсь, что функцию случайного выбора следует вставить вместо строчки выбора каждого объекта: (foreach obj objSet но как это сделать - не знаю.
С удовольствием делюсь, хотя на одном мною уважаемом форуме (dwg.ru) мне погрозили пальчиком, типа: "Ай-яй-яй, негоже писать "липу" в исполнительной документации". Прекрасно понимаю тех инженеров, которые в своей работе сталкиваются с действительно наглой геодезической "липой", которую трудно, а подчас поздно, исправлять на практике всякими согласованиями, дополнительными конструктивными извращениями, которые влекут за собой вагон дополнительной документации, новых чертежей и т.д., не говоря уже о дополнительной почтовой переписке. Однако считаю, если геодезическая съемка дала только нормативные отклонения, да вдобавок (и это главное) заказчик, контролирующий съемку и убедившийся в её правильности, намекнул не заморачиваться с точным рисованием направления двухсот-трехсот стрелок и числовых значений отклонений, почему я должен страдать, редактируя эти значения весь рабочий день? Лирическое отступление закончил :)) Вот макрос. Работает! Код: ;;; Макрос "RRR" выбирает случайным образом блоки и поворачивает их на 180 градусов вокруг базовой точки. ;;; Используется при простановке отклонений свай, бетона, анкеров. ;;; Первоначально из стрелки сделать блок с базовой точкой по центру стрелки. Лучше всего для этого блока создать отдельный слой, например "ARROW". Так будет проще выбирать их. ;;; Раскидать блок по нужным местам. ;;; Быстрым выбором выделить все блоки стрелок и запустить макрос. (defun rng () ;;; Генерирует псевдослучайным способом число 0 или 180 (if (not seed) (setq seed (getvar "DATE")) );end if (setq modulus 4294967296.0 ; 65536 multiplier 1664525 ; 25173 increment 1 ; 13849 seed (rem (+ (* multiplier seed) increment) modulus) random (rtos (/ seed modulus) 2 0) random (* (atof random) 180.) );end setq (princ(setq rand (fix random))) ) ;;Основной макрос (defun c:RRR () (setq sel (ssget '((0 . "INSERT"))));set selzione blocchi (setq n (sslength sel)) (setq INDEX 0) (repeat n (setq ent (ssname sel INDEX)) (SETQ PT1 (cdr (assoc 10 (entget ent)))) (rng) (setq Ang rand) (command "_rotate" ent "" pt1 ang) (setq n (1+ n)) (setq INDEX (1+ INDEX)) ) ) За основу взят макрос RRB, поворачивающий все выбранные блоки на случайный угол. И переделан "под себя". И пусть Мастера от AutoLISP критикуют за криворукость. Отвечу таким прекрасной фразой: "Можешь лучше - сделай". Потому как, включив свою нравственность ("Ай-яй-яй, низ-з-з-я-я-я-я!"), не искоренишь желание работника облегчить свой труд. p.s. А к этому макросу существует макрос изменения числовых отклонений в указанных пользователем пределах. Так что вместо целого рабочего дня - несколько секунд.
Написать функцию, выводящую большую букву «З» по типу шрифта Times New Roman. Точку вставки, высоту и угол наклона символа вводим в виде чисел или динамически. После все изображение должно быть на экране. вот пример на букве И
Напечатай в автокаде букву «З» с точкой вставки текста 0,0 и высотой 1 , обведи ее полиниией, выпиши координаты вершин полилинии. Далее напиши на лиспе функцию построения полилинии по координатам- одна строчка. Далее перенеси, поверни, масштаб - еще три строчки.
Сделайте программу, чтобы можно было массово добавлять текст к существующему тексту на чертеже, или удалять, причем можно было выбрать какую по порядку букву удалить, или несколько
evij, добавлять текст можно при помощи префикса\суффикса, в МенюГЕО, например. А вот удалять, букву там, или часть слова, попробуйте при помощи МенюГЕО
Приветствую. Как можно автоматом создать координатную сетку (прямоугольные коорд. или географические коорд.) для планшета разных масштабов ?Или имеется ли такая программа у кого то, есть ли варианты поделитесь? PS. команда MAPLAYOUTREFERENCESYSTEM оно мне не нравится.
Daulet Alimbetov,http://geodesist.ru/forum/threads/kak-sozdat-avtomaticheski-kresty-setki-v-autocad.15404/
Приветствую. Может ктонить подскажет есть ли макрос журнала нивелировки по 3d полилинии, или чтонить подобное? 150 колодцев заполнять надо....
Здравствуйте друзья- коллеги! Помогите написать(дописать) LISP. Есть Lisp написанный VVA с dwg. Программа выделяет объекты внутри контура. Все отлично. Но у меня этих контуров много. Нужно выделить все контуры нажать кнопку и должны выбраться объекты внутри этих контуров. Помогите плиз . Или рыбу какую-нибудь киньте для написания цикла и создания набора выбора в конце. Заранее очень благодарен всем откликнувшимся
что-то вроде Код: (defun test (/ ob sel ssget->ename) (defun ssget->ename (s) (if (and s (= (type s) 'PICKSET)) (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))) ) ) (or (setq sel (ssget "_I")) (setq sel (ssget))) (setq ob (ssadd)) (mapcar (function (lambda (k / x) (SelectContour "_WP" k) (if (setq x (ssget "_I")) (mapcar (function (lambda (b) (ssadd b ob))) (ssget->ename x) ) ) ) ) (ssget->ename sel) ) (SSSETFIRST ob ob) (princ) ) 1. переменную en в основном коде SelectContour необходимо сделать аргументом и закомментировать(удалить) польз.ввод 2. в основном коде заменить command на command-s, если акад моложе 14го, а то возможны проблемы а можно обратиться и к автору программы
я же написал т.е. начало основного кода будет (defun SelectContour (opt en / локальные переменные) там где setq en запрос контура закомментировать контура будут подставляться в SelectContour из того кода, который я привел выше надо рыбу или готовое решение?