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

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

LISP. Как преобразовать выделенные сплайны в полилинии?

Ответ
Поиск в этой теме
Непрочитано 22.08.2011, 15:16 #1
LISP. Как преобразовать выделенные сплайны в полилинии?
LastGraff
 
Томск
Регистрация: 13.07.2011
Сообщений: 81

Подскажите, как применить ко всем сплайнам, выделенным посредством AecSelectSimilar, _splinedit с параметрами _p и 2, или есть другие варианты решения задачи преобразования сплайнов в 3d-полилинию. Flatten - теряет высоты и пересохранять в DXF12 тоже возможности нет(
Просмотров: 13671
 
Непрочитано 23.08.2011, 10:42
1 | #2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,910
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Код:
[Выделить все]
(defun C:SC ( / i ss)
  ;;;Spline convert
  ;;;Convert spline to polyline
  ;;; Преобразование (конвертирование) сплайнов в полилинию
  ;;; Преобразовать СПЛАЙНЫ в ПОЛИЛИНИИ
  ;;; http://forum.dwg.ru/showpost.php?p=864224&postcount=359
  (setvar "PLINECONVERTMODE" 0) ;_ 0 - линейные сегменты
                                ;_ 1 - линии и дуги
(if (< (atoi (substr (ver) 13)) 2010)
(alert "Для Автокада не ниже 2010 версии")
(progn
(setq ss nil ss (ssget "_:L" '((0 . "SPLINE"))))
(setq i '-1)
(setvar "CMDECHO" 0)
(repeat (sslength ss)
  (if command-s
    (command-s "_splinedit"(ssname ss (setq i (1+ i))) "_p" "6")
    (command "_splinedit"(ssname ss (setq i (1+ i))) "_p" "6")
    )
    (grtext -2 (strcat "Inspecting : "(itoa i)))
  )
(if command-s (command-s "_regenall")(command "_regenall"))
  )
  )
  )
(princ "\nНабери SC (лат) в команде\ной строке")(princ)
Для точности 2 замени строчки
Код:
[Выделить все]
(command "_splinedit"(ssname ss (setq i (1+ i))) "_p" "6")
(command-s "_splinedit"(ssname ss (setq i (1+ i))) "_p" "6")
на
Код:
[Выделить все]
(command "_splinedit"(ssname ss (setq i (1+ i))) "_p" "2")
(command-s "_splinedit"(ssname ss (setq i (1+ i))) "_p" "2")
PS Все способы
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 22.10.2017 в 08:36.
VVA вне форума  
 
Автор темы   Непрочитано 23.08.2011, 12:36
#3
LastGraff


 
Регистрация: 13.07.2011
Томск
Сообщений: 81


спасибо большое, помогло)
LastGraff вне форума  
 
Непрочитано 29.08.2011, 14:31
1 | #4
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


Так поприятнее будет

Код:
[Выделить все]
 (defun C:ConvSplineToPline2010 ( / *error* cmd i ss)
;;; Конвертирование сплайнов в полилинии
;;; Для Автокада не ниже 2010
  (defun *error* (msg)
    (setvar 'cmdecho cmd)
    (princ)
  )
  (if (> 2010 (atoi (substr (ver) 13)))
    (alert "Для корректной работы требуется\nАвтокад не ниже 2010 версии")
    (if
      (and
        (setq
          cmd (getvar 'cmdecho)
          i   -1
          *dummy* (prompt "\nВыберите сплайны для преобразования...")
          ss  (ssget "_:L" '((0 . "SPLINE")))
        )
        (progn
          (initget 6)
          (setq ac (getint "Точность <10>:"))
          (or ac (setq ac 10))
        )
      )
      (progn
        (setvar 'cmdecho 0)
        (command "_.undo" "_be")
        (repeat (sslength ss)
          (command "_.splinedit" (ssname ss (setq i (1+ i))) "_p" ac)
          (grtext -2 (strcat "Преобразование: #" (itoa i)))
        )
        (command "_.regenall")
        (command "_.undo" "_e")
        (setvar 'cmdecho cmd)
      )
      (princ "\nНеобходимо выбрать хотя бы один сплайн!")
    )
  )
  (princ)
)
(defun C:SC ()(C:ConvSplineToPline2010))
gomer вне форума  
 
Непрочитано 29.03.2012, 19:02
#5
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,969


Пардон - нашел ответы в поиске
Можно и удалить!

Последний раз редактировалось АлексЮстасу, 29.03.2012 в 19:49.
АлексЮстасу вне форума  
 
Непрочитано 18.12.2013, 16:53
#6
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


А можно окружность преобразовать в полилинию и при этом она оставалась замкнутой и была в виде дуг, а не множества прямых участков.
Valery Brelovsky вне форума  
 
Непрочитано 18.12.2013, 17:01
#7
-mavlin-


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


можно
-mavlin- вне форума  
 
Непрочитано 18.12.2013, 17:14
#8
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от -mavlin- Посмотреть сообщение
можно
Теперь остаётся спросить каким образом.
Valery Brelovsky вне форума  
 
Непрочитано 18.12.2013, 17:34
1 | #9
kp+

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


Нарисовать такое чудо можно командой _donut из Экспресса. Если необходимо массовое преобразование существующих окружностей в такие полилинии - можно слегка модифицировать исходный код.
__________________
Одно меня лишь радует - я это вижу сам! (С)
kp+ вне форума  
 
Непрочитано 18.12.2013, 18:02
#10
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Спасибо. Но спрашивал преобразовать окружность в это чудо.
Valery Brelovsky вне форума  
 
Непрочитано 18.12.2013, 19:08
1 | #11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,910
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Код:
[Выделить все]
 
(defun c:C2P (/ ss)
  ;; Circles to LWPolylines
  ;; Alan J. Thompson, 10.26.10
  ;; http://www.cadtutor.net/forum/showthread.php?53755-Nneed-a-list-to-convert-circles-to-polylines&p=364482&viewfull=1#post364482
  (if (setq ss (ssget "_:L" '((0 . "CIRCLE"))))
    ((lambda (i / e d l)
       (while (setq e (ssname ss (setq i (1+ i))))
         (setq l nil)
         (foreach x (setq d (entget e)) (and (member (car x) '(6 8 39 48 62)) (setq l (cons x l))))
         (entmakex
           (append
             (list (cons 0 "LWPOLYLINE")
                   (cons 100 "AcDbEntity")
                   (cons 100 "AcDbPolyline")
                   (cons 90 2)
                   (cons 70 1)
             )
             l
             (list (cons 10 (polar (cdr (assoc 10 d)) 0. (cdr (assoc 40 d))))
                   '(42 . 1)
                   (cons 10 (polar (cdr (assoc 10 d)) pi (cdr (assoc 40 d))))
                   '(42 . 1)
             )
           )
         )
         (entdel e)
       )
     )
      -1
    )
  )
  (princ)
)
Еще варианты Circle to Polyline, circular Polyline to Circle
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.12.2013, 11:07
#12
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Спасибо Владимир это именно то что нужно. Замкнутая полтилиния ввиде окружности.

----- добавлено через ~8 мин. -----
Меня больше достаёт вариант окружности в полилинию. Можно лиспом по работе с полилиниями, но там окружность получается ввиде маленьких прямых и теряется центр фигуры, а нужно взять центр фигуры что бы перестить и отцентровать.
Valery Brelovsky вне форума  
 
Непрочитано 20.02.2019, 10:45
#13
allar8


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


Цитата:
Сообщение от VVA Посмотреть сообщение
defun C:SC ( / i ss)
;;;Spline convert
;;;Convert spline to polyline
;;; Преобразование (конвертирование) сплайнов в полилинию
;;; Преобразовать СПЛАЙНЫ в ПОЛИЛИНИИ
;;; http://forum.dwg.ru/showpost.php?p=864224&postcount=359
(setvar "PLINECONVERTMODE" 0) ;_ 0 - линейные сегменты
;_ 1 - линии и дуги
(if (< (atoi (substr (ver) 13)) 2010)
(alert "Для Автокада не ниже 2010 версии")
(progn
(setq ss nil ss (ssget "_:L" '((0 . "SPLINE"))))
(setq i '-1)
(setvar "CMDECHO" 0)
(repeat (sslength ss)
(if command-s
(command-s "_splinedit"(ssname ss (setq i (1+ i))) "_p" "6")
(command "_splinedit"(ssname ss (setq i (1+ i))) "_p" "6")
)
(grtext -2 (strcat "Inspecting : "(itoa i)))
)
(if command-s (command-s "_regenall")(command "_regenall"))
)
)
)
(princ "\nНабери SC (лат) в команде\ной строке")(princ)
Раньше пользовался лиспом l2pl.lsp - но потерял его в нем была возможность преобразовывать сплайны и дуги в полилинии с возможностью выбора шага. Не подскажете где мне его щаз можно найти?
allar8 вне форума  
 
Непрочитано 20.02.2019, 11:37
#14
allar8


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


Цитата:
Сообщение от allar8 Посмотреть сообщение

Цитата:
Сообщение от VVA
defun C:SC ( / i ss)
;;;Spline convert
;;;Convert spline to polyline
;;; Преобразование (конвертирование) сплайнов в полилинию
;;; Преобразовать СПЛАЙНЫ в ПОЛИЛИНИИ
;;; http://forum.dwg.ru/showpost.php?p=864224&postcount=359
(setvar "PLINECONVERTMODE" 0) ;_ 0 - линейные сегменты
;_ 1 - линии и дуги
(if (< (atoi (substr (ver) 13)) 2010)
(alert "Для Автокада не ниже 2010 версии")
(progn
(setq ss nil ss (ssget "_:L" '((0 . "SPLINE"))))
(setq i '-1)
(setvar "CMDECHO" 0)
(repeat (sslength ss)
(if command-s
(command-s "_splinedit"(ssname ss (setq i (1+ i))) "_p" "6")
(command "_splinedit"(ssname ss (setq i (1+ i))) "_p" "6")
)
(grtext -2 (strcat "Inspecting : "(itoa i)))
)
(if command-s (command-s "_regenall")(command "_regenall"))
)
)
)
(princ "\nНабери SC (лат) в команде\ной строке")(princ)
Раньше пользовался лиспом l2pl.lsp - но потерял его в нем была возможность преобразовывать сплайны и дуги в полилинии с возможностью выбора шага. Не подскажете где мне его щаз можно найти?
а вот нашел
Вложения
Тип файла: lsp l2pl.lsp (266 байт, 198 просмотров)
allar8 вне форума  
 
Непрочитано 21.12.2021, 21:46
#15
StaPerRa

Инженер ПТО
 
Регистрация: 12.09.2013
С-Петербург
Сообщений: 23


Народ, прошу прощения за нубство скудоумность, но...
Ну создал и загрузинил я этот ЛИСП, а дальше- то что?! Какой командой или кнопкой кошмарить сплайн?!
StaPerRa вне форума  
 
Непрочитано 22.12.2021, 07:54
#16
Кулик Алексей aka kpblc
Moderator

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


https://dwg.ru/pub/9
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.12.2021, 08:33
#17
StaPerRa

Инженер ПТО
 
Регистрация: 12.09.2013
С-Петербург
Сообщений: 23


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Спасибо!
StaPerRa вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как преобразовать выделенные сплайны в полилинии?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Простановка площадей внутри полилинии. Klo LISP 26 14.12.2018 17:43
Преобразовать отрезки в полилинии без объединения sibcat AutoCAD 5 31.03.2016 12:35
lisp: Длина по полилинии до точки vosh LISP 19 15.07.2013 15:10
Как преобразовать сплайны в полилинии Velik84 AutoCAD 1 21.10.2010 19:11
как преобразовать полилинии с шириной в полилинии с весом идентичным ширине? Vadym AutoCAD 28 05.07.2010 21:14