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

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

Как в LISPом растянуть примитив Атвокада

Ответ
Поиск в этой теме
Непрочитано 01.09.2011, 11:59 #1
Как в LISPом растянуть примитив Атвокада
ALFMario
 
Gomel
Регистрация: 11.10.2007
Сообщений: 68

Как в LISP растянуть объект линия, полилиния, дуга, т.е. переместить конечные точки примитива в точки с заданными координатами. Удалить и нарисовать не предлагать
Просмотров: 2018
 
Непрочитано 01.09.2011, 12:07
#2
gomer

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


С помощью entmode
gomer вне форума  
 
Непрочитано 01.09.2011, 12:08
#3
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Если в чистом лиспе - то получить dxf список (entget) исправить координаты (в отрезках и полилиниях - код 10, с дугами посложней - там центр и два угла, соответственно надо продумать подходящий алгоритм по которому изменять) и изменить (entmod). Если через vla - то менять соответствующие свойства.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 01.09.2011, 12:48
#4
ALFMario


 
Регистрация: 11.10.2007
Gomel
Сообщений: 68


Как получить конечные точки с кодом 10, надо удлинить от центра в обе стороны. Через Vla- какой командой ?
ALFMario вне форума  
 
Непрочитано 01.09.2011, 13:15
#5
gomer

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


(assoc 10 (entget en))
(assoc 11 (entget en))
gomer вне форума  
 
Непрочитано 01.09.2011, 13:36
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Ты б свой уровень знаний описал - чтобы было понятно что тебе отвечать: вот пример удлиняет только отрезки - посмотри его, почитай справку, на его основе сделай остальное, ну а если что будет не понятно то спроси (только не пиши вобще ничего не понял):
Код:
[Выделить все]
 (defun c:long-otr ()
 ((lambda (ent rasst)
   ((lambda (start end)
     (entmod (subst (cons 10 (polar start (angle end start) rasst))
                    (cons 10 start)
                    (subst (cons 11 (polar end (angle start end) rasst))
                           (cons 11 end)
                           ent))))
    (cdr (assoc 10 ent))
    (cdr (assoc 11 ent))))
  (entget (car (entsel "\nВыберите отрезок ")))
  (getdist "Укажите на сколько удлинить ")))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 01.09.2011, 13:47
#7
gomer

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Ты б свой уровень знаний описал
Дима_, ну что вы нубу человеку мозги пудрите, оне ж просили в обе стороны то биш по половинке в каждую
gomer вне форума  
 
Непрочитано 01.09.2011, 14:09
#8
Кулик Алексей aka kpblc
Moderator

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


Команду _.lengthen используйте
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.09.2011, 15:14
#9
ALFMario


 
Регистрация: 11.10.2007
Gomel
Сообщений: 68


Ок спасибо, только у полилиний нет dxf 11. Лиспом увлекаюсь пару лет, основы знаю.
_.lengthen нормально

Последний раз редактировалось ALFMario, 01.09.2011 в 15:26.
ALFMario вне форума  
 
Непрочитано 01.09.2011, 15:18
#10
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Зато есть у отрезков для которых и написанно, для полилиний надо написать с учетом координаты.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 02.09.2011, 10:00
#11
ALFMario


 
Регистрация: 11.10.2007
Gomel
Сообщений: 68


Мне надо для полилиний и для дуг растянуть в обе стороны. С отрезками всё понятно было. Можно ли как нибудь entmod заменить vla- командой

Последний раз редактировалось ALFMario, 02.09.2011 в 10:38.
ALFMario вне форума  
 
Непрочитано 02.09.2011, 10:16
#12
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от ALFMario Посмотреть сообщение
Можно ли как нибудь entmod заменить vla- командой
Можно, только какой в этом смысл - нет vla-команды удлинить, нодо точно так-же изменить координаты соответствующих точек (углов если дуги). В данном примере большой разницы с dxf не будет.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 02.09.2011, 11:41
#13
ALFMario


 
Регистрация: 11.10.2007
Gomel
Сообщений: 68


так получилось проще для всего
(command "_.lengthen" "_de" dist "_f" "_non" pt1 "_non" pt11 "" "")
(command "_.lengthen" "_de" dist "_f" "_non" pt2 "_non" pt22 "" "")

Последний раз редактировалось ALFMario, 02.09.2011 в 13:01.
ALFMario вне форума  
 
Непрочитано 02.09.2011, 11:52
#14
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Offtop: Уже исправленно
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 02.09.2011 в 14:33.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как в LISPом растянуть примитив Атвокада



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите, существуют ли практические руководства по Lisp? vn LISP 261 26.11.2015 13:27