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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autocad lisp проблема с командой intersect

Autocad lisp проблема с командой intersect

Ответ
Поиск в этой теме
Непрочитано 08.05.2023, 17:13 #1
Autocad lisp проблема с командой intersect
Fadwer
 
Регистрация: 11.04.2023
Сообщений: 5

Доброго времени суток, пишу программу на лиспе, сам новичок, и возникла следующая проблема. Объект созданный с помощью команды intersect то ли не запоминается в setq, то ли не объединяется командой union. Необходимо это, как-то решить, чтобы объединялось, мб знает кто, как решить этот вопрос?

Код:
[Выделить все]
 (command "_intersect" cil0 rect0 "")
(setq rect7 (entlast)) ;
(command "_union" rect1 cil2 cil4 rect7 "")

Вот весь код программы 

(defun st ()
(setq D 50.0) 
(setq D3 46)
(setq R3 (/ D3 2))
(setq H4 2)
(setq R (/ D 2))
(setq H0 6.5)
(setq L1 41.0)
(setq H1 6.0)
(setq P 3.2)
(setq H2 12)
(setq D1 51.0)
(setq R1 (/ D1 2))
(setq pt1 (list (/ P 2) R1)
    pt2 (list H2 (- R1 H1)))
(setq H3 9)
(setq bpt (list 0 0 0))
(command "_rectang" pt1 pt2)    
(command "_extrude" (entlast) "" H3)
(setq rect0 (entlast))
;;;(command "_.filletedge" "_r" 2 (mapcar '+ (list H2 (- R1 H1) H3) bpt) "") 
(command "_.cylinder" bpt R H3)
(setq cil0 (entlast))
 
(command "_.cylinder" bpt R H0)
(setq cil1 (entlast))
(command "_rectang" (list (/ P 2)(- 0 R))(list R R))
(command "_extrude" (entlast) "" H0)
(command "_intersect" cil1 (entlast) "")
(setq polcil1 (entlast))
(command "_.cylinder" bpt R3 H4)
(setq cil6 (entlast))
(command "_rectang" (list (+ (/ P 2) 2) (- 0 R3))(list R3 R3))
(command "_extrude" (entlast) "" H4)
(command "_intersect" cil6 (entlast) "")
(setq polcil2 (entlast))
 
(command "_ucs" (list 0 (+ 0 R1)) "")
(command "_ucs" "x" 90)
(command "_.cylinder" '(0 10) 4.5 H1)
(setq cil2 (entlast))
(command "_ucs" "x" -90)
  
(command "_ucs" (list 0 (- 0 (+ H1 (/ (- L1 (* 2 H1)) 2.0)))) "") 
(command "_.mirror3D" rect0 "" "_ZX" (mapcar '+ (list 0 0 0) bpt) "_No")
(setq rect1 (entlast))
(command "_.mirror3D" cil2 "" "_ZX" (mapcar '+ (list 0 0 0) bpt) "_No")
(setq cil4 (entlast))

(command "_intersect" cil0 rect0 "")
(setq rect7 (entlast)) 
(command "_union" rect1 cil2 cil4 rect7 "")
    )
(defun c:st ()
  (st))

Последний раз редактировалось Кулик Алексей aka kpblc, 08.05.2023 в 18:30.
Просмотров: 769
 
Автор темы   Непрочитано 08.05.2023, 23:30
#2
Fadwer


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


Через командную строку в лиспе посмотрел, выдает имя этому примитиву. А при построении в autocad пишет следующее:

Команда: _union
Выберите объекты: найдено: 1
Выберите объекты: найдено: 1, всего: 2
Выберите объекты: найдено: 1, всего: 3
Выберите объекты: найдено: 1 (1 повторно), всего: 3
Fadwer вне форума  
 
Непрочитано 09.05.2023, 08:54
| 1 #3
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 470


Так посмотри, какое имя примитива дублируется...
И в каких переменных оно записано.
Типа (print rect1) перед вызовом union.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Автор темы   Непрочитано 09.05.2023, 12:24
#4
Fadwer


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


_$ print rect2
#<SUBR @000000cbb91ae700 PRINT>
<Имя объекта: 7ff6d6c33550>
_$ print rect4
#<SUBR @000000cbb91ae700 PRINT>
<Имя объекта: 7ff6d6c335e0>
_$ print cil4
#<SUBR @000000cbb91ae700 PRINT>
<Имя объекта: 7ff6d6c335e0>
_$ print cil5
#<SUBR @000000cbb91ae700 PRINT>
<Имя объекта: 7ff6d6c33620>

Дублируется rect4 и cil4, а как это исравить?
Fadwer вне форума  
 
Непрочитано 09.05.2023, 13:10
#5
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 470


Сорри, в программе я вижу:

Цитата:
(command "_union" rect1 cil2 cil4 rect7 "")
При чем здесь:

Цитата:
Дублируется rect4 и cil4, а как это исравить?
т.е. приведённые значения rect4, rect2, cil5 ?
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Автор темы   Непрочитано 09.05.2023, 13:41
#6
Fadwer


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


Забыл изменить код на форуме. Пока пытался понять в чём проблема, немного его поменял. Но сути не меняет. Что в старом, что в новом проблема при объединении. Один элемент дублируется

Код:
[Выделить все]
 (defun stvor ()
(setq D 50.0) 
(setq D3 46)
(setq R3 (/ D3 2))
(setq H4 2)
(setq R (/ D 2))
(setq H0 6.5)
(setq L1 41.0)
(setq H1 6.0)
(setq P 3.2)
(setq H2 12)
(setq D1 51.0)
(setq R1 (/ D1 2))
(setq pt1 (list (/ P 2) R1)
	pt2 (list H2 (- R1 H1)))
(setq H3 9)
(setq bpt (list 0 0 0))
;;;(command "_.cylinder" bpt R H3)
;;;(setq cil0 (entlast))
;;;(command "_intersect" cil0 rect0 "")
;;;(setq rect7 (entlast))
  
;;;(command "_.cylinder" bpt R H0)
;;;(setq cil1 (entlast))
;;;(command "_rectang" (list (/ P 2)(- 0 R))(list R R))
;;;(command "_extrude" (entlast) "" H0)
;;;(command "_intersect" cil1 (entlast) "")
;;;(setq polcil1 (entlast))
;;;(command "_.cylinder" bpt R3 H4)
;;;(setq cil2 (entlast))
;;;(command "_rectang" (list (+ (/ P 2) 2) (- 0 R3))(list R3 R3))
;;;(command "_extrude" (entlast) "" H4)
;;;(command "_intersect" cil2 (entlast) "")
;;;(setq polcil2 (entlast))

(command "_rectang" pt1 pt2)	
(command "_extrude" (entlast) "" H3)
(setq rect1 (entlast))
(command "_.cylinder" bpt R H3)
(setq cil3 (entlast))
(command "_intersect" cil3 rect1 "")
(setq rect2 (entlast))

(command "_rectang" pt1 pt2)	
(command "_extrude" (entlast) "" H3)
(setq rect3 (entlast))  

(command "_ucs" (list 0 (+ 0 R1)) "")
(command "_ucs" "x" 90)
(command "_.cylinder" '(0 10) 4.5 H1)
(setq cil4 (entlast))
;(command "_.cylinder" '(0 10) 3 D1)
;(setq cil3 (entlast))
(command "_ucs" "x" -90)

  
(command "_ucs" (list 0 (- 0 (+ H1 (/ (- L1 (* 2 H1)) 2.0)))) "") 
(command "_.mirror3D" rect3 "" "_ZX" (mapcar '+ (list 0 0 0) bpt) "_Yes")
(setq rect4 (entlast))
(command "_.mirror3D" cil4 "" "_ZX" (mapcar '+ (list 0 0 0) bpt) "_No")
(setq cil5 (entlast))  
;;;(command "_.mirror3D" cil3 "" "_ZX" (mapcar '+ (list 0 0 0) bpt) "_No")
;;;(setq cil5 (entlast))

;(command "_union" rect2 cil4 "")
;(command "_union" rect4 cil5 "")
    )
(defun c:stvor ()
  (stvor))

Последний раз редактировалось Кулик Алексей aka kpblc, 09.05.2023 в 18:30.
Fadwer вне форума  
 
Непрочитано 09.05.2023, 17:25
1 | #7
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 470


Навскидку:

Цитата:
(command "_.mirror3D" rect3 "" "_ZX" (mapcar '+ (list 0 0 0) bpt) "_Yes")
(setq rect4 (entlast))
Команда "_.mirror3D" с опцией "_Yes" не создает новый элемент чертежа, а
модифицирует имеющийся. Поэтому в переменной rect4 сейчас что угодно
(вероятно, один из созданных ранее цилиндров), но только не "свежеотзеркаленный"
элемент.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 09.05.2023, 17:39
1 | #8
Кулик Алексей aka kpblc
Moderator

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


Я бы серьезно задумался на предмет использования vla-методов для создания / удаления / ... твердых тел.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.05.2023, 19:23
#9
Fadwer


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


Когда-нибудь я моет и дойду до использования vla-методов...
Вообщем изменил код так, что rect3 будет строиться без отображения с удалением. Может есть более изысканные методы решения данного вопроса, но объединить получилось

----- добавлено через 45 сек. -----
(command "_ucs" (list 0 (- 0 (+ H1 (/ (- L1 (* 2 H1)) 2.0)))) "")
;;;(command "_.mirror3D" rect3 "" "_ZX" (mapcar '+ (list 0 0 0) bpt) "_Yes")
;;;(setq rect3 (entlast))
(command "_.mirror3D" cil4 "" "_ZX" (mapcar '+ (list 0 0 0) bpt) "_No")
(setq cil5 (entlast))
;;;(command "_.mirror3D" cil3 "" "_ZX" (mapcar '+ (list 0 0 0) bpt) "_No")
;;;(setq cil5 (entlast))
(command "_ucs" (list 0 (- 0 (+ H1 (/ (- L1 (* 2 H1)) 2.0)))) "")
(command "_rectang" (list (/ P 2) 0) (list H2 H1))
(command "_extrude" (entlast) "" H3)
(setq rect3 (entlast))

(command "_union" rect2 cil4 cil5 rect3 "")

----- добавлено через ~2 мин. -----
Всем спасибо
Fadwer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autocad lisp проблема с командой intersect

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Плагин создания кабельных линий и генерации КЖ раздела КИПиА. Протестировано на AutoCAD 2015...2022 и офис 2013...2019. NanoCAD 23 petro_f Готовые программы 230 13.12.2023 22:10
LISP. Плагин сборки в чертёж отмеченных областей из других файлов чертежей, с разбивкой объектов MagiCAD и SPDS. Протестировано в AutoCAD 2015, 2018 MagiCAD2016 в AutoCAD 2015 petro_f Готовые программы 20 28.07.2020 14:21
Проблема с переключением видеоадаптеров в AutoCAD 11/12 nikitaryabko AutoCAD 6 08.01.2012 15:47
проблема с написанием программы на Lisp Voyager LISP 9 07.04.2010 10:12
Проблема с XREF в Autocad 2005(2004). Помогите, кто знает. 0leg AutoCAD 10 13.01.2006 17:53