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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Разорвать окружность в одной точке

Разорвать окружность в одной точке

Ответ
Поиск в этой теме
Непрочитано 07.06.2006, 15:11 #1
Разорвать окружность в одной точке
vn
 
Регистрация: 10.02.2006
Сообщений: 373

Господа !
Как разорвать окружность в одной точке?(Break at point)
Или это в принципе невозможно?
Просмотров: 12695
 
Непрочитано 07.06.2006, 15:24
#2
Sopro

Конструктор-машиностроитель
 
Регистрация: 22.12.2005
С.-Петербург
Сообщений: 1,224
<phrase 1=


Невозможно.
Sopro вне форума  
 
Непрочитано 07.06.2006, 15:36
#3
Кулик Алексей aka kpblc
Moderator

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


Почему? Указывается вторая точка равной первой при выполнении _.break, вот и всех делов.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.06.2006, 15:38
#4
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


Действительно нельзя., т.к после разрыва это будет уже дуга/ARC, а полный угол у дуги должен быть меньше 360 (так акад полагает)
Не понятно. правда, нафига оно может быть кому-то надо....
__________________
apel.fas
Apelsinov вне форума  
 
Непрочитано 07.06.2006, 15:39
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>kpblcДуга должна быть меньше 360 градусов
VVA вне форума  
 
Непрочитано 07.06.2006, 15:45
#6
Кулик Алексей aka kpblc
Moderator

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


При ручном выполнении команды попасть в ту же точку невозможно. Так что действительно получается дуга с углом до 360
А как такой вариант?
Код:
[Выделить все]
(vla-addarc (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-3d-point '(0. 0. 0.)) 100.0 0.0 (- (* 2 pi) 1e-6))
С наскоку понять, что это не окружность, невозможно
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.06.2006, 16:28
#7
vn


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


Насчет "нафига это нужно".
Отделить половину окружности и отодвинуть ,например.
Можно, конечно, сделать трим а потом скопировать, перевернуть и отодвинуть, но это долго.
Что делать с программой в Лиспе? Не знаю и не сумею без инструкции.
vn вне форума  
 
Непрочитано 07.06.2006, 16:34
#8
ki

Constructor
 
Регистрация: 28.09.2005
SPb
Сообщений: 689
<phrase 1= Отправить сообщение для ki с помощью Skype™


Привет. Есть утилитки G-Tools называются, там есть програмка, с помощью которой можно копировать с поворотом из заданной точки. Вроде здесь в загрузке была, если я ошибаюсь и ее нет, то напишите и я выложу.
__________________
Для ухода за пожилым программистом требуется приятная женщина, говорящая на FОRTRАN, BАSIС и С++
ki вне форума  
 
Непрочитано 07.06.2006, 16:51
#9
Sopro

Конструктор-машиностроитель
 
Регистрация: 22.12.2005
С.-Петербург
Сообщений: 1,224
<phrase 1=


Цитата:
Сообщение от vn
Можно, конечно, сделать трим а потом скопировать, перевернуть и отодвинуть, но это долго.
Провести отрезок, зацепившись за квадрант, обрезать половину, отзеркалить то, что осталось - все это укладывается в полторы-две секунды. Непростительно долго, а главное неправильно, иначе какой же это САПР?! Нет, друзья, лучше за час написать и отладить программку на лиспе, загрузить ее, вызвать с командной строки (главное не забыть как) и наслаждаться автоматизацией.
Sopro вне форума  
 
Непрочитано 07.06.2006, 16:56
#10
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,342


toolpack-ом в 2D-полилинию сконвертирую и ее рви как хочешь
asys вне форума  
 
Непрочитано 07.06.2006, 16:58
#11
Кулик Алексей aka kpblc
Moderator

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


А если надо зацепиться не за квадрант?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.06.2006, 17:13
#12
Sopro

Конструктор-машиностроитель
 
Регистрация: 22.12.2005
С.-Петербург
Сообщений: 1,224
<phrase 1=


Цитата:
Сообщение от kpblc
А если надо зацепиться не за квадрант?
Тогда процедура удлиняется еще на целых полсекунды, т.к. надо будет зацепиться за некую произвольную точку на окружности и протянуть отрезок не "насквозь", а лишь до центра и потом продлить до диаметрально противоположной точки...
Sopro вне форума  
 
Автор темы   Непрочитано 07.06.2006, 20:23
#13
vn


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


А что плохого в том, чтобы "наслаждаться автоматизацией"?
Вот как ее сделать?
vn вне форума  
 
Непрочитано 07.06.2006, 20:24
#14
Cnapmak


 
Регистрация: 11.09.2004
г. Гомель
Сообщений: 65


Цитата:
Сообщение от Apelsinov
Не понятно. правда, нафига оно может быть кому-то надо....
Ну, например, пойти дальше. Построить пружину. Т.е. рвем окружность, получаем дугу угловым размером 360 градусов, преобразовываем в полилиню, меняем координату Z одного из концов линии на величину шага витка пружины, копируем n раз (сколько витков нужно), совмещая начало одной линии с концом другой, объединяем полилинии в одну, с одного из концов помещаем круг диаметром проволоки и выдавливаем его по полилинии. Получим пружину. Ведь нормальной проги для построения 3D пружин я пока не нашел.
Cnapmak вне форума  
 
Непрочитано 07.06.2006, 22:25
#15
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Нашел интересный глюк, связанный с разорванными окружностями - дугами...
Рисуем произвольную дугу, выделяем,
переходим в окно свойств и ставим
начальный угол 0.0
конечный 359.999999999
Получаем дугу в форме круга.
Проблема в том, что за узловые точки, мышкой, такая дуга не тянется...
Акад 2004(en).
Елпанов Евгений вне форума  
 
Непрочитано 08.06.2006, 08:53
#16
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Cnapmak
Цитата:
Сообщение от Apelsinov
Не понятно. правда, нафига оно может быть кому-то надо....
Ну, например, пойти дальше. Построить пружину. Т.е. рвем окружность, получаем дугу угловым размером 360 градусов, преобразовываем в полилиню, меняем координату Z одного из концов линии на величину шага витка пружины, копируем n раз (сколько витков нужно), совмещая начало одной линии с концом другой, объединяем полилинии в одну, с одного из концов помещаем круг диаметром проволоки и выдавливаем его по полилинии. Получим пружину. Ведь нормальной проги для построения 3D пружин я пока не нашел.
Была где-то, даже ссылка мелькала. Но лично мне такая задача не особо требуется. Попробуй поискать. Я помню, что в той ветке рассматривалось несколько вариантов - двигать солид с объединением или рисовать сеть. Потом выяснили, что сеть на порядки более экономична.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.06.2006, 09:13
#17
Sopro

Конструктор-машиностроитель
 
Регистрация: 22.12.2005
С.-Петербург
Сообщений: 1,224
<phrase 1=


Цитата:
Сообщение от vn
А что плохого в том, чтобы "наслаждаться автоматизацией"?
Вот как ее сделать?
Да ничего плохого в этом нет. Главное помнить о принципе разумной достаточности и в стремлении все автоматизировать не доходить до абсурда.
Sopro вне форума  
 
Автор темы   Непрочитано 08.06.2006, 12:28
#18
vn


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


Насчет 3Д спирали. Она уже есть в 2007.
А программку 3D spiral для других версий мне подкорректировали на этом форуме, точно не помню кто, помоему kpblc или Александр Ривилис.
Смотри тему 3D spiral. Очень четко работает.
Ну вот преодолел лень и нашел

;;; 3DSPIRAL1.LSP
;;; --------------------------------------------------------------------------;
;;; ;;; This program constructs a spiral. It can be loaded and called
;;; by typing either "spiral", "3dspiral1" or the following:
;;; (cspiral <# rotations> <base point> <horiz growth per rotation>
;;; <points per circle> <start radius>
;;; <vert growth per rotation>).
;;;
;;; --------------------------------------------------------------------------;

(defun myerror (s) ; If an error (such as CTRL-C) occurs
; while this command is active...
(if (/= s "Function cancelled")
(princ (strcat "\nError: " s))
) ;_ end of if
(setvar "cmdecho" ocmd) ; Restore saved modes
(setvar "blipmode" oblp)
(setq *error* olderr) ; Restore old *error* handler
(princ)
) ;_ end of defun

(defun cspiral (ntimes
bpoint
hfac
lppass
strad
vfac
/
ang
dist
tp
ainc
dhinc
dvinc
circle
dv
)

(setvar "blipmode" 0) ; turn blipmode off
(setvar "cmdecho" 0) ; turn cmdecho off
(setq circle (* PI 2.0))
(setq ainc (/ circle lppass))
(setq dhinc (/ hfac lppass))
(if vfac
(setq dvinc (/ vfac lppass))
) ;_ end of if
(setq ang 0.0)
(if vfac
(setq dist strad
dv 0.0
) ;_ end of setq
(setq dist 0.0)
) ;_ end of if
(if vfac
(command "_.3dpoly") ; start spiral ...
(command "_.pline" "_none" bpoint) ; start spiral from base point and...
) ;_ end of if
(repeat (fix (+ ntimes 1e-6))
(repeat lppass
(setq tp (polar bpoint ang dist))
(setq ang (+ ang ainc))
(setq dist (+ dist dhinc))
(if vfac
(setq tp (list (car tp) (cadr tp) (+ dv (caddr tp)))
dv (+ dv dvinc)
) ;_ end of setq
) ;_ end of if
(command "_none" tp) ; continue to the next point...
) ;_ end of repeat
) ;_ end of repeat
(setq nlast (abs (- ntimes (fix ntimes))))
(repeat (1+ (fix (+ 1e-6 (* lppass nlast))))
(setq tp (polar bpoint ang dist))
(setq ang (+ ang ainc))
(setq dist (+ dist dhinc))
(if vfac
(setq tp (list (car tp) (cadr tp) (+ dv (caddr tp)))
dv (+ dv dvinc)
) ;_ end of setq
) ;_ end of if
(command "_none" tp) ; continue to the next point...
) ;_ end of repeat
(command "") ; until done.
(princ)
) ;_ end of defun

;;;
;;; Interactive spiral generation
;;;

(defun C:SPIRAL1 (/ olderr ocmd oblp nt bp cf lp)
;;;;(setq olderr *error*
;;;; *error* myerror)
(setq ocmd (getvar "cmdecho"))
(setq oblp (getvar "blipmode"))
(setvar "cmdecho" 0)
(initget 1) ; bp must not be null
(setq bp (getpoint "\nCenter point: "))
(initget 7) ; nt must not be zero, neg, or null
(setq nt (getreal "\nNumber of rotations: "))
(initget 3) ; cf must not be zero, or null
(setq cf (getdist "\nGrowth per rotation: "))
(initget 6) ; lp must not be zero or neg
(setq lp (getint "\nPoints per rotation <30>: "))
(cond ((null lp) (setq lp 30)))
(cspiral nt bp cf lp nil nil)
(setvar "cmdecho" ocmd)
(setvar "blipmode" oblp)
(setq *error* olderr) ; Restore old *error* handler
(princ)

) ;_ end of defun

;;;
;;; Interactive spiral generation
;;;

(defun C:3DSPIRAL1 (/ olderr ocmd oblp nt bp hg vg sr lp)
;;;;(setq olderr *error*
;;;; *error* myerror)
(setq ocmd (getvar "cmdecho"))
(setq oblp (getvar "blipmode"))
(setvar "cmdecho" 0)
(initget 1) ; bp must not be null
(setq bp (getpoint "\nCenter point: "))
(initget 7) ; nt must not be zero, neg, or null
(setq nt (getreal "\nNumber of rotations: "))
(initget 7) ; sr must not be zero, neg, or null
(setq sr (getdist bp "\nStarting radius: "))
(initget 1) ; cf must not be zero, or null
(setq hg (getdist "\nHorizontal growth per rotation: "))
(initget 3) ; cf must not be zero, or null
(setq vg (getdist "\nVertical growth per rotation: "))
(initget 6) ; lp must not be zero or neg
(setq lp (getint "\nPoints per rotation <30>: "))
(cond ((null lp) (setq lp 30)))
(cspiral nt bp hg lp sr vg)
(setvar "cmdecho" ocmd)
(setvar "blipmode" oblp)
(setq *error* olderr) ; Restore old *error* handler
(princ)

) ;_ end of defun

;;; --------------------------------------------------------------------------;
(princ "\n\tC:SPIRAL1 and C:3DSPIRAL1 loaded. ")
(princ)
vn вне форума  
 
Непрочитано 08.06.2006, 15:25
#19
Андрей С.

Архитектор
 
Регистрация: 25.08.2003
Москва
Сообщений: 307


Цитата:
преобразовываем в полилиню, меняем координату Z одного из концов линии на величину шага витка пружины
Это невозможно. Все вершины полилинии имеют одну Z-координату. А 3D-полилиния не имеет дуговых сегментов.
Очень удобная программа для построения спиралей 3D-полилинией с наглядным диалоговым интерфейсом для версий до 2007. Кто автор - не знаю.
[ATTACH]1149765925.rar[/ATTACH]
Андрей С. вне форума  
 
Непрочитано 08.06.2006, 19:45
#20
Cnapmak


 
Регистрация: 11.09.2004
г. Гомель
Сообщений: 65


vn
Спасибо! Опробовал. Классный лиспик.
Cnapmak вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Разорвать окружность в одной точке