Помогу бесплатно разработать любую программу на autolisp.

Тема в разделе "Autodesk", создана пользователем Германup, 3 фев 2014.

  1. MrBrown

    MrBrown Форумчанин

    sergtor, это тот самый макрос. Но он поворачивает все выбранные примитивы. А мне нужно, чтобы из выбранных поворачивались бы только несколько, в случайном порядке.
    Догадываюсь, что функцию случайного выбора следует вставить вместо строчки выбора каждого объекта:
    (foreach obj objSet

    но как это сделать - не знаю.
     
  2. MrBrown

    MrBrown Форумчанин

    Уже знаю. Сделал сам. Вопрос закрыт.
     
  3. Палыч

    Палыч Форумчанин

    Почему?

    Поделись::biggrin24.gif::
     
  4. MrBrown

    MrBrown Форумчанин

    С удовольствием делюсь, хотя на одном мною уважаемом форуме (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. А к этому макросу существует макрос изменения числовых отклонений в указанных пользователем пределах. Так что вместо целого рабочего дня - несколько секунд.
     
    Последнее редактирование: 31 окт 2016
    sDrawMan и Палыч нравится это.
  5. Написать функцию, выводящую большую букву «З» по типу шрифта Times New Roman. Точку вставки, высоту и угол наклона символа вводим в виде чисел или динамически. После все изображение должно быть на экране.
    вот пример на букве И
     

    Вложения:

  6. ivsem

    ivsem Форумчанин

    Напечатай в автокаде букву «З» с точкой вставки текста 0,0 и высотой 1 , обведи ее полиниией, выпиши координаты вершин полилинии.
    Далее напиши на лиспе функцию построения полилинии по координатам- одна строчка.
    Далее перенеси, поверни, масштаб - еще три строчки.
    З.jpg
     
  7. Qvinto

    Qvinto Форумчанин

    А в Експрессе можно это сделать Автоматом.
    Команда: txtexp
    Select text to be EXPLODED:
     
  8. evij

    evij Форумчанин

    Сделайте программу, чтобы можно было массово добавлять текст к существующему тексту на чертеже, или удалять, причем можно было выбрать какую по порядку букву удалить, или несколько
     
  9. Qvinto

    Qvinto Форумчанин

    evij, добавлять текст можно при помощи префикса\суффикса, в МенюГЕО, например. А вот удалять, букву там, или часть слова, попробуйте при помощи МенюГЕО

    upload_2017-1-2_9-24-7.png
     

    Вложения:

  10. Daulet Alimbetov

    Daulet Alimbetov Форумчанин

    Приветствую. Как можно автоматом создать координатную сетку (прямоугольные коорд. или географические коорд.) для планшета разных масштабов ?Или имеется ли такая программа у кого то, есть ли варианты поделитесь?
    PS. команда MAPLAYOUTREFERENCESYSTEM оно мне не нравится.
     
  11. sergtor

    sergtor Форумчанин

    Последнее редактирование модератором: 3 янв 2017
  12. АлексЮстасу

    АлексЮстасу Форумчанин

  13. BearDyugin

    BearDyugin Модератор Форумчанин

    попробуй ещё раз.
     
  14. barabaha

    barabaha Форумчанин

    Приветствую. Может ктонить подскажет есть ли макрос журнала нивелировки по 3d полилинии, или чтонить подобное? 150 колодцев заполнять надо....
     
  15. Здравствуйте друзья- коллеги!

    Помогите написать(дописать) LISP. Есть Lisp написанный VVA с dwg.
    Программа выделяет объекты внутри контура. Все отлично. Но у меня этих контуров много.

    Нужно выделить все контуры нажать кнопку и должны выбраться объекты внутри этих контуров.

    Помогите плиз . Или рыбу какую-нибудь киньте для написания цикла и создания набора выбора в конце.

    Заранее очень благодарен всем откликнувшимся
     

    Вложения:

    • SCWP_SSWP.lsp
      Размер файла:
      7,2 КБ
      Просмотров:
      10
  16. Alexandr-GR

    Alexandr-GR Форумчанин

    что-то вроде
    Код:
    (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го, а то возможны проблемы

    а можно обратиться и к автору программы
     
  17. Так если я закомментирую пользовательский ввод , то как мне выбирать контура?
     
  18. Alexandr-GR

    Alexandr-GR Форумчанин

    я же написал
    т.е. начало основного кода будет
    (defun SelectContour (opt en / локальные переменные)
    там где setq en запрос контура закомментировать
    контура будут подставляться в SelectContour из того кода, который я привел выше

    надо рыбу или готовое решение?
     
  19. АлексЮстасу

    АлексЮстасу Форумчанин

    Для какого Автокада?
     
  20. То как вы отвечаете меня очень даже устраивает... У самого не получилось сделать



    Для 2015
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление