|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Разорвать окружность в одной точке
Регистрация: 10.02.2006
Сообщений: 373
|
||
Просмотров: 12695
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Почему? Указывается вторая точка равной первой при выполнении _.break, вот и всех делов.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Действительно нельзя., т.к после разрыва это будет уже дуга/ARC, а полный угол у дуги должен быть меньше 360 (так акад полагает)
Не понятно. правда, нафига оно может быть кому-то надо....
__________________
apel.fas |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
При ручном выполнении команды попасть в ту же точку невозможно. Так что действительно получается дуга с углом до 360
![]() А как такой вариант? Код:
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Привет. Есть утилитки G-Tools называются, там есть програмка, с помощью которой можно копировать с поворотом из заданной точки. Вроде здесь в загрузке была, если я ошибаюсь и ее нет, то напишите и я выложу.
__________________
Для ухода за пожилым программистом требуется приятная женщина, говорящая на FОRTRАN, BАSIС и С++ |
||||
![]() |
|
||||
Конструктор-машиностроитель Регистрация: 22.12.2005
С.-Петербург
Сообщений: 1,224
![]() |
Цитата:
![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
А если надо зацепиться не за квадрант?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Конструктор-машиностроитель Регистрация: 22.12.2005
С.-Петербург
Сообщений: 1,224
![]() |
Цитата:
|
|||
![]() |
|
||||
Регистрация: 11.09.2004
г. Гомель
Сообщений: 65
|
Цитата:
|
|||
![]() |
|
||||
Нашел интересный глюк, связанный с разорванными окружностями - дугами...
Рисуем произвольную дугу, выделяем, переходим в окно свойств и ставим начальный угол 0.0 конечный 359.999999999 Получаем дугу в форме круга. Проблема в том, что за узловые точки, мышкой, такая дуга не тянется... Акад 2004(en). |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Цитата:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Конструктор-машиностроитель Регистрация: 22.12.2005
С.-Петербург
Сообщений: 1,224
![]() |
Цитата:
|
|||
![]() |
|
||||
Регистрация: 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) |
|||
![]() |
|
||||
Архитектор Регистрация: 25.08.2003
Москва
Сообщений: 307
|
Цитата:
Очень удобная программа для построения спиралей 3D-полилинией с наглядным диалоговым интерфейсом для версий до 2007. Кто автор - не знаю. [ATTACH]1149765925.rar[/ATTACH] |
|||
![]() |