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

Вернуться   Форум DWG.RU > Отраслевые разделы > Инженерные сети > Подскажите в чём лучше отрисовывать 3D трубопроводы

Подскажите в чём лучше отрисовывать 3D трубопроводы

Ответ
Поиск в этой теме
Непрочитано 28.09.2005, 16:18 #1
Подскажите в чём лучше отрисовывать 3D трубопроводы
{Smirnoff}
 
Инженер по системам безопасности
 
Рига
Регистрация: 23.11.2003
Сообщений: 1,099

Желательно бесплатные програмки, потому как у нас в конторе нельзя ничего нелицензионного.

И еще если возможно поделитесь приёмами работы, т. к. я в этом деле пока новичок. Чертить надо спринклерные системы.

С черчением линиями и полилиниями никаких проблем нет. А вот с реальными диаметрами труб солидами, хотелось бы послушать советов.
Пока попробывал 2-ва способа:

1. Трубы в виде блоков их цилиндрического солида и менять их масштаб по оси X.

2. Отрисовывать направляющие и делать Extrude.

Везде есть свои плюсы и минусы. С блоками конструкция "легкоразборная" если надо вносить изменения, а с экструдом получается быстрее однако не совсем удобно потом это всё менять. Приходится или заново отрисовывать или резать c помощью Slice и что-то перерисовывать.

Кто вообще как работает?
Просмотров: 12431
 
Непрочитано 28.09.2005, 16:40
#2
Apelsinov

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


Я только ссылочку - http://www.progman.fi/
И внизу этой странички - слева.
Apelsinov вне форума  
 
Автор темы   Непрочитано 28.09.2005, 17:15
#3
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Apelsinov

Спасибо. Надо наверное будет посмотреть демку какую. Правда насёт ссылки слева внизу, таковой не нашёл. Там адрес на любой странице всегда http://www.progman.fi/. Так что где искать именно ту которую ты посоветовал не знаю. А про возможности программы прочитал, с первого взгляда впечатляет.
{Smirnoff} вне форума  
 
Непрочитано 28.09.2005, 18:30
#4
Apelsinov

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


да не там ссылочка а тут ...
незаметная такая внизу ЭТОЙ СТРАНИЦЫ на которую ты сейчас смотришь.
Apelsinov вне форума  
 
Автор темы   Непрочитано 28.09.2005, 18:59
#5
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Apelsinov
Теперь понял и возможно даже будем участвовать.

А я вот пока лиспик накатал для быстрого превращения всевозможных линий в трубы, т. е. солиды, разом и много. Пока им и буду пользоваться.

Код:
[Выделить все]
(defun c:xpipe(/ 3DPOS ACTDOC ACTSP BASELINE BASESET
	      CIRENT DICOUNT DIVDID EXCIR EXDIA
	      OBJTYPE STARTPT XORD YORD ZORD OLDDIA
	      *ERROR*)
  (vl-load-com)

  (defun *error* (msg)
    (setvar "CMDECHO" oldEcho)
    (vla-EndUndoMark actDoc)
    (princ)
    ); end of *error*

  (if(not pipe:exDia)(setq pipe:exDia 40.0))
  (setq actDoc
	 (vla-get-ActiveDocument
	   (vlax-get-Acad-object))
	oldDia pipe:exDia
	oldEcho(getvar "CMDECHO")
	); end setq
  (vla-StartUndoMark actDoc)
  (setvar "CMDECHO" 0)
  (if(= 0(vla-get-ActiveSpace actDoc))
    (setq actSp(vla-get-PaperSpace actDoc))
    (setq actSp(vla-get-ModelSpace actDoc))
    ); end if
  (setq pipe:exDia
	 (getreal
	   (strcat
	     "\nSpecify pipe diameter <"(rtos pipe:exDia)">: ")))
  (if(null pipe:exDia)(setq pipe:exDia oldDia))
  (princ "\n+++ Select objects to extrude +++")
  (if
    (setq baseSet
	   (ssget '((-4 . "<OR")(0 . "*LINE")(0 . "CIRCLE")
			  (0 . "ARC")(0 . "ELLIPSE")(-4 . "OR>")
			  (-4 . "<NOT")(-4 . "<OR")(0 . "SPLINE")
		          (0 . "MLINE")(-4 . "OR>")(-4 . "NOT>"))))
    (progn
      (setq baseSet(vl-remove-if 'listp
                              (mapcar 'cadr(ssnamex baseSet))))
      (foreach pathEnt baseSet
      (setq baseLine
	     (vlax-ename->vla-object pathEnt)
	    objType(vla-get-ObjectName baseLine)
            startPt(vlax-curve-getStartPoint baseLine)
            3dPos
	     (vlax-curve-getFirstDeriv baseLine
	       (vlax-curve-getParamAtPoint baseLine startPt))
           diCount(strlen
		      (itoa
			(apply 'max
			 (mapcar 'abs
			  (mapcar 'fix startPt)))))
	    divDid "1"
	    ); end setq
      (repeat diCount
	(setq divDid(strcat divDid "0"))
	); end repeat
      (setq divDid(atoi divDid))
      (if(/= 0.0(car 3dPos))
	(setq XOrd(/(car 3dPos)divDid))
	(setq XOrd (car 3dPos))
	); end if
      (if(/= 0.0(cadr 3dPos))
	(setq YOrd(/(cadr 3dPos)divDid))
	(setq YOrd (cadr 3dPos))
	); end if
      (if(/= 0.0(nth 2 3dPos))
	(setq ZOrd(/(nth 2 3dPos)divDid))
	(setq ZOrd (nth 2 3dPos))
	); end if
      (setq 3dPos(list XOrd YOrd ZOrd))
  (setq exCir(vla-addCircle actSp(vlax-3d-Point startPt)(/ pipe:exDia 2)))
  (vla-put-Normal exCir(vlax-3D-point 3dPos))
  (setq cirEnt(vlax-vla-object->ename exCir))
  (command "_.extrude" cirEnt "" "_p" pathEnt)
  (command "_.erase" cirEnt "")
   ); end foreach
      (setvar "CMDECHO" oldEcho)
      (vla-EndUndoMark actDoc)
       ); end progn
	   ); end if
    (princ)
    ); end  of c:xpipe
{Smirnoff} вне форума  
 
Непрочитано 28.09.2005, 20:54
#6
Valery


 
Сообщений: n/a


Я использую два способа.
1.Строить оси трубопроводов 3D-полилинией и использовать их как путь для экструдирования. Удлинять-укорачивать - через редактирование точек пути. Плюс - удобно вводить точки с клавы и очень сложный путь можно строить одной линией.
2. Окружность установить в нужное положение в пространстве (или рисовать в UCS) и атрибуту ТОЛЩИНА (thicknes) (не вес!) присвоить величину, равную длине трубы. Удлинять-укорачивать - через ту же толщину.
 
 
Автор темы   Непрочитано 29.09.2005, 01:02
#7
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Valery

Спасибо. До второго способа я недодумался, хотя он вроде лежал не поверхности.

Попробуй кстати лиспик, не надо тратить время на отрисовку окружности по которой будет проводится экструдирование и можно делать несколько труб сразу. Он кстати и сплайны тоже иногда экструдировал, а иногда нет , поэтому я их убрал за ненадобностью и нестабильностью работы.

Вот немного доработанный вариант:

Код:
[Выделить все]
(defun c:xpipe(/ ACTDOC ACTLAY ACTSP BASELINE
	       BASESET CIRENT DICOUNT DIVDID
	       EXCIR LAYST OBJTYPE OLDDIA
	       OLDECHO STARTPT XORD YORD
	       ZORD *ERROR*)
  (vl-load-com)

  (defun *error* (msg)
    (vla-put-Lock actLay laySt)
    (setvar "CMDECHO" oldEcho)
    (vla-EndUndoMark actDoc)
    (princ)
    ); end of *error*

  (if(not pipe:exDia)(setq pipe:exDia 40.0))
  (setq actDoc
    (vla-get-ActiveDocument
      (vlax-get-Acad-object))
	actLay(vla-get-ActiveLayer actDoc)
        oldDia pipe:exDia
        oldEcho(getvar "CMDECHO")
   ); end setq
  (vla-StartUndoMark actDoc)
  (setvar "CMDECHO" 0)
  (if(= 0(vla-get-ActiveSpace actDoc))
    (setq actSp(vla-get-PaperSpace actDoc))
    (setq actSp(vla-get-ModelSpace actDoc))
    ); end if
  (setq laySt(vla-get-Lock actLay))
  (vla-put-Lock actLay :vlax-false)
  (setq pipe:exDia
    (getreal
      (strcat
        "\nSpecify pipe diameter <"(rtos pipe:exDia)">: ")))
  (if(null pipe:exDia)(setq pipe:exDia oldDia))
  (princ "\n<<< Select objects to extrude and press Enter >>>")
  (if
    (setq baseSet
      (ssget '((-4 . "<OR")(0 . "*LINE")(0 . "CIRCLE")
           (0 . "ARC")(0 . "ELLIPSE")(-4 . "OR>")
           (-4 . "<NOT")(-4 . "<OR")(0 . "SPLINE")
                (0 . "MLINE")(-4 . "OR>")(-4 . "NOT>"))))
    (progn
      (setq baseSet(vl-remove-if 'listp
                              (mapcar
				'cadr
				(ssnamex baseSet))))
      (foreach pathEnt baseSet
      (setq baseLine
        (vlax-ename->vla-object pathEnt)
       objType(vla-get-ObjectName baseLine)
            startPt(vlax-curve-getStartPoint baseLine)
            3dPos
        (vlax-curve-getFirstDeriv baseLine
          (vlax-curve-getParamAtPoint baseLine startPt))
           diCount(strlen
            (itoa
         (apply 'max
          (mapcar 'abs
           (mapcar 'fix startPt)))))
       divDid "1"
       ); end setq
      (repeat diCount
   (setq divDid(strcat divDid "0"))
   ); end repeat
      (setq divDid(atoi divDid))
      (if(/= 0.0(car 3dPos))
   (setq XOrd(/(car 3dPos)divDid))
   (setq XOrd (car 3dPos))
   ); end if
      (if(/= 0.0(cadr 3dPos))
   (setq YOrd(/(cadr 3dPos)divDid))
   (setq YOrd (cadr 3dPos))
   ); end if
      (if(/= 0.0(nth 2 3dPos))
   (setq ZOrd(/(nth 2 3dPos)divDid))
   (setq ZOrd (nth 2 3dPos))
   ); end if
      (setq 3dPos(list XOrd YOrd ZOrd))
  (setq exCir
	 (vla-addCircle actSp
	   (vlax-3d-Point startPt)
	   (/ pipe:exDia 2)))
  (vla-put-Normal exCir(vlax-3D-point 3dPos))
  (setq cirEnt(vlax-vla-object->ename exCir))
  (command "_.extrude" cirEnt "" "_p" pathEnt)
  (command "_.erase" cirEnt "")
   ); end foreach
      (vla-put-Lock actLay laySt)
      (setvar "CMDECHO" oldEcho)
      (vla-EndUndoMark actDoc)
       ); end progn
      ); end if
    (princ)
    ); end  of c:xpipe
{Smirnoff} вне форума  
 
Непрочитано 29.09.2005, 09:20
#8
Кулик Алексей aka kpblc
Moderator

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


> {Smirnoff} : ИМХО, ИМХО... использование "thickness" дает только визуализационную картину. _.slice, _.union etc срабатывать не будут. Файл вроде как весить меньше немного должен, но имхо не в каждом случае можно применять назначение высоты объекта.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.09.2005, 09:37
#9
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>kpblc

Не Thickness я использовать не буду. Это так для общего развития...
{Smirnoff} вне форума  
 
Непрочитано 29.09.2005, 10:33
#10
Valery


 
Сообщений: n/a


->kpblc
Да, использование "thickness" имеет много ограничений, невозможны булевы операции, но иногда этот способ - единственный выход из положения. Я часто таким образом делаю для интерьеров шторы, занавески, флаги. Рисуется волнистая полилиния, задается толщина и присваивается полупрозрачный метериал с узором - занавеска готова. Удобно моделировать листы шифера для крыш, стальные профили, рельсы, корешки книг на полках...
 
 
Непрочитано 29.09.2005, 10:42
#11
Кулик Алексей aka kpblc
Moderator

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


> Valery : так я и не говорю, что этот способ отстой. Просто он не всегда применим. Но если надо быстро и без рабочки набросать 3Д-модель, иногда он - спасение. Сам им пользовался во время проектирования зимних садов (на этапе согласования с заказчиком уже не ниточной схемы). Потом ущел с этого и стал 3Д гнать сразу - чуток помедленнее на момент "начала", но потом рабочку уже проще наваять мне было.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.09.2005, 10:50
#12
Apelsinov

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


{Smirnoff} (ужасно не привычный ник)

если все это для спринклера, то имхо, там главное не трехмерка. Ведь нужно будет получать чертежи, по которым надо будет все это дело монтировать, так что , возможно, нужно обратить внимание на какие-то 2д разработки, если спец. ПО на 3д не по карману.
Apelsinov вне форума  
 
Автор темы   Непрочитано 29.09.2005, 12:19
#13
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Apelsinov
Цитата:
если все это для спринклера, то имхо, там главное не трехмерка.
Да видишь ли... Сейчас трёхмерку уже частенько просто требуют, потому что появляются и 3Д чертежи и "гибридные" варианты- планировка 2Д, а вот планы потолков с конструкциями и вентиляционными коробами в 3Д.

Да и удобно это. Сразу вычисляется длинна труб, количество арматуры. Насчет трудозатрат, они как я попробывал не на много больше, тем более что арматура очень ограниченная и стандартная.

Я вот как раз черчу такую систему в здании с арочными железобетонными перекрытиями длинной 24 метра, расстояние то от спринклера до перекрытия должно быть не более 150 мм. Очень удобно сразу видна длинна отводов чтобы они получались от перекрытия на нужном расстоянии. Так что я выбираю 3Д.
{Smirnoff} вне форума  
 
Непрочитано 29.09.2005, 12:32
#14
Кулик Алексей aka kpblc
Moderator

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


> {Smirnoff} : Я понимаю насчет лицензионности, но, может, попробовать поковырять ABS? А потом попытаться убедить руководство в том, что "это быстрее и проще".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.10.2005, 17:14
#15
Serg Ivanov

Инженер ВК
 
Регистрация: 19.11.2004
Кишинёв
Сообщений: 196


А этим кто-нить пользуется?
http://dwg.ru/dwl/64
__________________
С уважением, Serg Ivanov.
Serg Ivanov вне форума  
 
Непрочитано 05.10.2005, 18:00
#16
Aleksandrs

inženieris-projektētājs siltuma un ūdens tehnoloģijas
 
Регистрация: 11.05.2004
Рига
Сообщений: 62


Цитата:
Сообщение от Serg Ivanov
А этим кто-нить пользуется?
http://dwg.ru/dwl/64
Я пользуюсь. Очень доволен.
Aleksandrs вне форума  
 
Непрочитано 18.07.2006, 11:37
#17
Rokky

Проектирование
 
Регистрация: 17.10.2005
г.Димитровград
Сообщений: 107
<phrase 1=


А нет пользователей AutoPlant Piping? Тоже хорошая программа для отрисовки 3Д трубопроводов + база данных различного рода оборудования.
__________________
Век живи, век учись....
Rokky вне форума  
 
Непрочитано 28.02.2012, 20:41
#18
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Пардон, что дублирую свой ответ, т.к. ответил на аналогичный вопрос в ветке программирования, а тема не совсем программистская. Скорее - на готовое решение, которое наверное есть. (Но если заблокируют - не обижусь)
Та же проблема - нужно чертить трубы со скруглениями на углах поворота их траекторий.
Пошел по ссылкам и поиску, нашел англоязычную версию: 3dPolyFillet_eng.lsp в http://forums.autodesk.com/t5/Visual...p/td-p/1929298.
Программка может скруглить сразу все углы поворота траектории будущей трубы.
Там еще приложены лиспы вытягивания труб и цилиндров в одно действие по траектории. CURVE2CYLINDER.lsp и Curve2tube.lsp.
Но. Так пока и не нашел программку, соединяющую эти две процедуры - скруглить углы траектории и сразу построить трубу/цилиндр.
Может быть кто знает?
АлексЮстасу вне форума  
 
Непрочитано 29.02.2012, 23:33
#19
Versus


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Пошел по ссылкам и поиску, нашел англоязычную версию: 3dPolyFillet_eng.lsp в http://forums.autodesk.com/t5/Visual...p/td-p/1929298.
The page you are trying to access was not found. Please check your URL for typos and try again.
и где их теперь там искать?
__________________
всё знаю, но ничего не помню
Versus вне форума  
 
Непрочитано 01.03.2012, 00:16
#20
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Да, со ссылкой ерунда какая-то была.
http://forums.autodesk.com/t5/Visual...p/td-p/1929298
АлексЮстасу вне форума  
Ответ
Вернуться   Форум DWG.RU > Отраслевые разделы > Инженерные сети > Подскажите в чём лучше отрисовывать 3D трубопроводы