1. ВНИМАНИЕ! В течении пары дней +- будет переезд форума на более защищённый сервер. Возможны периодические перебои в работе.

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

Discussion in 'Autodesk' started by Германup, Feb 3, 2014.

  1. MrBrown

    MrBrown Форумчанин

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

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

    MrBrown Форумчанин

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

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

    Почему?

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

    MrBrown Форумчанин

    С удовольствием делюсь, хотя на одном мною уважаемом форуме (dwg.ru) мне погрозили пальчиком, типа: "Ай-яй-яй, негоже писать "липу" в исполнительной документации".
    Прекрасно понимаю тех инженеров, которые в своей работе сталкиваются с действительно наглой геодезической "липой", которую трудно, а подчас поздно, исправлять на практике всякими согласованиями, дополнительными конструктивными извращениями, которые влекут за собой вагон дополнительной документации, новых чертежей и т.д., не говоря уже о дополнительной почтовой переписке. Однако считаю, если геодезическая съемка дала только нормативные отклонения, да вдобавок (и это главное) заказчик, контролирующий съемку и убедившийся в её правильности, намекнул не заморачиваться с точным рисованием направления двухсот-трехсот стрелок и числовых значений отклонений, почему я должен страдать, редактируя эти значения весь рабочий день?
    Лирическое отступление закончил :))
    Вот макрос. Работает!
    Code:
    ;;; Макрос "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. А к этому макросу существует макрос изменения числовых отклонений в указанных пользователем пределах. Так что вместо целого рабочего дня - несколько секунд.
     
    Last edited: Oct 31, 2016
    sDrawMan and Палыч like this.
  5. Написать функцию, выводящую большую букву «З» по типу шрифта Times New Roman. Точку вставки, высоту и угол наклона символа вводим в виде чисел или динамически. После все изображение должно быть на экране.
    вот пример на букве И
     

    Attached Files:

  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
     

    Attached Files:

  10. Daulet Alimbetov

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

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

    sergtor Форумчанин

  12. АлексЮстасу

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

  13. BearDyugin

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

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

    barabaha Форумчанин

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

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

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

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

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

    Attached Files:

  16. Alexandr-GR

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

    что-то вроде
    Code:
    (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. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice