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

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

Войти

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

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

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

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.972
    Симпатии:
    694
    Адрес:
    Маськва
    Да, наверное нужно для каждого вхождения блока находить его внешний контур.
     
    #1101
  2. trir

    Форумчанин

    Регистрация:
    25 ноя 2014
    Сообщения:
    3.253
    Симпатии:
    931
    Адрес:
    gnomtrir@mail.ru
    зачем?
     
    #1102
    FOXXX591 нравится это.
  3. Павел55214

    Форумчанин

    Регистрация:
    19 ноя 2013
    Сообщения:
    219
    Симпатии:
    396
    Адрес:
    г. Омск
    ИМХО проще разбить блоки и перенести примитивы на отдельный слой, если эти примитивы - замкнутые многоугольники - вот вам и решение, через бВыбор можно отсеять не нужное.
     
    #1103
  4. 1958

    Форумчанин

    Регистрация:
    21 авг 2013
    Сообщения:
    662
    Симпатии:
    725
    Адрес:
    Ташкент, город пыльный
    А если поиграться с боксами?
    Что-то типа этого:
     

    Вложения:

    • box.LSP
      Размер файла:
      1 КБ
      Просмотров:
      4
    #1104
  5. Павел55214

    Форумчанин

    Регистрация:
    19 ноя 2013
    Сообщения:
    219
    Симпатии:
    396
    Адрес:
    г. Омск
    Если я правильно понял - бокс это внешний контур блока (всегда прямоугольник). Если блок вытянутый и его повернуть , то бокс может поменять площадь (увеличиться или уменьшиться до 2 раз)
     
    #1105
  6. 1958

    Форумчанин

    Регистрация:
    21 авг 2013
    Сообщения:
    662
    Симпатии:
    725
    Адрес:
    Ташкент, город пыльный
    Это правда. Но поиграться можно.
     
    #1106
  7. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.972
    Симпатии:
    694
    Адрес:
    Маськва
    Попробовал - боксы получились больше видимого габарита блока. В определении блоков есть скрытые атрибуты, но они мелкие, не увеличивают площадь. Вроде бы ничто другое за видимый контур этих блоков не высовывается.
    И хорошо бы команду-название lisp сразу сделать не "box", а другое - есть такая команда AutoCAD для 3D.

    Идея построить внешние контуры, и ими оперировать была и у меня. Но это другая задача, не требующая и решений - есть в Быстром выборе.
     
    #1107
  8. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.972
    Симпатии:
    694
    Адрес:
    Маськва
    [удалил - повтор]
     
    #1108
  9. 1958

    Форумчанин

    Регистрация:
    21 авг 2013
    Сообщения:
    662
    Симпатии:
    725
    Адрес:
    Ташкент, город пыльный
    Называйте как хотите. Идея в том, что определив площади габаритов боксов, создать список типа (площадь1 имя1, площадь2 имя2...). А уж потом на основе этого списка создавать набор, в который включить примитивы (ваши блоки) с нужными параметрами (площадями). Ну, а выделить набор уже не составит труда. Площади габаритов (контейнеров) блоков отличаются от "чистой" площади самих блоков, но более-менее нужный отбор можно произвести.
    Есть программки построения внешнего контора. Т.е. > отрисовать контуры > сделать выборку > удалить контуры. Но мне кажется, что такой путь сложнее и займет больше времени, а результат примерно тот же.
     
    #1109
  10. belankostya1995

    Регистрация:
    31 авг 2018
    Сообщения:
    8
    Симпатии:
    0
    Нужен ЛИСП который бы упрощал оффсетную рутину а именно делал бы следующее:
    1) выбрать несколько полилиний которые нужно сместить (отподобить);
    2) задать расстояние смещения;
    3) задать направление смещения;
    4) удалить исходные полилинии оставив только смещенные.
    Заранее огромное спасибо!
     
    #1110
  11. Misha_E

    Форумчанин

    Регистрация:
    16 мар 2017
    Сообщения:
    89
    Симпатии:
    36
    Адрес:
    Витебск
    EXOFFSET (Express Tool)
    Help (раскрыть)

    Эта расширенная версия команды ПОДОБИЕ предоставляет несколько преимуществ по сравнению со стандартной командой, в том числе возможность управления слоями, возможность отмены и параметр "Несколько".
    Параметры

    DistanceСмещение выбранного объекта на заданное расстояние
    ThroughСмещение выбранного объекта по указанной точке
    LayerЗадание слоя для новых объектов (либо текущий слой, либо слой исходного объекта)
    Gaptype (automatically applied)Использование текущей настройка переменной OFFSETGAPTYPE для создания углов с удлинением, сопряжением или фаской для заполнения потенциальных зазоров в смещенных полилиниях.
    MultipleСоздание нескольких смещений.
    Совет: Если во время выбора стороны для смещения удерживать клавишу SHIFT, можно выбрать несколько объектов. При нажатии клавиши CTRL во время выбора стороны для смещения исходный объект стирается.
     
    #1111
    chehoff и BearDyugin нравится это.
  12. Shramn

    Регистрация:
    14 апр 2014
    Сообщения:
    3
    Симпатии:
    0
    Нужен ЛИСП который будет автоматически менять некорректные типы полилинии на заданные пользователем (автоматически без вмешательства пользователя отыскивать в файле некорректный тип линии и заменять его отправляя в нужный слой).
    Например программа отыскивает все полилинии с типом "G_BUILDING_LINE" и заменяет на тип "штриховаяX2" перенося их на нулевой слой.
     
    #1112
  13. trir

    Форумчанин

    Регистрация:
    25 ноя 2014
    Сообщения:
    3.253
    Симпатии:
    931
    Адрес:
    gnomtrir@mail.ru
  14. Shramn

    Регистрация:
    14 апр 2014
    Сообщения:
    3
    Симпатии:
    0
    #1114
  15. belankostya1995

    Регистрация:
    31 авг 2018
    Сообщения:
    8
    Симпатии:
    0
    Превеличайше благодарю! Я даже не знал о существовании продвинутого офсета.
    --- Сообщения объединены, 20 окт 2020, Оригинальное время сообщения: 20 окт 2020 ---
    Нужен ЛИСП который бы разрезал штриховку по полилинии на 2 части.
    (Знаю на просторах всеяИнтернета есть где то подобный ЛИСП, но он не работает в русской версии AutoCAD. Попытки заменить команды ни к чему хорошему не приводят так как я в написании и понимании кодов ЛИСПов полный ноль)
     
    #1115
  16. mihamster

    Форумчанин

    Регистрация:
    24 июл 2013
    Сообщения:
    806
    Симпатии:
    217
    Код:
    (defun c:prof_line ( / );point_X_0 data_set spisok_line)
    (setq point_X_0 (getpoint "point heigt start: "))
    (initget 1)
    ;(setq X_0_eql (getreal "value : "))
    (setq data_set (ssget "_:E" '((0 . "*text,*DIMENSION"))))
    (setq i 0)
    (while (< i (sslength data_set))
    (setq domer_h  (- (atof (cdr (assoc 1 (entget (ssname data_set i))))) 190))
    (setq i_coord (strcat (rtos (nth 1 (assoc 11 (entget (ssname data_set i)))) 2 3) "," (rtos (+ (nth 1 point_X_0) domer_h) 2 3)))
    (if (= i 0)
    (setq spisok_line (list "_.line" i_coord))
    (setq spisok_line (append spisok_line (list i_coord)))
    )
    (setq i (1+ i))
    )
    (apply 'command spisok_line) ;"_.line" "x1,y1" "x2,y2" "xn,yn"
    )
    есть точка отсчета "190" по У
    есть текстовые объекты с цифирками (189, 187, 191 и т.д.), расположены вдоль Х
    лисп берет координату Х из 11й-пары текста, находит разницу между 190 и значением в тексте и добавляет к координате У "точки отсчета"
    потом по этим координатам рисует линию...
    нервы кончились...
    какого черта Аппли рисует эту линию по Х правильно, а по У от балды вообще???!
    причем если сделать максимальное отдаление чертежа и эту же функцию запустить, рисуется все правильно! что за бред?
     
    #1116
  17. ivsem

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    Лисп с просторов интернета, немного подшаманил, что бы работал в руссифицированных версиях автокада
    На картинке штриховку пересекают три линии: полилиния, отрезок и дуга.
    Запускаем программу, выбираем линии, выбираем штриховку и штриховка делится на на четыре части.
    Но будьте внимательны, бо иногда вместо разделения часть штриховки удалялась!
    1_2.jpg
    Ссылка на оригинал https://lispbox.wordpress.com/2015/02/01/hatch-split/
     

    Вложения:

    #1117
  18. belankostya1995

    Регистрация:
    31 авг 2018
    Сообщения:
    8
    Симпатии:
    0
    у меня не работает данный ЛИСП.
    Пишет следующее:
    "Команда: HSP
    Select the lines to split hatch:
    Выберите объекты: найдено: 1
    Выберите объекты:
    Select the hatch to split:
    Выберите объекты: ; ошибка: Настройка переменной AutoCAD отвергнута: HPBOUND nil
    Команда:"


    Заработала как только я поменял следующую строку
    (if (setq ss1 (ssget ":L" '((0 . "HATCH"))))

    Код:
    (vl-load-com)
    (defun c:hsp(/ c e hpb itm olde p pts selp ss ss1 ss2 ss3)
    (prompt "\nSelect the lines to split hatch: ")
    (if (setq ss (ssget ":L" '((0 . "LINE,LWPOLYLINE,ARC"))))
    (progn
    (prompt "\nSelect the hatch to split: ")
    ;;;(if (setq ss1 (ssget ":S:L" '((0 . "HATCH"))))
    (if (setq ss1 (ssget ":L" '((0 . "HATCH"))))
    (progn
    (command "_.undo" "_BE" "_.ucs" "_W" "_.plan" "")
    (setq olde (getvar 'cmdecho)
    hpb (getvar 'hpbound)
    selp (getvar 'selectionpreview)
    itm -1
    fuzz 0.25)
    (command "_.-hatchedit" (ssname ss1 0) "_b" "_r" "_y"
    "_.extrude" "_L" "" "5")
    (while
    (setq e (ssname ss (setq itm (1+ itm))))
    (command "_.imprint" "_L" e "_n" "")
    (setq c (vlax-ename->vla-object e)
    p (vlax-curve-getpointatdist
    c
    (/ (vlax-curve-getdistatparam c (vlax-curve-getendparam c))
    2.
    )
    )
    pts (cons p pts)
    p (polar p (* pi 0.25) fuzz)
    pts (cons p pts)
    p (polar p (* pi 1.25) fuzz)
    pts (cons p pts)
    )
    );; while
     
    (command "._explode" "_L" "")
    (setq ss2 (ssget "_P")
    ss3 (ssget "_F" pts '((0 . "REGION"))))
    (command "._erase" ss2 "_R" ss3 "")
    (setq itm -1)
    (while
    (setq e (ssname ss3 (setq itm (1+ itm))))
    (command "_.hatch" "solid" e ""
    "_.matchprop" ss1 "_L" ""
    "_.draworder" "_L" "" "_B")
    );; while
    (command "_.erase" ss1 ss3 "")
    );; progn
    );; if
    );; progn
    );; if
    (setvar 'hpbound hpb)
    (setvar 'selectionpreview selp)
    (setvar 'cmdecho olde)
    (command "_.ucs" "_P" "_.zoom" "_P" "_.undo" "_E")
    (princ)
    );; test
    (c:hsp)
    
     
    #1118
  19. gorelikoff13

    Форумчанин

    Регистрация:
    16 янв 2017
    Сообщения:
    36
    Симпатии:
    0
    Добрый день. Подскажите пожалуйста, можно ли сделать лисп на подобие этого, но что б вставлял мтекст нужного мне стиля и размера?
     

    Вложения:

    #1119
  20. 777sasa

    Форумчанин

    Регистрация:
    2 фев 2011
    Сообщения:
    224
    Симпатии:
    51
    Проверка на прямолинейность. Речь идет о опорах ЛЭП. Имеется некая полилиния, в ее вершинах внутренние углы близки к 180 градусов. Необходимо
    1) Задача минимум - свести ту полилинию к некой виртуальной средневзешенной что ли линии\отрезку, координыты концов
    2) Максимум Найти отклонения вершин полилинии от вышеуказанного отрезка.
    https://studfile.net/preview/3557308/page:59/ что то вроде такого, но для одного рельса.
    Может просто алгоритм, к сожалению на лиспе не пишу (в другой проге попытаюсь написать), но тут метод наименьших квадратов, алгоритм для оочень тупых, максимально просто желательно:(
     
    #1120

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

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