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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Укоротить сложный 3d объект

Укоротить сложный 3d объект

Ответ
Поиск в этой теме
Непрочитано 17.11.2010, 14:29 #1
Укоротить сложный 3d объект
Борисарх
 
веб-мастер
 
Регистрация: 17.11.2010
Сообщений: 14

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

Осваиваю 2010 Акад. Скажите, можно ли одной командой изменить вертикальный размер спроектированного шкафа, уменьшив высоту вертикальных стенок?

С уважением, Борис
Просмотров: 2606
 
Непрочитано 17.11.2010, 14:33
#2
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


без команд можно. Выбрать нужные подобъекты тел (Ctrl+ЛКМ), выделить их ручки и переместить (подобно редактированию за ручки плоских объектов)
Хмурый вне форума  
 
Непрочитано 17.11.2010, 14:45
#3
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Борисарх Посмотреть сообщение
Здравствуйте!
Осваиваю 2010 Акад. Скажите, можно ли одной командой изменить вертикальный размер спроектированного шкафа, уменьшив высоту вертикальных стенок?
С уважением, Борис
Честно говоря, не знаю, есть ли в 2010 Акад примитив "шкаф".. Борисарх, ты б уточнил, из чего сей шкаф создан, - тела, поверхности, каркас..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 17.11.2010, 20:43
#4
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Борисарх,
Спасибо Денису Флюстикову!!!, я думаю как раз то что тебе надо:
Код:
[Выделить все]
;|==================================================*==
Растяжение/сжатие 3D тел в указанной плоскости на заданную величину
Программа Дениса Флюстикова "Stretch3D_Den" от 23.09.08:
- Исправлена работа со составными 3D телами
- Более удобный выбор 3D тел (обрабатываются только те тела,
  которые находятся на указанной стороне растяжения/сжатия)
- Исправлена работа при заблокированном активном слое
Попытка сделать по просьбе Владимира Мадюшкина аналог программы
"QD3D STRETCH", триал версия предсталена на
http://www.cadopolis.com/autocad_addo...etch.shtml
Программа тестировалась на AutoCAD 2008/09
Макрос для кнопки:
^C^C^P(load "Stretch3D_Den");Stretch3D_Den
Замечания и предложения по адресу fd-@mail.ru
==================================================*==|;
(defun C:Stretch3D_Den (/ *error* cecolor layer osmode
         aa1 aa2 aa3 aa4 aa5 aa6 aa7 aa8 aa9)
(setq cecolor (getvar "CECOLOR")
      layer (cdr (assoc 70 (tblsearch "Layer" (getvar "CLAYER"))))
      osmode (getvar "OSMODE")
      aa1 (getvar "VIEWDIR"))
(if (and (equal (car aa1) 0 0.00001)
    (equal (cadr aa1) 0 0.00001)
    (> (caddr aa1) 0))(progn
(if (setq aa1 (ssget "_i" '((0 . "3DSOLID"))))
(princ (strcat "\nВыбрано объектов: " (itoa (sslength aa1))))(progn
(princ "\nВыбор 3D тел для преоразования")
(setq aa1 (ssget '((0 . "3DSOLID"))))
))
(if aa1
(if (setq aa2 (getpoint "\nПервая точка плоскости растяжения/сжатия:"))
(if (setq aa3 (getpoint aa2 "\nВторая точка плоскости (плоскость перпендикулярна XY):"))(progn
(grdraw aa2 aa3 7)
(vl-load-com)
(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
(setvar "CMDECHO" 0)
(defun *error* (msg)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
(if (and (>= (atof (getvar "ACADVER")) 16.2)(< (atof (getvar "ACADVER")) 17.1))
(vla-sendcommand (vla-get-activedocument
(vlax-get-acad-object)) "_.undo 1 ")
(command nil nil nil nil "_.undo" 1))
(princ "\nВыход во время обработки данных\n")
)
(command "_.undo" "_m"
    "_.ucs" "_z" aa2 aa3)
(setvar "ORTHOMODE" 1)
(initget 1)
(if (vl-catch-all-error-p
(setq aa4 (vl-catch-all-apply 'getpoint
(list "\nПервая точка вектора, определяющая сторону растяжения/сжатия:"))))
(setq aa4 nil)(progn
(initget 1)
(if (vl-catch-all-error-p
(setq aa5 (vl-catch-all-apply 'getpoint
(list aa4 "\nВторая точка вектора, определяющая растяжение или сжатие и их величину:"))))
(setq aa4 nil)
(setq aa7 (trans (mapcar '+ aa4 '(0 0)) 1 0)
      aa5 (trans (mapcar '+ aa5 '(0 0)) 1 0)
      aa4 (distance aa7 aa5))
)))
(redraw)
(command "_.undo" "_b")
(if aa4 (progn
(setq aa7 (trans aa7 0 1)
      aa5 (trans aa5 0 1))
(if (> (sin (angle aa2 aa3)) 0)
(setq aa6 aa2 aa2 aa3 aa3 aa6))
(if (> (sin (- (angle aa2 aa3)(angle aa2 aa7))) 0)
(setq aa6 aa2 aa2 aa3 aa3 aa6))
(if (> (distance aa2 aa7)(distance aa2 aa5))
(setq aa4 (- aa4)))
(setq aa9 (polar '(0 0 0) (+ (angle aa2 aa3)(/ pi 2)) aa4)
      aa5 (sslength aa1))
(setvar "OSMODE" 0)
(if (eq layer 4)(command "_.layer" "_u" (getvar "CLAYER") ""))
(while (> aa5 0)
(setq aa5 (1- aa5)
      aa6 (ssname aa1 aa5)
      aa7 (entlast)
      aa8 (entget aa6))
(while (entnext aa7)
(setq aa7 (entnext aa7)))
(if (/= (cdr (assoc 70 (tblsearch "Layer" (cdr (assoc 8 aa8))))) 4)(progn
(if (and (>= (atof (getvar "ACADVER")) 16)(assoc 420 aa8))
(setq aa8 (cdr (assoc 420 aa8))
      aa8 (strcat "RGB:" (rtos (logand (lsh aa8 -16) 255)) ","
        (rtos (logand (lsh aa8 - 8) 255)) ","
        (rtos (logand aa8 255))))
(if (setq aa8 (assoc 62 aa8))
(setq aa8 (rtos (cdr aa8)))
(setq aa8 "256")))
(setvar "CECOLOR" aa8)))
(if (> aa4 0)(progn
(command "_.section" aa6 "" "3" aa2 aa3 "@0,0,1")
(if (entnext aa7)(progn
(setq aa7 (entnext aa7)
      aa8 (ssadd))
(command "_.extrude" aa7 "" "_d" '(0 0 0) aa9)
(while (entnext aa7)
(setq aa7 (entnext aa7)
      aa8 (ssadd aa7 aa8)))
(command "_.slice" aa6 "" "3" aa2 aa3 "@0,0,1" "_b"
    "_.move" (entlast) "" '(0 0 0) aa9
    "_.union" aa6 aa8 (entlast) "")
)
(progn
(command "_.slice" aa6 "" "3" aa2 aa3 "@0,0,1" "_b")
(if (setq aa7 (entnext aa7))
(command "_.move" aa7 "" '(0 0 0) aa9
    "_.union" aa6 aa7 "")
(if (< (sin (- (angle aa2 aa3)
          (angle aa2
(trans (vlax-safearray->list
    (vlax-variant-value
      (vla-get-Centroid
        (vlax-ename->vla-object aa6)))) 0 1)))) 0)
(command "_.move" aa6 "" '(0 0 0) aa9)
)
))
)
)
(progn
(command "_.slice" aa6 "" "3" aa2 aa3 "@0,0,1" "_b")
(if (setq aa7 (entnext aa7))(progn
(command "_.move" aa7 "" '(0 0 0) aa9
    "_.slice" aa7 "" "3" aa2 aa3 "@0,0,1" "_b")
(if (entnext aa7)
(command "_.erase" aa7 ""
    "_.union" aa6 (entnext aa7) "")
(command "_.union" aa6 aa7 "")
)
)
(if (< (sin (- (angle aa2 aa3)
          (angle aa2
(trans (vlax-safearray->list
    (vlax-variant-value
      (vla-get-Centroid
        (vlax-ename->vla-object aa6)))) 0 1)))) 0)
(command "_.move" aa6 "" '(0 0 0) aa9)
)
)
))
)
))
(if (eq layer 4)(command "_.layer" "_lo" (getvar "CLAYER") ""))
(setvar "CECOLOR" cecolor)
(setvar "OSMODE" osmode)
(setvar "CMDECHO" 1)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
))))
)
(princ "\nУстановите один из стандартных ортогональных видов")
)
(princ)
)
Очень хорошая и полезная программа
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Автор темы   Непрочитано 18.11.2010, 09:49
#5
Борисарх

веб-мастер
 
Регистрация: 17.11.2010
Сообщений: 14


Да, ctrl+ЛК помогли, благодарю. А шкаф набрал из солидов.
Борисарх вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Укоротить сложный 3d объект



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо обмерить сложный объект Pollacco Разное 17 02.04.2010 09:37
Почему 3D объект не отображается в Layout? MDT goodking Вертикальные решения на базе AutoCAD 8 12.07.2009 18:37
можно ли разделить объект 3D на 2 объекта Jоhnny AutoCAD 5 31.10.2007 12:50
как программно "натянуть" текстуру на 3D объект? zshgm Программирование 6 27.08.2007 20:25
Немогу распечатать 3D объект konstruktor AutoCAD 18 09.12.2005 08:33