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

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

LISP. Вставка блока из чертежа исходя из двух параметров (длина и ширина)

Ответ
Поиск в этой теме
Непрочитано 17.05.2016, 07:49 #1
LISP. Вставка блока из чертежа исходя из двух параметров (длина и ширина)
Kairat.iskakov
 
Регистрация: 13.10.2015
Сообщений: 3

Имеется файл LISP вставки блока по одному параметру (длина).

Код:
[Выделить все]
(defun c:PP()
  ; Pobierz pkt 1 i pkt 2
  (setq odl 0)
  (setq p1 (getpoint "\nPodaj punkt 1:"))
  (setq p2 (getpoint p1 "\nPodaj punkt 2:"))
  ; Zmierz odlegіosc i kat
  (setq odl (distance p1 p2))
  (setq odl (+ odl 0.000001)) ;nieczyste zagranie ;)

  (setq kat (angle p1 p2))
  (setq kat (atof (angtos kat 0 2)))
  (princ "\n--")
  (princ odl)

  ; Dobierz pіyte
  (cond
    ((>= odl 8000.0) (command "_insert" "c:/CBP Cad/BLOKI/WALL 8000mmPR" "_non" p1 1 1 kat))
    ((>= odl 7950.0) (command "_insert" "c:/CBP Cad/BLOKI/WALL 7950mmPR" "_non" p1 1 1 kat))
    ((>= odl 7900.0) (command "_insert" "c:/CBP Cad/BLOKI/WALL 7900mmPR" "_non" p1 1 1 kat))
    ((>= odl 7850.0) (command "_insert" "c:/CBP Cad/BLOKI/WALL 7850mmPR" "_non" p1 1 1 kat))
    (t ())
    )


  (princ)  
  )

(defun c:PZ()
  ; Pobierz pkt 1 i pkt 2
  (setq odl 0)
  (setq p1 (getpoint "\nPodaj punkt 1:"))
  (setq p2 (getpoint p1 "\nPodaj punkt 2:"))
  ; Zmierz odlegіosc i kat
  (setq odl (distance p1 p2))
  (setq odl (+ odl 0.000001)) ;nieczyste zagranie ;)

  (setq kat (angle p1 p2))
  (setq kat (atof (angtos kat 0 2)))
  (princ "\n--")
  (princ odl)
Процесс таков: запуск lisp, указание начальной и конечной точки, отсюда исходит длина участка и идет подбор согласно данный длины и последующая вставка блока из списка заданных блоков.
Прошу помочь тех кто знает, какие команды нужны для вставки блоков по двум параметрам (длина и ширина).
Просмотров: 2034
 
Непрочитано 17.05.2016, 08:54
#2
Кулик Алексей aka kpblc
Moderator

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


А в чем проблема? Ну укажешь повторно ширину, и выбирай блоки какие надо.
Offtop: Хотя лично мне такой код, мягко говоря, сильно не нравится.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.05.2016, 09:54
#3
Сергей812


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


Код:
[Выделить все]
 ((>= odl 8000.0) (command "_insert" "c:/CBP Cad/BLOKI/WALL 8000mmPR" "_non" p1 1 1 kat))
(>= odl 8000.0) - добавляете сюда еще одно логическое условие (по ширине) и логическое И на эти два условия.

p.s. да и не не мешало бы объявить локальные переменные.
Сергей812 вне форума  
 
Автор темы   Непрочитано 17.05.2016, 09:58
#4
Kairat.iskakov


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


Не совсем понял, поэтому постараюсь более объяснить задачу: есть файлы с блоками на определенные длины (как видно из кода: на 8000мм, 7950мм, 7900мм и тд), необходим LIPS либо добавить команды в существующий, которые будут помимо вышеуказанной длины запрашивать и ширину, а после вставлять необходимый блок из заранее созданных файлов.

----- добавлено через ~5 мин. -----
Сергей812, не могли бы вы ткнуть носом где можно узнать как делать именно то, о чем вы говорите?)

----- добавлено через ~11 мин. -----
Сергей812, получатся нужно задать третью точку (setq p3 (getpoint...)?
Kairat.iskakov вне форума  
 
Непрочитано 17.05.2016, 11:45
#5
Сергей812


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


Цитата:
Сообщение от Kairat.iskakov Посмотреть сообщение
получатся нужно задать третью точку (setq p3 (getpoint...)?
да, затем считаете расстояние между базовой точкой и третьей точкой. Затем читаете хотя бы это про логические функции - т.е. должно получиться условие И, а внутри него старое условие на длину и новое - на ширину. При совпадении двух условий выполняется соответствующая команда вставки _insert
Сергей812 вне форума  
 
Автор темы   Непрочитано 17.05.2016, 13:35
#6
Kairat.iskakov


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


Сергей812, благодарю за помощь! Еще вопрос: расстояние между базовой точкой и третьей описывать как "(setq odl (distance p1 p3))", а логическую функцию И вписывать после "(cond"?

----- добавлено через ~3 мин. -----
Сергей812, я тут подумал, что если оставить LISP как есть, но вписывать в логическую функцию ">=" расстояние по диагонали?)
Kairat.iskakov вне форума  
 
Непрочитано 17.05.2016, 15:04
#7
Fedorino

автоматизация и организация черчения
 
Регистрация: 17.11.2009
Sterlitamak
Сообщений: 135


Не знаю условий по ширине, но как то так

Код:
[Выделить все]
 (defun c:PP (/ odl oshr kat p1 p2 p3)
  ; Pobierz pkt 1 i pkt 2
  (setq odl 0)
  (setq p1 (getpoint "\nPodaj punkt 1:"))
  (setq p2 (getpoint p1 "\nPodaj punkt 2:"))
  (setq p3 (getpoint p1 "\nPodaj punkt 3:"))
  ; Zmierz odlegіosc i kat
  (setq odl (+ (distance p1 p2) 0.000001))
  (setq oshr (+ (distance p1 p3) 0.000001))

  (setq kat (angle p1 p2))
  (setq kat (atof (angtos kat 0 2)))
  (princ "\n--")
  (princ odl)

  ; Dobierz pіyte
  (cond
    ((and (>= odl 8000.0) (>= oshr 8000.0)) (command "_insert" "c:/CBP Cad/BLOKI/WALL 8000mmPR" "_non" p1 1 1 kat))
    ((and (>= odl 7950.0) (>= oshr 7950.0)) (command "_insert" "c:/CBP Cad/BLOKI/WALL 7950mmPR" "_non" p1 1 1 kat))
    ((and (>= odl 7900.0) (>= oshr 7900.0)) (command "_insert" "c:/CBP Cad/BLOKI/WALL 7900mmPR" "_non" p1 1 1 kat))
    ((and (>= odl 7850.0) (>= oshr 7850.0)) (command "_insert" "c:/CBP Cad/BLOKI/WALL 7850mmPR" "_non" p1 1 1 kat))
    (t ())
   )


  (princ)  
)
__________________
слесарь САПР
Fedorino вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Вставка блока из чертежа исходя из двух параметров (длина и ширина)

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA. Вставка динамического блока с выбором параметров из lookUp Table AndreyAn Программирование 7 13.12.2017 22:10