Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

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

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

  1. MrBrown

    Форумчанин

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

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

    Форумчанин

    Регистрация:
    31 июл 2013
    Сообщения:
    35
    Симпатии:
    9
    Уже знаю. Сделал сам. Вопрос закрыт.
     
    #462
  3. Палыч

    Форумчанин

    Регистрация:
    16 июл 2007
    Сообщения:
    2.332
    Симпатии:
    176
    Адрес:
    Беларусь
    Почему?

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

    Форумчанин

    Регистрация:
    31 июл 2013
    Сообщения:
    35
    Симпатии:
    9
    С удовольствием делюсь, хотя на одном мною уважаемом форуме (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. А к этому макросу существует макрос изменения числовых отклонений в указанных пользователем пределах. Так что вместо целого рабочего дня - несколько секунд.
     
    #464
    Последнее редактирование: 31 окт 2016
    sDrawMan и Палыч нравится это.
  5. _theSky112

    Регистрация:
    22 дек 2016
    Сообщения:
    1
    Симпатии:
    0
    Написать функцию, выводящую большую букву «З» по типу шрифта Times New Roman. Точку вставки, высоту и угол наклона символа вводим в виде чисел или динамически. После все изображение должно быть на экране.
    вот пример на букве И
     

    Вложения:

    #465
  6. ivsem

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    Напечатай в автокаде букву «З» с точкой вставки текста 0,0 и высотой 1 , обведи ее полиниией, выпиши координаты вершин полилинии.
    Далее напиши на лиспе функцию построения полилинии по координатам- одна строчка.
    Далее перенеси, поверни, масштаб - еще три строчки.
    З.jpg
     
    #466
  7. Qvinto

    Форумчанин

    Регистрация:
    10 дек 2008
    Сообщения:
    5.681
    Симпатии:
    4.223
    Адрес:
    Украина, г.Калуш
    А в Експрессе можно это сделать Автоматом.
    Команда: txtexp
    Select text to be EXPLODED:
     
    #467
  8. evij

    Форумчанин

    Регистрация:
    7 авг 2015
    Сообщения:
    26
    Симпатии:
    1
    Сделайте программу, чтобы можно было массово добавлять текст к существующему тексту на чертеже, или удалять, причем можно было выбрать какую по порядку букву удалить, или несколько
     
    #468
  9. Qvinto

    Форумчанин

    Регистрация:
    10 дек 2008
    Сообщения:
    5.681
    Симпатии:
    4.223
    Адрес:
    Украина, г.Калуш
    evij, добавлять текст можно при помощи префикса\суффикса, в МенюГЕО, например. А вот удалять, букву там, или часть слова, попробуйте при помощи МенюГЕО

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

    Вложения:

    #469
  10. Daulet Alimbetov

    Форумчанин

    Регистрация:
    7 апр 2015
    Сообщения:
    61
    Симпатии:
    4
    Адрес:
    Казахстан.Тараз
    Приветствую. Как можно автоматом создать координатную сетку (прямоугольные коорд. или географические коорд.) для планшета разных масштабов ?Или имеется ли такая программа у кого то, есть ли варианты поделитесь?
    PS. команда MAPLAYOUTREFERENCESYSTEM оно мне не нравится.
     
    #470
  11. sergtor

    Форумчанин

    Регистрация:
    23 сен 2012
    Сообщения:
    1.715
    Симпатии:
    600
    Адрес:
    Ухта
    #471
    Последнее редактирование модератором: 3 янв 2017
  12. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.869
    Симпатии:
    668
    Адрес:
    Маськва
    #472
  13. BearDyugin

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

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.748
    Симпатии:
    2.504
    Адрес:
    Сибирь
    попробуй ещё раз.
     
    #473
  14. barabaha

    Форумчанин

    Регистрация:
    15 мар 2010
    Сообщения:
    133
    Симпатии:
    82
    Адрес:
    Санкт-Петербург
    Приветствую. Может ктонить подскажет есть ли макрос журнала нивелировки по 3d полилинии, или чтонить подобное? 150 колодцев заполнять надо....
     
    #474
  15. mixtaper

    Регистрация:
    15 фев 2017
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте друзья- коллеги!

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

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

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

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

    Вложения:

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

    Форумчанин

    Регистрация:
    9 июн 2011
    Сообщения:
    1.192
    Симпатии:
    945
    Адрес:
    Новосибирск
    что-то вроде
    Код:
    (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го, а то возможны проблемы

    а можно обратиться и к автору программы
     
    #476
  17. mixtaper

    Регистрация:
    15 фев 2017
    Сообщения:
    3
    Симпатии:
    0
    Так если я закомментирую пользовательский ввод , то как мне выбирать контура?
     
    #477
  18. Alexandr-GR

    Форумчанин

    Регистрация:
    9 июн 2011
    Сообщения:
    1.192
    Симпатии:
    945
    Адрес:
    Новосибирск
    я же написал
    т.е. начало основного кода будет
    (defun SelectContour (opt en / локальные переменные)
    там где setq en запрос контура закомментировать
    контура будут подставляться в SelectContour из того кода, который я привел выше

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

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.869
    Симпатии:
    668
    Адрес:
    Маськва
    Для какого Автокада?
     
    #479
  20. mixtaper

    Регистрация:
    15 фев 2017
    Сообщения:
    3
    Симпатии:
    0
    То как вы отвечаете меня очень даже устраивает... У самого не получилось сделать



    Для 2015
     
    #480

Поделиться этой страницей

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