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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Выполнение команды "ПОВЕРНУТЬ"/"ROTATE" в LISP

Выполнение команды "ПОВЕРНУТЬ"/"ROTATE" в LISP

Ответ
Поиск в этой теме
Непрочитано 08.04.2016, 13:40 #1
Выполнение команды "ПОВЕРНУТЬ"/"ROTATE" в LISP
AlexZh
 
Регистрация: 23.09.2015
Сообщений: 146

Здравствуйте!

Скажите, как выполнить команду "ПОВЕРНУТЬ"?

Код:
[Выделить все]
 (defun c:rot_bl	(/ old_orthmode obj p1 p2 p3 p4)
  (setq old_orthmode (getvar "ORTHOMODE"))
  (setvar "ORTHOMODE" 0)
  (setq obj (car (entsel "\nВыберите объект:")))
  (setq p1 (getpoint "\nВыберите базу:"))
  (setq p2 (getpoint p1 "\nВыберите опорный отрезок:"))
  (setq p3 (getpoint "\nНачало отрезка выравнивания:"))
  (setq p4 (getpoint p3 "\nКонец отрезка выравнивания:"))
  (command "_.ROTATE" _p p1 "Опорный угол" p1 p2 "Точки" p3 p4)
  (setvar "ORTHOMODE" 0)
))

Последний раз редактировалось AlexZh, 08.04.2016 в 13:57.
Просмотров: 3688
 
Непрочитано 08.04.2016, 14:00
#2
Кулик Алексей aka kpblc
Moderator

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


В каком месте проблема?
http://forum.dwg.ru/showpost.php?p=271151&postcount=167
http://autolisp.ru/2010/03/04/localization/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.04.2016, 14:04
#3
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Код:
[Выделить все]
(defun c:rot_bl	(/ old_orthmode obj p1 p2 p3 p4)
  (setq old_orthmode (getvar "ORTHOMODE"))
  (setvar "ORTHOMODE" 0)
  (setq obj (car (entsel "\nВыберите объект:")))
  (setq p1 (getpoint "\nВыберите базу:"))
  (setq p2 (getpoint p1 "\nВыберите опорный отрезок:"))
  (setq p3 (getpoint "\nНачало отрезка выравнивания:"))
  (setq p4 (getpoint p3 "\nКонец отрезка выравнивания:"))
  (command "_.ROTATE" obj "" p1 "_r" p1 p2 "_p" p3 p4)
  (setvar "ORTHOMODE" old_orthmode)
)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 08.04.2016, 14:09
#4
AlexZh


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


Спасибо! Заработало!
AlexZh вне форума  
 
Непрочитано 08.04.2016, 14:59
#5
trushev


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


Цитата:
Сообщение от AlexZh Посмотреть сообщение
Заработало!
Учтите предупреждениеКулик Алексей aka kpblc, по объектной привязке.
trushev вне форума  
 
Непрочитано 08.04.2016, 16:21
#6
Profan


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


Не мешало бы здесь уточнить запросы программы. И нужные привязки временно включить.
Примерно так:
Код:
[Выделить все]
(defun c:rot_bl	(/ osm old_orthmode obj p1 p2 p3 p4)
  (setq osm (getvar "OSMODE"))
  (setvar "OSMODE" 33)
  (setq old_orthmode (getvar "ORTHOMODE"))
  (setvar "ORTHOMODE" 0)
  (setq obj (car (entsel "\nВыберите поворачиваемый объект:")))
  (setq p1 (getpoint "\nУкажите базовую точку поворота:"))
  (setq p2 (getpoint p1 "\nУкажите вторую точку поворачиваемого объекта:"))
  (setq p3 (getpoint "\nНачало отрезка выравнивания:"))
  (setq p4 (getpoint p3 "\nКонец отрезка выравнивания:"))
  (command "_.ROTATE" obj "" p1 "_r" p1 p2 "_p" p3 p4)
  (setvar "OSMODE" osm)
  (setvar "ORTHOMODE" old_orthmode)
(princ)
)
Profan вне форума  
 
Непрочитано 08.04.2016, 18:49
#7
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992


Вот такой лиспик есть, для выравнивания (поворота) блоков по линии, может пригодится..

Код:
[Выделить все]
 (defun c:align_blocks_line (/ ang ang1 ang0 ss ss2 en el p1 p2 u v ang tmp i n ul vl)
  (princ "\nВыберите отрезок, по которому будет выполняться выравнивание: ")
  (if (setq ss (ssget "_:S:E" '((0 . "LINE"))))
    (progn
      (setq el (entget (ssname ss 0)))
      (setq p1 (cdr (assoc 10 el))
            p2 (cdr (assoc 11 el))
      ) ;_ end of setq
      (if (> (car p1) (car p2))
        (progn
          (setq tmp (list p1 p2)
                p1  (last tmp)
                p2  (car tmp)
          ) ;_ end of setq
        ) ;_ end of progn
      ) ;_ end of if
      ;; (if (progn
      (setq ang (angle p1 p2))
      (princ "\nВыберите блоки для выравнивания: ")
      (if (setq ss2 (ssget '((0 . "Insert"))))
        (progn
          (setq n (sslength ss2)
                i 0
          ) ;_ end of setq
          (while (< i n)
            (setq block_name  (ssname ss2 i)
                  block_koord (list (car (cdr (assoc 10 (entget block_name)))) (caddr (assoc 10 (entget block_name))))
            ) ;_ end of setq
            (setq ang0 (* (cdr (assoc 50 (entget block_name))) (/ -180.0 pi)))
            (setq ang1 (* ang (/ 180.0 pi)))
            (command "_.rotate" block_name "" block_koord ang0)
            (command "_.rotate"
                     block_name
                     ""
                     (list (car (cdr (assoc 10 (entget block_name)))) (caddr (assoc 10 (entget block_name))))
                     ang1
            ) ;_ end of command
            (setq i (1+ i))
          ) ;_ end of while
        ) ;_ end of progn
      ) ;_ end of if
      ;; (if (progn
    ) ;_ end of progn
  ) ;_ end of if
  ;; (if (progn
  (princ)
Nike вне форума  
 
Непрочитано 10.04.2016, 11:46
#8
Profan


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


Цитата:
Сообщение от Nike Посмотреть сообщение
Вот такой лиспик есть, для выравнивания (поворота) блоков по линии, может пригодится..
Программа не доделана.
Profan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Выполнение команды "ПОВЕРНУТЬ"/"ROTATE" в LISP

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Создание дополнительных параметров Visibility Set в динамических блоках. Supermax Программирование 708 12.04.2021 14:54
DwgRuLispLib: Команда. Загрузка lisp файлов из указанной папки VVA Библиотека функций 7 15.02.2018 10:10
lisp команда смены слоя gesper LISP 9 28.03.2013 21:13
перестала работать команда lisp Nikolays LISP 11 27.01.2011 00:40