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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > построение дуги эллипса в системе и деление её по длине на шесть одинаковых частей.

построение дуги эллипса в системе и деление её по длине на шесть одинаковых частей.

Ответ
Поиск в этой теме
Непрочитано 04.02.2008, 12:49 #1
построение дуги эллипса в системе и деление её по длине на шесть одинаковых частей.
Илья77
 
Регистрация: 04.02.2008
Сообщений: 2

Как разделить дугу эллипса построенную в системе AutoCad,по длине,на шесть одинаковых частей.
Просмотров: 7530
 
Непрочитано 04.02.2008, 12:53
#2
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,924
<phrase 1=


Цитата:
Сообщение от Илья77 Посмотреть сообщение
Как разделить дугу эллипса построенную в системе AutoCad,по длине,на шесть одинаковых частей.
_divide для деления на равные части
_measure для деления на части определенной длины
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 04.02.2008, 16:50
#3
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Решил проверить. А почему это он сразу не делит? Только точки на примитиве ставит и всё.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 04.02.2008, 22:31
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Bull, а опции ком.строки просмотреть если, там столько интересного можно найти...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.02.2008, 23:47
#5
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Цитата:
Bull, а опции ком.строки просмотреть если, там столько интересного можно найти...
Насколько я знаю при помощи _divide или _measure можно только расставить точки или блоки по длине элемента. Но чтоб они еще и делили на части , это что-то новенькое
Red Nova вне форума  
 
Непрочитано 05.02.2008, 01:16
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Я намекал на возможность расстановки блоков, а не только точек.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.02.2008, 09:32
#7
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Говоря "только" я и имел ввиду, что не делит. Опцию блоков видел.

PS Хотя, признаю, есть свойство у меня не смотреть ком. строку
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 05.02.2008, 10:25
#8
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,924
<phrase 1=


Цитата:
Сообщение от Bull Посмотреть сообщение
Решил проверить. А почему это он сразу не делит? Только точки на примитиве ставит и всё.
Как мед, так кружками??
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 05.02.2008, 10:41
#9
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


кАнеШнА!!! И при этом быстро, качественно и недорого...
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 05.02.2008, 11:44
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Ну тогда попробовать такое:
Код:
[Выделить все]
(defun c:mod-divide (/ adoc *error* ent num _osmode _cmdecho pt_lst dist new_ent)
  (defun *error* (msg)
    (mapcar '(lambda (a b)
               (if b
                 (setvar a b)
                 ) ;_ end of if
               ) ;_ end of lambda
            (list "cmdecho" "osmode")
            (list _osmode _cmdecho)
            ) ;_ end of mapcar
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (if (and (= (type (setq ent
                           (vl-catch-all-apply
                             '(lambda ()
                                (car (entsel "\nУкажите разбиваемый примитив <Отмена> : "))
                                ) ;_ end of lambda
                             ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'ename
              ) ;_ end of =
           (= (type (setq num (vl-catch-all-apply
                                '(lambda ()
                                   (initget 7)
                                   (getint "\nКоличество сегментов <Отмена> : ")
                                   ) ;_ end of lambda
                                ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'int
              ) ;_ end of =
           ) ;_ end of and
    (progn
      (mapcar '(lambda (a b)
                 (if b
                   (setvar a b)
                   ) ;_ end of if
                 ) ;_ end of lambda
              '("cmdecho" "osmode")
              '(0 0)
              ) ;_ end of mapcar
      (setq _osmode  (getvar "osmode")
            _cmdecho (getvar "cmdecho")
            ent      (vlax-ename->vla-object ent)
            dist     (/ (vlax-curve-getdistatpoint ent (vlax-curve-getendpoint ent))
                        num
                        ) ;_ end of /
            pt_lst   ((lambda (/ lst count)
                        (setq count 0)
                        (repeat (1- num)
                          (setq lst (append lst
                                            (list (vlax-curve-getpointatdist
                                                    ent
                                                    (* dist (setq count (1+ count)))
                                                    ) ;_ end of vlax-curve-getPointAtDist
                                                  ) ;_ end of list
                                            ) ;_ end of append
                                ) ;_ end of setq
                          ) ;_ end of repeat
                        lst
                        ) ;_ end of lambda
                      )
            ) ;_ end of setq
      (foreach item pt_lst
        (setq new_ent (vlax-vla-object->ename (vla-copy ent)))
        (command "_.break" new_ent item item)
        (vla-erase ent)
        (setq ent (vlax-ename->vla-object (entlast)))
        ) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  (mapcar '(lambda (a b)
             (if b
               (setvar a b)
               ) ;_ end of if
             ) ;_ end of lambda
          (list "cmdecho" "osmode")
          (list _osmode _cmdecho)
          ) ;_ end of mapcar
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.02.2008, 22:07
#11
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Нет слов, даже spline разбил. Прибавил к своему сборнику лиспов.
Red Nova вне форума  
 
Непрочитано 05.02.2008, 23:53
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Я тестировал на сплайнах, полилиниях (плоских), отрезках, 3д-полилиниях. Я четко понимаю, что для окружностей и полных эллипсов не сработает (там нормальную математику надо подключать, а не надеяться на корректность обработки команды _.break). Также не будут обработаны мультилинии (mline которые).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > построение дуги эллипса в системе и деление её по длине на шесть одинаковых частей.

Реклама i