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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Сумма высот цилиндров

Сумма высот цилиндров

Ответ
 
Поиск в этой теме
Старый 13.10.2010, 17:06 #1
Сумма высот цилиндров
Redya
 
Регистрация: 15.07.2008
Сообщений: 195

Алоха, всем. Необходимо посчитать сумму высот цилиндров определённого диаметра на чертеже. Цилиндры - это трубопроводы, 3Dsolid. Нужно для спецификации. Руками смотреть в свойствах каждый цилиндр отдельно и складывать высоты очень долго. Спасибо. AC2008
Просмотров: 5464
 
Старый 13.10.2010, 19:33
#2
sbi


 
Регистрация: 27.04.2008
SPB
Сообщений: 3,285
Отправить сообщение для sbi с помощью Skype™


Offtop: «Алоха» — слово гавайского происхождения. Обозначает одновременно «привет», «здравствуйте», «до свидания», «добро пожаловать», «я люблю тебя».
Тепло и хорошо там отдыхать?
__________________
С уважением sbi

Последний раз редактировалось sbi, 13.10.2010 в 19:46.
sbi вне форума  
 
Автор темы   Старый 13.10.2010, 20:04
#3
Redya


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


Цитата:
Сообщение от sbi Посмотреть сообщение
Offtop: «Алоха» — слово гавайского происхождения. Обозначает одновременно «привет», «здравствуйте», «до свидания», «добро пожаловать», «я люблю тебя».
Тепло и хорошо там отдыхать?
Offtop: К сожалению я там не был, но значения слова знаю. Ещё успеем, братюнь.
Redya вне форума  
 
Старый 13.10.2010, 20:25
#4
sbi


 
Регистрация: 27.04.2008
SPB
Сообщений: 3,285
Отправить сообщение для sbi с помощью Skype™


Тогда в поиск проги или делай ее сам.
Осевую линию труб - в полилинию (длина в свойствах)
__________________
С уважением sbi
sbi вне форума  
 
Автор темы   Старый 13.10.2010, 22:17
#5
Redya


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


В поиске не нашел, а лисп не знаю.да, раньше оси отрисовывал у цилиндров и считал калькулятором веткадовским, но теперь ставить веткад из-за калькулятора впадляк, да и отрисовывать долго. Вот, ищу выходы.
Redya вне форума  
 
Старый 13.10.2010, 22:19
1 | #6
Хмурый


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


выходов нет
Хмурый вне форума  
 
Автор темы   Старый 13.10.2010, 22:26
#7
Redya


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


Цитата:
Сообщение от Хмурый Посмотреть сообщение
выходов нет
Offtop: Не говори так, у меня слабая психика. В Англии(могу ошибаться) по-моему запрелити такую надпись, т.к. наркоманы обколовшись (или суйцидники), прочитав такую надпись, совершали самоубийство порой. Лисп нужен, да?
Redya вне форума  
 
Старый 13.10.2010, 22:32
#8
Хмурый


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


может и Лисп, хотя я не представляю, как он должен работать
Хмурый вне форума  
 
Старый 13.10.2010, 22:38
#9
vadim_evg1


 
Регистрация: 08.01.2007
Рус
Сообщений: 398


а позырить на файлик?
vadim_evg1 вне форума  
 
Старый 13.10.2010, 22:40
1 | #10
Кулик Алексей aka kpblc
Moderator

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


Теоретически можно, расковыряв представление твердых тел, добиться чего хочешь. Но сколько на это уйдет времени - не представляю.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Старый 13.10.2010, 22:49
#11
Taracka


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


Цитата:
Сообщение от Redya Посмотреть сообщение
сумму высот цилиндров определённого диаметра на чертеже
Звучит странно... Чертеж обычно в двух измерениях.
Если имелась ввиду модель - вычислить объем (всех сразу), разделить на площадь (если радиус одинаковый)
Taracka вне форума  
 
Старый 13.10.2010, 22:53
#12
Хмурый


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


Цитата:
Сообщение от Taracka Посмотреть сообщение
Звучит странно... Чертеж обычно в двух измерениях.
Если имелась ввиду модель - вычислить объем (всех сразу), разделить на площадь (если радиус одинаковый)
площадь сечения имеется ввиду.
Хмурый вне форума  
 
Автор темы   Старый 14.10.2010, 00:24
#13
Redya


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


да дело еще в том, что _qselect не работает с цилинрами, для него все тела это 3Dsolid, акромя спирали. Т.е. ,впринципе, да, можно рисовать цилиндры разных диаметров по разным слоям(чтобы потом _qselect смог выбрать), после чего посмотреть общий объем с помощью _massprop, и делить на площадь сечения цилиндра. Как вариант да, годится, времени сэкономит порядком. Была такая мысль. Потроить цилиндр нужным диаметром и высотой 1мм, задать операцию массива для него, а потом из этих дин.блоков как то извлекать значения. Пока не пробовал, но хотелось бы знать заранее: Не нагрузит ли это сильно мою модель? Смогу ли я в итоге извлечь длины, или общую длину? Ну как то так
Redya вне форума  
 
Старый 14.10.2010, 00:50
2 | #14
Кулик Алексей aka kpblc
Moderator

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


Тогда уж проще будет сделать цилиндр с радиусом 1 и высотой 1, вставлять его с разными масштабными коэффициентами. А там уже и лисп не за горой
Формат dwg - 2004
Код:
[Выделить все]
(vl-load-com)

(defun test (/ adoc selset lst ent)
  (if (= (type (setq selset (vl-catch-all-apply
                              (function
                                (lambda ()
                                  (ssget '((0 . "INSERT")))
                                  ) ;_ end of lambda
                                ) ;_ end of function
                              ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'pickset
         ) ;_ end of =
    (progn
      (foreach item (mapcar
                      (function
                        (lambda (x)
                          (list (cons "rad" (vla-get-xscalefactor x)) (cons "len" (vla-get-zscalefactor x)))
                          ) ;_ end of lambda
                        ) ;_ end of function
                      (vl-remove-if-not
                        (function
                          (lambda (x)
                            (equal (vla-get-xscalefactor x) (vla-get-yscalefactor x) 1e-3)
                            ) ;_ end of lambda
                          ) ;_ end of function
                        (mapcar (function vlax-ename->vla-object)
                                ((lambda (/ tab item)
                                   (repeat (setq tab  nil
                                                 item (sslength selset)
                                                 ) ;_ end setq
                                     (setq tab (cons (ssname selset (setq item (1- item))) tab))
                                     ) ;_ end repeat
                                   ) ;_ end of lambda
                                 )
                                ) ;_ end of mapcar
                        ) ;_ end of vl-remove-if-not
                      ) ;_ end of mapcar
        (if (setq ent (car (vl-remove-if-not
                             (function
                               (lambda (x)
                                 (equal (cdr (assoc "rad" item)) (cdr (assoc "rad" x)) 1e-3)
                                 ) ;_ end of lambda
                               ) ;_ end of function
                             lst
                             ) ;_ end of vl-remove-if-not
                           ) ;_ end of car
                  ) ;_ end of setq
          (setq lst (subst (list (assoc "rad" ent)
                                 (cons "len" (+ (cdr (assoc "len" ent)) (cdr (assoc "len" item))))
                                 ) ;_ end of list
                           ent
                           lst
                           ) ;_ end of subst
                ) ;_ end of setq
          (setq lst (cons item lst))
          ) ;_ end of if
        ) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  lst
  ) ;_ end of defun
Вложения
Тип файла: dwg
DWG 2004
Cylinder_test.dwg (49.8 Кб, 892 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Старый 14.10.2010, 13:57
#15
Redya


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


Алексей, спасибо! но я немного не понял.Вот у тебя есть единичный цилиндр. А потом что, прописывать каждый раз руками в свойствах масштабы по осям? Это же очень долго. Или дин.блок делать надо из этого единичного цилиндра? А так мне очень понравилось как он считает) Я просто пока не очень понимаю что мне с этим делать дальше.
Redya вне форума  
 
Старый 14.10.2010, 16:43
#16
sbi


 
Регистрация: 27.04.2008
SPB
Сообщений: 3,285
Отправить сообщение для sbi с помощью Skype™


Redya Как говорил один из великих могикан: " Думать, батенька, думать".
__________________
С уважением sbi
sbi вне форума  
 
Старый 14.10.2010, 20:14
1 | #17
Кулик Алексей aka kpblc
Moderator

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


Redya, а кто мешает сделать несколько инструментов, вставляющих этот блок с заранее заданными значениями? Ну или лиспик нарисовать, типа
Код:
[Выделить все]
(vl-load-com)

(defun insert-scaled (rad / blk_name blk_def base final ent region res)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (setq blk_name "dwgru-Cylinder")
  (if (/= (type (setq blk_def (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (vla-item (vla-get-blocks adoc) blk_name)
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                      ) ;_ end of setq
                ) ;_ end of type
          'vla-object
          ) ;_ end of /=
    (progn
      (setq blk_def (vla-add (vla-get-blocks adoc) (vlax-3d-point '(0. 0. 0.)) blk_name)
            region  (vla-addregion blk_def
                                   (vlax-make-variant
                                     (vlax-safearray-fill
                                       (vlax-make-safearray vlax-vbobject '(0 . 0))
                                       (list (setq ent (vla-addcircle blk_def (vlax-3d-point '(0. 0. 0.)) 1.)))
                                       ) ;_ end of vlax-safearray-fill
                                     ) ;_ end of vlax-make-variant
                                   ) ;_ end of vla-AddRegion
            ) ;_ end of setq
      (vla-erase ent)
      (vla-addextrudedsolid blk_def (car (vlax-safearray->list (vlax-variant-value region))) 1. 0.)
      ) ;_ end of progn
    ) ;_ end of if
  (if (and (= (type (setq base (vl-catch-all-apply
                                 (function
                                   (lambda ()
                                     (getpoint "\nНачальная точка <Отмена> : ")
                                     ) ;_ end of lambda
                                   ) ;_ end of function
                                 ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'list
              ) ;_ end of =
           (= (type (setq final (vl-catch-all-apply
                                  (function
                                    (lambda ()
                                      (getpoint base "\Конечная точка <Отмена> : ")
                                      ) ;_ end of lambda
                                    ) ;_ end of function
                                  ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'list
              ) ;_ end of =
           ) ;_ end of and
    (progn
      (setq res (vla-insertblock (vla-get-modelspace adoc)
                                 (vlax-3d-point base)
                                 blk_name
                                 rad
                                 rad
                                 (distance base final)
                                 0.
                                 ) ;_ end of vla-InsertBlock
            ) ;_ end of setq
      ;; Лень мне думать про некомандные методы поворота
      (command "_.3dalign"
               (handent (vla-get-handle res))
               ""
               "_none"
               base
               "_none"
               (list (car base) (cadr base) (+ (caddr base) (distance base final)))
               "_c"
               "_none"
               base
               "_none"
               final
               "_x"
               ) ;_ end of command
      ) ;_ end of progn
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Старый 14.10.2010, 20:33
#18
Redya


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


Алексей, что-то не работает. проверял в твоём файле. Пишет
Код:
[Выделить все]
Command: (insert-scaled)
; error: too few arguments
Redya вне форума  
 
Старый 15.10.2010, 08:09
1 | #19
Лиспер


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


(insert-scaled 10.)
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Старый 15.10.2010, 09:59
#20
Redya


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


О, работает! только дело в том, что когда я переношу этот блок в свой файл, и начинаю испольховать лисп, то он в моём файле растягивает его не по высоте, а по ширине в одну сторону. Т.е. в свойствах потом написано что scale X = 10, scale Y = 10, scale Z = 1985.3 например(в какую бы сторону не задавал направление). В файле Cylinder_test всё работает ОК. Пробовал менять UCS, но не помгло.
Redya вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Сумма высот цилиндров



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма модальных масс не набирает требуемых 90% (Лира) Askarov Лира / Лира-САПР 64 16.04.2014 10:34
Перепад высот на пути эвакуации, СНиП 21-01-97* Garbag Архитектура 12 15.04.2013 11:35
Узел армирования перепада высот в фундаменте F0xik Основания и фундаменты 1 23.06.2009 07:32
Поиск боксов и цилиндров через vba null_solid Программирование 3 16.10.2008 16:37
Отображение цилиндров на 3Д виде ВоваН AutoCAD 18 17.05.2008 15:16