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

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

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

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

    Да, наверное нужно для каждого вхождения блока находить его внешний контур.
     
  2. trir

    trir Форумчанин

    зачем?
     
    FOXXX591 нравится это.
  3. Павел55214

    Павел55214 Форумчанин

    ИМХО проще разбить блоки и перенести примитивы на отдельный слой, если эти примитивы - замкнутые многоугольники - вот вам и решение, через бВыбор можно отсеять не нужное.
     
  4. 1958

    1958 Форумчанин

    А если поиграться с боксами?
    Что-то типа этого:
     

    Вложения:

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

    Павел55214 Форумчанин

    Если я правильно понял - бокс это внешний контур блока (всегда прямоугольник). Если блок вытянутый и его повернуть , то бокс может поменять площадь (увеличиться или уменьшиться до 2 раз)
     
  6. 1958

    1958 Форумчанин

    Это правда. Но поиграться можно.
     
  7. АлексЮстасу

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

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

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

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

    [удалил - повтор]
     
  9. 1958

    1958 Форумчанин

    Называйте как хотите. Идея в том, что определив площади габаритов боксов, создать список типа (площадь1 имя1, площадь2 имя2...). А уж потом на основе этого списка создавать набор, в который включить примитивы (ваши блоки) с нужными параметрами (площадями). Ну, а выделить набор уже не составит труда. Площади габаритов (контейнеров) блоков отличаются от "чистой" площади самих блоков, но более-менее нужный отбор можно произвести.
    Есть программки построения внешнего контора. Т.е. > отрисовать контуры > сделать выборку > удалить контуры. Но мне кажется, что такой путь сложнее и займет больше времени, а результат примерно тот же.
     
  10. Нужен ЛИСП который бы упрощал оффсетную рутину а именно делал бы следующее:
    1) выбрать несколько полилиний которые нужно сместить (отподобить);
    2) задать расстояние смещения;
    3) задать направление смещения;
    4) удалить исходные полилинии оставив только смещенные.
    Заранее огромное спасибо!
     
  11. Misha_E

    Misha_E Форумчанин

    EXOFFSET (Express Tool)
    Help (раскрыть)

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

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

    trir Форумчанин

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

    mihamster Форумчанин

    Код:
    (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 и значением в тексте и добавляет к координате У "точки отсчета"
    потом по этим координатам рисует линию...
    нервы кончились...
    какого черта Аппли рисует эту линию по Х правильно, а по У от балды вообще???!
    причем если сделать максимальное отдаление чертежа и эту же функцию запустить, рисуется все правильно! что за бред?
     
  16. ivsem

    ivsem Форумчанин

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

    Вложения:

  17. у меня не работает данный ЛИСП.
    Пишет следующее:
    "Команда: 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)
    
     
  18. gorelikoff13

    gorelikoff13 Форумчанин

    Добрый день. Подскажите пожалуйста, можно ли сделать лисп на подобие этого, но что б вставлял мтекст нужного мне стиля и размера?
     

    Вложения:

  19. 777sasa

    777sasa Форумчанин

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