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

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

Нарисовать программно полилиню заданной толщины

Ответ
Поиск в этой теме
Непрочитано 30.03.2014, 10:33
Нарисовать программно полилиню заданной толщины
remlin
 
Регистрация: 12.05.2008
Сообщений: 24

Здравсвуйте! сам я программист Delphi, с лиспом не очень. Помогите написать функцию лисп, которая рисует полилинию заданной толщиной. (Global width).
т.е. рисование должно быть аналогично комманде pline, только сразу должно рисоваться с толщиной, переданной в параметре функции. Спасибо!
Просмотров: 6516
 
Непрочитано 09.01.2020, 11:33
#21
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Код:
[Выделить все]
 (defun c:emupline  (/ x00 x01 x02)
 (setq x01 (entget
             (entmakex
               (append '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (100 . "AcDbPolyline") (43 . 10.0) (90 . 2))
                       (mapcar (function (lambda (e00) (list 10 (car e00) (cadr e00))))
                               (list (progn (initget 1) (setq x00 (getpoint "\nУкажите начальную точку полилинии...")))
                                     (progn (initget 1) (setq x00 (getpoint "\nУкажите следующую точку полилинии... " x00))))))))
       x02 1)
 (while (and (progn (initget "Завершить")
                    (setq x00 (getpoint "\nУкажите следующую точку полилинии или <Завершить>... " x00)))
             (not (eq "Завершить" x00)))
   (entmod (setq x01 (append (subst (cons 90 (+ 2 x02)) (cons 90 (setq x02 (1+ x02))) x01)
                             (list (list 10 (car x00) (cadr x00)))))))
 (princ))
Иначе говоря, 370 код заменен на 43, с cdr - глобальной шириной.
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 09.01.2020, 17:57
#22
VVA

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


Цитата:
Сообщение от ciril Посмотреть сообщение
(setq x00 (getpoint "\nУкажите следующую точку полилинии... " x00)
Должно быть наоборот
Цитата:
(setq x00 (getpoint x00 "\nУкажите следующую точку полилинии... " )
Код:
[Выделить все]
(defun c:emupline  (/ x00 x01 x02)
(setq x01 (entget
            (entmakex
              (append '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (100 . "AcDbPolyline") (43 . 10.0) (90 . 2))
                      (mapcar (function (lambda (e00) (list 10 (car e00) (cadr e00))))
                              (list (progn (initget 1) (setq x00 (getpoint "\nУкажите начальную точку полилинии...")))
                                    (progn (initget 1) (setq x00 (getpoint x00 "\nУкажите следующую точку полилинии... " ))))))))
      x02 1)
(while (and (progn (initget "Завершить")
                   (setq x00 (getpoint x00 "\nУкажите следующую точку полилинии или <Завершить>... ")))
            (not (eq "Завершить" x00)))
  (entmod (setq x01 (append (subst (cons 90 (+ 2 x02)) (cons 90 (setq x02 (1+ x02))) x01)
                            (list (list 10 (car x00) (cadr x00)))))))
(princ))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.01.2020, 19:31
#23
Семёныч


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


Простейшая программа вычерчивания полилинии с заданной шириной всех сегментов без использования PLINEWID:
Код:
[Выделить все]
(defun C:PLW ( / osm шир)
(setq osm (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq шир (getreal "Ширина всех сегментов полилинии: "))
(vl-cmdf "_PLINE")
(while (/= (logand (getvar "cmdactive") 31) 0)
       (vl-cmdf pause)
)
(vl-cmdf "_PEDIT" "_l" "_w" шир "")
(setvar "OSMODE" osm)
(princ)
)
Семёныч вне форума  
 
Непрочитано 09.01.2020, 19:47
#24
Кулик Алексей aka kpblc
Moderator

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


Семёныч, ИМХо восстанавливать привязки надо значительно раньше (если вообще имеет смысл их менять)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.01.2020, 20:02
#25
Семёныч


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
восстанавливать привязки надо значительно раньше
Это как? Восстанавливать привязки ДО вычерчивания полилинии? Смешно, IMHO.
А если их вообще не менять, то ты первый и придрался бы.
Два раза IMHO.
Семёныч вне форума  
 
Непрочитано 09.01.2020, 20:07
#26
Кулик Алексей aka kpblc
Moderator

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


Не, ну объясни серому, как штаны пожарника - на фига их вообще трогать? getreal глубоко фиолетово привязки. Человек выставил - и нехай оно будет, работе лиспа оно не мешает ни разу.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.01.2020, 22:57
#27
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от VVA Посмотреть сообщение
Должно быть наоборот
Строго говоря, да. Но мне больше нравиться не наоборот.
ciril вне форума  
 
Непрочитано 09.01.2020, 23:46
#28
VVA

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


Цитата:
Сообщение от ciril Посмотреть сообщение
Строго говоря, да. Но мне больше нравиться не наоборот.
Все время следовал справке, даже в мыслях не было сделать наоборот. Посчитал опиской. Проверил в Автокаде - работает
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 10.01.2020, 09:37
#29
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от VVA Посмотреть сообщение
Все время следовал справке, даже в мыслях не было сделать наоборот. Посчитал опиской. Проверил в Автокаде - работает
Как ни странно, все get функции с двумя параметрами так работают, я уже и забыл как в справке
__________________
На работе было скучно:shout:
ciril вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нарисовать программно полилиню заданной толщины

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отклонение не более 10% от заданной толщины стяжки Picnic Технология и организация строительства 9 07.01.2014 20:16
Помогите программно нарисовать профильную трубу! Владимир М Программирование 19 20.12.2006 11:10