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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Изменение геометрии полилиний

Изменение геометрии полилиний

Ответ
Поиск в этой теме
Непрочитано 04.12.2007, 17:38 #1
Изменение геометрии полилиний
hydrograph
 
Регистрация: 04.12.2007
Сообщений: 2

Ребята, зашиваюсь на работе..Такая проблемка..
Дали мне кучу ACAD-файлов. В каждом несколько десятков полилиний ( горизонтали ).Нажимаю любую -- свойства.В закладке "геометрия" есть пункт - уровень. Каждая горизонталь имеет свой. 2.099,3.099,4.099 и т.д. до высоты 150.099 (многие пололинии имеют одинаковый уровень) Так вот. Мне нужно во всех полилиниях изменить уровень до целого числа,например, 5.099 -- это 5.0.
Я нажимаю "Быстрый выбор" -- "Ко всему чертежу" -- "Полилиния" -- "Уровень" -- "Оператор "равно"" и ввожу значение 1.099, нахожу,скажем 7 полилиний с таким уровнем и изменяю на 1.0 Потом ищу полилинии с уровнем 2.099,3.099....и так до БЕЗУМИЯ.
Нашел прогу,которая делает экспорт узловых точек полилинии в Exel(чтоб там изменить и импортнуть обратно),но она дает только X и Y (((((
Спасибо за поддержку,пойду тыкать дальше .....

Последний раз редактировалось hydrograph, 04.12.2007 в 17:45.
Просмотров: 3550
 
Непрочитано 04.12.2007, 17:52
#2
wo!


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


Если разница уровней всех горизонталей до целых чисел одинаковая 0.099, то может просто перенести все горизонтали по Z на 0.099?
Выбрать все горизонтали и, типа: _move @0,0,-.099
wo! вне форума  
 
Непрочитано 04.12.2007, 22:35
#3
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(defun c:round-elev (/ adoc *error* selset _kpblc-eval-round prec)

  (defun _kpblc-eval-round (value prec)
                           ;|
*    Выполняет округление числа с заданной точностью.
*    Параметры вызова:
	value	обрабатываемое число
	prec	точность. nil -> 0.
*    За основу взяты коды Fatty http://www.autocad.ru/cgi-bin/f1/board.cgi?t=29895bX
|;
    (cond
      ((not prec)
       (_kpblc-eval-round value 0.)
       )
      ((zerop prec)
       value
       )
      (t
       (setq prec (abs prec))
       (* prec
          (fix (/ ((if (minusp value)
                     -
                     +
                     ) ;_ end ofif
                    value
                    (* 0.5 prec)
                    )
                  prec
                  ) ;_ end of/
               ) ;_ end offix
          ) ;_ end of*
       )
      ) ;_ end ofcond
    ) ;_ end ofdefun

  (defun *error* (msg)
    (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 selset (vl-catch-all-apply
                                 '(lambda ()
                                    (prompt "\nВыберите обрабатываемые полилинии")
                                    (ssget "_:L" '((0 . "LWPOLYLINE")))
                                    ) ;_ end of lambda
                                 ) ;_ end of vl-catch-all-apply
                        ) ;_ end of setq
                  ) ;_ end of type
            'pickset
            ) ;_ end of =
         (= (type (setq prec
                         (vl-catch-all-apply
                           '(lambda ()
                              (cond
                                ((getreal
                                   "\nТребуемая точность округления Elevation <1.0> : "
                                   ) ;_ end of getreal
                                 )
                                (t 1.0)
                                ) ;_ end of cond
                              ) ;_ end of lambda
                           ) ;_ end of vl-catch-all-apply
                        ) ;_ end of setq
                  ) ;_ end of type
            'real
            ) ;_ end of =
         ) ;_ end of and
     (progn
       (foreach ent
                ((lambda (/ item tab)
                   (repeat (setq tab  nil
                                 item (sslength selset)
                                 ) ;_ end setq
                     (setq tab (cons (ssname selset (setq item (1- item))) tab))
                     ) ;_ end repeat
                   (mapcar 'vlax-ename->vla-object tab)
                   ) ;_ end of lambda
                 )
         (vla-put-elevation ent (_kpblc-eval-round (vla-get-elevation ent) prec))
         ) ;_ end of foreach
       ) ;_ end of progn
     ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Для варианта 16,5 и установленной точности округления в 1 результат может быть разным.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.12.2007, 09:44
#4
hydrograph


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


Тема закрыта.Спасибо всем за внимание !
hydrograph вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Изменение геометрии полилиний



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение путей доступа к файлам поддержки. paha Программирование 25 23.04.2021 09:55
Округление координат, полилиний, центров окружностей, блоков MA2 Программирование 44 15.01.2015 15:19
Изменение фасада evgeshock Разное 4 31.07.2007 13:01
Как бы сделать динамическое изменение значения площади? Grinzaid Динамические блоки 8 02.08.2004 18:02