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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > нарисовать полилинию из списка с координатами точек (lisp)

нарисовать полилинию из списка с координатами точек (lisp)

Ответ
Поиск в этой теме
Непрочитано 11.02.2011, 03:17
нарисовать полилинию из списка с координатами точек (lisp)
paradoxvaha
 
проектирование противооползневых сооружений
 
Yalta
Регистрация: 06.04.2007
Сообщений: 50

Всем привет. Возник небольшой вопрос: можно ли как то нарисовать полилинию (_pline) по имеющимся координатам точек в списке lisp? Т.е. список состоит из точечных пар, и надо по этим точкам отрисовать полилинию. Если нет идей, то подскажите пожалуйста где об этом почитать можно.
Просмотров: 24637
 
Непрочитано 08.04.2023, 12:47
#41
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,679


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Правда, что ли?
это из серии обс. в последних версиях на протяжении лет 5+ (vl-load-com) ваще загружать не нужно для выполнения vl* функций, коды с их использованием грузятся и исполняются на 123. другое дело реакторы (в хелпере так и прописаны реакторы вначале, а потом туман про некоторые другие функции), но ведь для отрисовки плиниии они и не нужны...
__________________
K Lisp
koMon вне форума  
 
Непрочитано 08.04.2023, 16:12
#42
Кулик Алексей aka kpblc
Moderator

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


МишаИнженер, rArc - это у тебя что? Радиус? Так этого мало для определения корректной кривизны.
Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Правда, что ли? И насколько оно критично?
Нет конечно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.04.2023, 17:29
#43
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 465


Вот и я не замечал ни разу. :-)
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Непрочитано 08.04.2023, 18:40
#44
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Ну, вот вариант построения полилинии с помощью entmake. Без ненужных setq, c заданием ширины, "веса" и "трехмерности".
Код:
[Выделить все]
 (defun ru-pline-entmake (points is_closed is_3d width lineweight / elst ENTL)
;;; (ru-pline-entmake (список_вершин) флаг_замкнутости
;;; флаг_делать_3М_ПЛИНИЮ)
;;; возвращает имя примитива - полилинии или NIL, если что-то не
;;; вышло.

;;;(ru-pline-entmake (list (list 0 0) (list 1000 100) (list 1000 2000) (list 0 2000)) nil nil  0 50)

  (if is_3d
    (progn
      (setq entl
             (list
               '(0 . "POLYLINE")
               '(100 . "AcDbEntity")
               '(100 . "AcDb3dPolyline")
               '(66 . 1)
               '(10 0.0 0.0 0.0)
               (cons 70
                     (logior 8
                             (if is_closed
                               1
                               0
                             ) ;_ end of if
                             (if (= 1 (getvar "PLINEGEN"))
                               128
                               0
                             ) ;_ end of if
                     ) ;_ end of logior
               ) ;_ end of cons
             ) ;_ end of list
      ) ;_ end of setq
      (if (entmake entl)
        (progn
          (foreach v points
              (setq entl
                     (list
                       '(0 . "VERTEX")
                       '(100 . "AcDbEntity")
                       '(100 . "AcDbVertex")
                       '(100 . "AcDb3dPolylineVertex")
                       (append '(10) v)
                       '(70 . 32)
                     ) ;_ end of list
              ) ;_ end of setq
              (entmake entl)
          ) ;_ end of foreach
          (if (entmake '((0 . "SEQEND") (100 . "AcDbEntity")))
            (entupd (entlast))
            nil
          ) ;_ end of if
        ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of progn
    (progn
      (setq elst (append
                   (list
                     '(0 . "LWPOLYLINE")
                     '(100 . "AcDbEntity")
                     '(100 . "AcDbPolyline")
                                        ;(cons 8 (getvar "CLAYER"))
                     (cons 90 (length points))
                     (cons 43 width)
                     (cons 370 lineweight)
                     (cons 70
                           (logior (if is_closed
                                     1
                                     0
                                   ) ;_ end of if
                                   (if (= 1 (getvar "PLINEGEN"))
                                     128
                                     0
                                   ) ;_ end of if
                           ) ;_ end of logand
                     )                  ; _ end of cons;;;
                   ) ;_ end of list
                   (mapcar (function (lambda (p)
                                       (list 10 (car p) (cadr p))
                                     ) ;_ end of lambda
                           ) ;_ end of function
                           points
                   ) ;_ end of mapcar
                 ) ;_ end of append
      ) ;_ end of setq
      (if (entmake elst)
        (entupd (entlast))
        nil
      ) ;_ end of if
    ) ;_ end of progn
  ) ;_ end of if
) ;_ end of defun
ShaggyDoc вне форума  
 
Непрочитано 10.04.2023, 05:33
#45
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Правда, что ли? И насколько оно критично?
Темп черчения замедляется примерно в 10 раз
МишаИнженер вне форума  
 
Непрочитано 10.04.2023, 07:25
#46
Кулик Алексей aka kpblc
Moderator

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


Значит отключай приложения по одному - найдешь основной тормоз. А потом код приложения на форум - может, и разберем.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.04.2023, 07:26
#47
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Темп черчения замедляется примерно в 10 раз
Это детские суеверия.
А замедляют работы многочисленные последовательные вызовы функции setq.
Это ведь не "оператор присваивания", а именно функция, которую и загрузить надо, и проанализировать пары аргументов на корректность.
ShaggyDoc вне форума  
 
Непрочитано 10.04.2023, 07:35
#48
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Чтобы увидеть эффект торможения поставьте время автосохранения 5м и откройте одновременно 5 разных файлов. Запустите любой инструмент в котором есть строка (vl-load-com) (При этом, я так подозреваю в память Автокада кроме нужных функций загрузится всякий, неоптимизированный и неотлаженный мусор, который выгрузить уже нельзя) Через 5 минут АвтоКад начнет дико тормозить, потому что при каждом сохранении файла Автокад выполняет перекомпиляцию всех загруженных проектов и инструментов. Так было при использовании загруженных файлов *.dvb. Стоит загрузить хоть один файл *.dvb и время сохранения файлов увеличивается примерно раз в 10.
Поэтому у меня появилось правило: если появляется необходимость добавлять строку кода (vl-load-com) дальше программировать практически нет смысла. Приложение получится очень тормозным и "неэффективным" в некотором смысле. Только в особых случаях можно дальше писать код: когда других способов решить проблему не находится.
МишаИнженер вне форума  
 
Непрочитано 10.04.2023, 09:06
#49
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Так было при использовании загруженных файлов *.dvb. Стоит загрузить хоть один файл *.dvb и время сохранения файлов увеличивается примерно раз в 10.
Поэтому у меня появилось правило: если появляется необходимость добавлять строку кода (vl-load-com)
Глупости. При чем тут dvb и сохранение файлов?
ShaggyDoc вне форума  
 
Непрочитано 10.04.2023, 14:16
#50
Сергей812


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Глупости. При чем тут dvb и сохранение файлов?
отсюда, наверно)
Сергей812 вне форума  
 
Непрочитано 10.04.2023, 15:09
#51
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
отсюда, наверно)
Ну и зачем же использовать уродца VBA? Надо чего-то "эдакое" - есть .NET, ObjectARX.
Так и они не нужны для "мишиных задач".
ShaggyDoc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > нарисовать полилинию из списка с координатами точек (lisp)

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP - 2D полилинию в 3D Andrej LISP 22 25.04.2019 11:40
Как с помощью LISP нарисовать окно линиями? Aндрeй LISP 13 24.06.2011 14:37
Как имея массив точек создать полилинию по ним? emilko AutoCAD 9 19.06.2009 23:15
Lisp: Обработка объектов и получение списка свойств (координаты точек) Nanotronic LISP 2 23.04.2009 23:07
нарисовать полилинию и запустить макрос VBA gizmo_zx Программирование 8 24.12.2008 08:47