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

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

Как выполнить при помощи команды pline следующую последовательность действий ?

Ответ
Поиск в этой теме
Непрочитано 13.02.2017, 23:47 #1
Как выполнить при помощи команды pline следующую последовательность действий ?
VIpz3
 
Регистрация: 13.02.2017
Сообщений: 7

Добрый день. Подскажите пожалуйста, как после выполнения команды (command "pline" 0 0), сделать так, чтобы была отрисована полилиния длиной l под углом b, вида (arc или line) ?
Просмотров: 2282
 
Непрочитано 14.02.2017, 00:35
| 1 #2
skkkk


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


Я ничего не понял. А кто и как ей объяснит, какой должна быть длина l и угол b? Надо запросить их у пользователя или задать в коде? Угол b относительно чего? Что значит "полилиния вида arc или line"?
Может, если приложите чертеж, будет хоть немного понятнее?
Offtop: Если кто-то сможет решить правильно задачу с такой постановкой вопроса, я завтра иду на курсы нового русского языка.
skkkk вне форума  
 
Непрочитано 14.02.2017, 01:00
#3
Enik

ГИП
 
Регистрация: 07.06.2015
Сообщений: 1,254


Насколько я понял, нужно некоторое подобие полярной системы координат. Вообще-то это можно. Угол (относительно направления оси х) задаётся через "<" при вводе, ну а потом остаётся только ввести расстояние. Если для геодезии, с азимутами/направлениями - посложнее. Но я где-то видел такую команду. Завтра поищу.
Enik вне форума  
 
Непрочитано 14.02.2017, 03:49
#4
skkkk


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


Offtop: Enik, похоже мне пора подыскивать курсы
Только я вот понял, что вводить автор ничего не желают-с :
Цитата:
Сообщение от VIpz3 Посмотреть сообщение
чтобы была отрисована полилиния длиной l под углом b
skkkk вне форума  
 
Непрочитано 14.02.2017, 06:52
#5
csp


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Только я вот понял, что вводить автор ничего не желают-с
Ну и ... задача то уже выполнена.
Так что,

Цитата:
Сообщение от skkkk Посмотреть сообщение
Если кто-то сможет решить правильно задачу с такой постановкой вопроса, я завтра иду на курсы нового русского языка.
csp вне форума  
 
Автор темы   Непрочитано 14.02.2017, 07:56
#6
VIpz3


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


Извеняюсь за некорректный вопрос.
Все данные получаются из файла.
После инструкции (commad "pline" 0 0), программа просит длину затем угол, как через (command "pline") сказать угол и длину?
VIpz3 вне форума  
 
Непрочитано 14.02.2017, 11:14
1 | #7
Enik

ГИП
 
Регистрация: 07.06.2015
Сообщений: 1,254


Цитата:
Сообщение от VIpz3 Посмотреть сообщение
Все данные получаются из файла.
После инструкции (commad "pline" 0 0), программа просит длину затем угол, как через (command "pline") сказать угол и длину?
После command "pline" в лиспе можно это в виде параметров задать. В общем, читаем учебник. Или ждём, когда наши патриархи от программирования пожалуют.
Enik вне форума  
 
Непрочитано 14.02.2017, 11:40
1 | 1 #8
skkkk


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


Запрашиваем первую точку:
Код:
[Выделить все]
(setq pt1 (getpoint "\nПервая точка:"))
Запрашиваем угол в градусах (остается только вопрос, относительно чего?):
Код:
[Выделить все]
(setg ang (getreal "\nВведите угол:"))
Или берем его из файла (какого? txt? xls?)

Переводим угол в радианы:
Код:
[Выделить все]
(setg ang (* pi (/ ang 180.0)))
Запрашиваем длину
Код:
[Выделить все]
(setq dst (getdist "\nДлина:"))
Или опять же - из фалйа.

Вычисляем вторую точку:
Код:
[Выделить все]
(setq pt2 (polar pt1 ang dst))
Строим полилинию:
Код:
[Выделить все]
(command "_pline" pt1 pt2 "")
Без точного ТЗ результат - ХЗ
skkkk вне форума  
 
Непрочитано 14.02.2017, 12:12
1 | 1 #9
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


(setq pt1 '(0 0) l 50 ang 0.785398)
(vl-cmdf "_pline" pt1 (polar pt1 ang l) "") - линейная полилиния
(vl-cmdf "_pline" pt1 "_arc" (polar pt1 ang l) "") - дуга

ang - угол, заданный в радианах

Последний раз редактировалось roaa, 14.02.2017 в 12:27.
roaa вне форума  
 
Автор темы   Непрочитано 15.02.2017, 16:48
#10
VIpz3


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


Подскажите пожалуйста почему так:
Код:
[Выделить все]
 (entmod (cons '(62 . 50) (entget (entlast))))
код работает, а так
Код:
[Выделить все]
 (setq colour 50)
(entmod (cons '(62 . colour) (entget (entlast))))
не работет
VIpz3 вне форума  
 
Непрочитано 16.02.2017, 07:03
1 | 1 #11
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Пробуй так
Код:
[Выделить все]
 (setq colour 50)
(entmod (cons (cons 62 colour) (entget (entlast))))
roaa вне форума  
 
Автор темы   Непрочитано 17.02.2017, 14:46
#12
VIpz3


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


Подскажите пожалуйста, как получить идентификаторы последних 4 примитивов ?

Последний раз редактировалось VIpz3, 17.02.2017 в 16:38.
VIpz3 вне форума  
 
Непрочитано 17.02.2017, 14:56
#13
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от VIpz3 Посмотреть сообщение
Подскажите пожалуйста, как выбрать последние 4 созданных примитива, функционально, без рук?
Код:
[Выделить все]
 (setq num_str_list '("первый" "второй" "третий" "четвертый"))
(setq i 0)
(repeat	4
  (setq	lst (cons (entsel (strcat "\nВыберите функционально, без рук (и без головы) "
				  (nth i num_str_list)
				  " из последних созданных примитивов: "
			  )
		  )
		  lst
	    )
  )
  (setq i (1+ i))
)
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 17.02.2017 в 15:47.
Do$ вне форума  
 
Непрочитано 17.02.2017, 15:43
#14
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Только без рук трудно, надо еще и без головы.
Profan вне форума  
 
Непрочитано 17.02.2017, 15:47
#15
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Я с Вами согласен, уважаемый коллега! Внес исправления в код
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 17.02.2017, 19:37
#16
VIpz3


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


Подскажите пожалуйста, как получить идентификаторы последних 4 примитивов ?
VIpz3 вне форума  
 
Непрочитано 17.02.2017, 21:47
#17
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


https://google.gik-team.com/?q=autolisp+last+entities
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как выполнить при помощи команды pline следующую последовательность действий ?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается задать команды в acad.pgp VamBEER AutoCAD 3 22.11.2016 14:56
Прошу помощи с опредением решения конструкции печи. Michail Конструкции зданий и сооружений 15 06.02.2010 12:33
Подстанция скорой помощи (станция скорой помощи) Андрей kab Поиск литературы, чертежей, моделей и прочих материалов 2 05.02.2010 21:08
Отображение GRID при выполнении команды PAN REALTIME MAX-MAX AutoCAD 10 29.06.2009 18:43
Принудительный повтор команды. Makartetsky Программирование 12 18.11.2007 21:04