Проникающая гидроизоляция бетона
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как разделить группу отрезков на равные части?

Как разделить группу отрезков на равные части?

Ответ
Поиск в этой теме
Непрочитано 11.05.2019, 22:21 #1
Как разделить группу отрезков на равные части?
dima_kuzminki
 
Регистрация: 12.03.2017
Сообщений: 82

Есть большая группа отрезков (или полилиний ) , более сотни, равной длины . Нужно С одного конца выделить участок в несколько метров (1/30 общей длины).
Как это сделать?
В конце концов устроило бы разбиение всех отрезков на равные части командой _divide но эта команда работает похоже только с одним объектом?
Объединение отрезков в группу не помогло,с группой команда не работает
Просмотров: 1610
 
Непрочитано 12.05.2019, 10:08
#2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,066


ИМХО, вполне очевидно, что готового решения нет и нужно писать программу, если задача разовая, то нужно ли это, НО...
но, если перевернуть задачу с ног на голову, то обычный пользователь может справится с задачей, без программирования, простым скриптом.
Примерно, как то так:
- взрываем/приводим все полилинии к простым линиям
- извлекаем данные (_DATAEXTRACTION) о начале и конце каждой линии (вершины полилинии увы не извлекаются таким способом)
- В Excel для каждой линии считаем координаты вершины отстоящей на расстоянии 1/30 длины линии от начала,тут посоветую вспомнить про вектора и не мучатся с теоремой Пифагора. Уточню, вектора проходят в 8-9 классах школы, так что это по силам каждому.
- Там же, в Excel, формируем scr файл, с помощью которого не делим одну линию на две части, а создаем две новые линии
- Запускаем scr файл в автокаде и получаем то, что хотели.

На форуме и вообще в интернете много информации как писать scr файлы, как работать в excel, так что все в Ваших руках.
Собственно все.
__________________
_бложиг
Boxa на форуме  
 
Автор темы   Непрочитано 12.05.2019, 10:45
#3
dima_kuzminki


 
Регистрация: 12.03.2017
Сообщений: 82


Спасибо. Скрипт-файл ранее не создавал. Теоретически все понятно. Но неужели в пакетах утилит известных нет утилиты для деления для группы обьектов?
dima_kuzminki вне форума  
 
Непрочитано 12.05.2019, 12:13
#4
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,066


Цитата:
Сообщение от dima_kuzminki Посмотреть сообщение
Но неужели в пакетах утилит известных нет утилиты для деления для группы обьектов?
Задача достаточно специфическая. Вы конечно можете еще несколько дней искать или ждать, что Вам дадут ссылку на что-то подобное, или кто нибудь из местных самаритян напишет эту программу специально для Вас или в течении пары часов с нуля разобраться, как решать подобные задачи самому и поднять свой уровень владения автокадом на новый уровень.
Еще раз, все в Ваших руках.
__________________
_бложиг
Boxa на форуме  
 
Непрочитано 12.05.2019, 12:41
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,996


А для начала надо определиться с условиями:

Цитата:
Сообщение от dima_kuzminki Посмотреть сообщение
Нужно С одного конца выделить участок в несколько метров (1/30 общей длины).
Это команда _Measure
Цитата:
Сообщение от dima_kuzminki Посмотреть сообщение
В конце концов устроило бы разбиение всех отрезков на равные части командой _divide
а это действительно команда _Divide.

Но это две разных команды.
Сергей812 вне форума  
 
Непрочитано 12.05.2019, 13:47
#6
axoxc


 
Регистрация: 11.04.2019
Сообщений: 18


Может вас команда lengthen спасет? Скопировать все линии, первую часть сделать 29\30 длины, а вторую 1\30 длины, потом совместить.
axoxc вне форума  
 
Автор темы   Непрочитано 12.05.2019, 13:50
#7
dima_kuzminki


 
Регистрация: 12.03.2017
Сообщений: 82


А lengthen работает с группой отрезков? Проблема именно в этом. Или тут только макрос поможет?
dima_kuzminki вне форума  
 
Непрочитано 12.05.2019, 14:33
#8
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,996


Цитата:
Сообщение от dima_kuzminki Посмотреть сообщение
Проблема именно в этом. Или тут только макрос поможет?
Получаете из выделенных примитивов все отрезки:
Код:
[Выделить все]
 (ssget "_I" '((0 . "LINE"))))
а далее каждый примитив из полученного набора подставляете в нужную команду через ту же vl-cmdf. В инете найдете достаточно примеров кода - если хотите действительно решить задачу.
Сергей812 вне форума  
 
Непрочитано 12.05.2019, 18:08
#9
Fogel

люблю мастерить
 
Регистрация: 21.01.2005
Челябинск
Сообщений: 7,601


А ещё есть команда масштаб (с опцией копирования) - брать за базу конец отрезка и давать 1/30 - ничего пересчитывать нигде не надо
Fogel вне форума  
 
Непрочитано 12.05.2019, 19:58
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,996


Цитата:
Сообщение от Fogel Посмотреть сообщение
А ещё есть команда масштаб (с опцией копирования) - брать за базу конец отрезка и давать 1/30 - ничего пересчитывать нигде не надо
для группы отрезков не укажешь одну базовую точку.
Сергей812 вне форума  
 
Непрочитано 13.05.2019, 04:10
#11
Fogel

люблю мастерить
 
Регистрация: 21.01.2005
Челябинск
Сообщений: 7,601


Разумеется. Просто как вариант "действующего вещества". Взять все отрезки списком и обрабатывать в цикле по очереди
Fogel вне форума  
 
Непрочитано 13.05.2019, 10:05
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,996


Цитата:
Сообщение от Fogel Посмотреть сообщение
Разумеется. Просто как вариант "действующего вещества". Взять все отрезки списком и обрабатывать в цикле по очереди
тут еще вопрос встает - с какой стороны отрезка нужно отмерить 1/30 длины. В заголовке ветки мелькало про
Цитата:
Сообщение от dima_kuzminki Посмотреть сообщение
(или полилиний ) , более сотни, равной длины
а как они расположены - тайна великая, похожа. Люди так боятся дать исходные данные полностью - будто кто-то украдет их "суперидею" и сделает на ней "состояние", что ли)
Сергей812 вне форума  
 
Непрочитано 13.05.2019, 12:11
#13
koMon


 
Регистрация: 26.09.2017
Сообщений: 407


Цитата:
Сообщение от Boxa Посмотреть сообщение
или кто нибудь из местных самаритян напишет эту программу специально для Вас
Цитата:
Сообщение от dima_kuzminki Посмотреть сообщение
Скрипт-файл ранее не создавал.
а лиспами приходилось пользоваться?
koMon вне форума  
 
Непрочитано 19.05.2019, 22:38
#14
poobschatso


 
Регистрация: 28.04.2018
Беларусь
Сообщений: 55


Лисп Segment Curve от Ли Мака может подойдет?
http://www.lee-mac.com/segmentcurve.html
poobschatso вне форума  
 
Непрочитано 20.05.2019, 10:10
#15
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 3,989


imho, этот лисп еще ближе к теме, а может даже то, что доктор прописал: http://www.urbanlisp.com/command/24/multiple-divide/

Offtop:
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а как они расположены - тайна великая, похожа. Люди так боятся дать исходные данные полностью - будто кто-то украдет их "суперидею" и сделает на ней "состояние", что ли)
Обычно дело не в "охраняемых тайнах" и "суперидеях", а в "службах безопасности", которые "бдят", и которыми сейчас обзаводятся многие фирмы численностью более 3,5 человек, независимо от того, надо оно или нет. С другой стороны, далеко не всегда есть смысл выкладывать исходные данные на форум ПОЛНОСТЬЮ. В 99,9% случаев достаточно ХАРАКТЕРНОГО фрагмента, содержащего достаточно информации о проблеме и не содержащего никаких тайн - ни настоящих, ни воображаемых.
__________________
Да здравствует фикус! (С)

Последний раз редактировалось kp+, 20.05.2019 в 10:35.
kp+ вне форума  
 
Непрочитано 20.05.2019, 16:22
#16
koMon


 
Регистрация: 26.09.2017
Сообщений: 407


Цитата:
Сообщение от kp+ Посмотреть сообщение
этот лисп еще ближе к теме, а может даже то, что доктор прописал
да как-то
Миниатюры
Нажмите на изображение для увеличения
Название: UrbanLISP.jpg
Просмотров: 45
Размер:	111.4 Кб
ID:	214292  
koMon вне форума  
 
Непрочитано 20.05.2019, 17:05
#17
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,996


Offtop:
Цитата:
Сообщение от kp+ Посмотреть сообщение
в "службах безопасности", которые "бдят", и которыми сейчас обзаводятся многие фирмы численностью более 3,5 человек, независимо от того, надо оно или нет.
где так серьезно с СБ - там зачастую и инета нет на рабочих местах, и прямой эл.почты, и носители информации заблокированы)) А вообще есть древнее высказывание вида: чтобы задать правильный вопрос - надо знать половину ответа) Явно деление на 1/30 не является конечным требуемым результатом, имхо))
Сергей812 вне форума  
 
Непрочитано 20.05.2019, 18:04
#18
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 3,989


Цитата:
Сообщение от koMon Посмотреть сообщение
да как-то
Да, согласен, платная медицина - зло. Но вот что прописал участковый районной поликлиники:
https://forums.autodesk.com/t5/visua...s/td-p/3893696
Код:
[Выделить все]
(vl-load-com)

(defun c:PointAtMid (/ *error* ss acDoc oSpace tab)

  (defun *error* (msg)
    (if acDoc
      (vla-endundomark acDoc)
    )
    (cond ((not msg))                                                   ; Normal exit
          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
          ((princ (strcat "\n** Error: " msg " ** ")))                  ; Fatal error, display it
    )
    (princ)
  )

  (if (setq ss (ssget '((0 . "LINE,LWPOLYLINE"))))
    (progn
      (vla-startundomark
        (setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
      )
      (setq oSpace
             (apply
               (if (setq tileMode (= 1 (getvar 'tilemode)))
                 'vla-get-modelspace
                 'vla-get-paperspace
               )
               (list acDoc)
             )
      )
      (setq tab (getvar 'ctab))
      (vlax-for x (setq ss (vla-get-activeselectionset acDoc))
        (vla-addpoint
          oSpace
          (vlax-3d-point
            (vlax-curve-getpointatdist x (* 0.5 (vla-get-length x)))
          )
        )
      )
      (vla-delete ss)
    )
    (prompt "\n** Nothing selected ** ")
  )
  (*error* nil)
)
пропорция разделения выделена красным.
__________________
Да здравствует фикус! (С)
kp+ вне форума  
 
Непрочитано 20.05.2019, 21:24
#19
koMon


 
Регистрация: 26.09.2017
Сообщений: 407


Цитата:
Сообщение от kp+ Посмотреть сообщение
платная медицина - зло
да этот платный доктор прямо-таки какой-то средневековый шарлатан. если продайджестировать, что он там понаписал в преамбуле, то получится следующее. я написал лисп, протестировал его на своём компе, скомпилировал его в fas и теперь его продаю его вам. лисп должен работать на вашем компе, но это не обязательно, на его работоспособность могут влиять разные факторы и это не моя проблема. потраченные деньги никогда не возвращаются, отчётные документы не предоставляются. купленный лисп работает 1 год, если вы заинтересованы в дальнейшем использовании лиспа вам нужно покупать его ещё раз. и тому подобное.

Цитата:
Сообщение от kp+ Посмотреть сообщение
Но вот что прописал участковый районной поликлиники:
а этот участковый терапевт явно испытывает крен в сторону гомеопатии))) я бы сделал хирургическое вмешательство и почикал бы отрезки на кусочки)))
koMon вне форума  
 
Непрочитано 21.05.2019, 11:02
#20
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 3,989


ТС говорит,
Цитата:
Сообщение от dima_kuzminki Посмотреть сообщение
В конце концов устроило бы разбиение всех отрезков на равные части командой _divide
которая как раз ставит на линии точки (или блоки), как и рецепт участкового (только он ставит одну точку в заранее определенном месте).
Соответственно, участковый выдал вполне правильный рецепт.

Offtop:
Цитата:
Сообщение от koMon Посмотреть сообщение
я бы сделал хирургическое вмешательство и почикал бы отрезки на кусочки)))
Ох уж эти хирурги! Все бы им резать и резать! Дадим таблетку - само отпадет! (С)
__________________
Да здравствует фикус! (С)

Последний раз редактировалось kp+, 21.05.2019 в 11:07.
kp+ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как разделить группу отрезков на равные части?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчленение поверхности на части necto SolidWorks 2 23.12.2015 09:49
Поделить окружность на равные части.. PaSokaS Программирование 3 17.05.2005 23:50
Поделить окружность на равные части.. PaSokaS AutoCAD 1 17.05.2005 01:21
Разбиение отрезка на равные части Alюshon AutoCAD 2 09.09.2004 18:27
Деление отрезка на равные части. Борода AutoCAD 5 27.04.2004 14:03