Community
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Lowering entire pipe network at once.

Lowering entire pipe network at once.

Along the lines of my Last post of being able to heal pipes when structures are removed. Why can't i pick my pipe network and have it lowered

or raised a certain distance and the entire network be lowered or raised. Alot of times i have my design done and then i see that a service or

a side road is not going to have enough cover so i want to lower the entire network say 6" to get the cover i need. Now i have to edit each and every pipe through the network so that my design is the same it's just 6" lower.

16 Comments
TerryDotson
Mentor

I haven't tried this but it should work.  Use the ToolSpace to select all the network geometry, issue the MOVE command, pick any point for the begin point, then @0,0,-0.5 for the second.

rogershaw1237
Enthusiast

Thanks Terry, That works and for some reason that just didn't come to me... but still Don't you think the software should be able to do this. maybe a check box that holds all slopes in the pipe network and if unchecked it holds all the elevations or something like that. i do

doni49
Mentor

Although I think it could be useful, I doubt that it'll ever happen anytime soon.  Since there's already a relatively easy way to accomplish the task and there are so many other things that need added/improved/fixed, this would likely be a much lower priority.

rogershaw1237
Enthusiast

I agree and understand that, but this probably should of already been in there. Even doing it the way Terry mentioned i had to go back and adjust my rims because they were 6" below the surface even though they were connected to the surface. i just highlighted all the manholes in toolspace and changed the surface to a Junk surface and then back to my EG surface which worked and took the time out of it but still this just seems to be a good add for a future release.

 

thanks for your comment Doni

doni49
Mentor

@rogershaw1237,

 

It did that because you selected the NETWORK.  Instead of doing that expand the network so that you see PIPES & STRUCTURES listed in the top part of Toolsapce.  Pick PIPES.  And all the pipes in the network will be listed below.

 

Now follow along with the pictures below and ONLY the pipes will be selected.  MOVE THEM and you should be fine.

 

C3DMovePipe1.pngC3DMovePipe2.pngC3DMovePipe3.png

troma
Mentor

With featurelines, you can raise/lower them with the move command just like this, or you can right-click and access a "Raise/Lower" command.

So I don't see why this shouldn't be added for pipes. But like you said, it's probably a lower priority than many other things.

doni49
Mentor
I wasn't disagreeing that it probably SHOULD be done -- just pointing out that it'd probably be a much lower priority since there's currently a way to accomplish the task.
Jeff_M
Consultant

@doni49, a slightly easier way of selecting the pipes in a network:

 

10-11-2016 4-48-34 PM.png

doni49
Mentor
@Jeff_M,

Cool! That's good to know!
BlackBox_
Advisor

I wrote this a few? years ago, as a stop gap for some of the functionality I felt was missing from C3D... This will raise/lower Pipes & Structures, and will 'remember' the elevation difference you previously entered (for each session)... Please take from it what you like:

 

 

Cheers

 

(vl-load-com)

(defun c:RaiseLowerPipes (/ *error* elev acDoc ss i n)

  (defun *error* (msg)
    (if ss (vla-delete ss))
    (if acDoc
      (vla-endundomark acDoc)
    )
    (cond ((not msg))                                                   ; Normal exit
          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
          ((princ (strcat "\n** Error: " msg " ** ")))                  ; Fatal error, display it
    )
    (princ)
  )

  (if
    (and
      (ssget "_:L" '((0 . "AECC_PIPE,AECC_STRUCTURE")))
      (or *RaiseLowerPipeElevation*
          (setq *RaiseLowerPipeElevation* 0.5)
      )
      (or
        (setq elev
               (getreal
                 (strcat "\nSpecify elevation difference <"
                         (rtos *RaiseLowerPipeElevation* 2 3)
                         ">: "
                 )
               )
        )
        (setq elev *RaiseLowerPipeElevation*)
      )
      (/= 0.0 elev)
      (setq *RaiseLowerPipeElevation* elev)
    )
     (progn
       (vla-startundomark
         (setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
       )
       (setq i (vla-get-count
                 (setq ss (vla-get-activeselectionset acDoc))
               )
       )
       (setq n 0)
       (vlax-for x ss
         (if (not (vl-catch-all-error-p
                    (vl-catch-all-apply
                      'vla-move
                      (list x
                            (vlax-3d-point '(0. 0. 0.))
                            (vlax-3d-point (list 0. 0. elev))
                      )
                    )
                  )
             )
           (setq n (1+ n))
         )
       )
       (prompt
         (strcat
           "\n"
           (itoa n)
           " of "
           (itoa i)
           " Pipe"
           (if (= 1 i)
             " was "
             "s were "
           )
           (if (< 0.0 elev)
             "raised "
             "lowered "
           )
           (rtos elev 2 3)
           "' "
         )
       )
     )
     (if (= 0.0 elev)
       (prompt "\nValue must be nonzero. ")
     )
  )
  (*error* nil)
)
doni49
Mentor

@BlackBox_,

 

That's a nifty routine.  I took the liberty of making a few minor changes.

 

1) I added a prompt for the user to decide if it should change Pipes, Structures or Both (and the associated code to perform the requested changes).

2) Since this routine doesn't just change Pipes, I changed the output from saying that it changed x Pipes to changed x Parts.  Hopefully that'll add a little bit of clarity.

 

(vl-load-com)

(defun c:RaiseLowerPipes (/ *error* elev acDoc ss i n ssg k)  ;<==added ssg &  k to the private variables list

  (defun *error* (msg)
    (if ss (vla-delete ss))
    (if acDoc
      (vla-endundomark acDoc)
    )
    (cond ((not msg))                                                   ; Normal exit
          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
          ((princ (strcat "\n** Error: " msg " ** ")))                  ; Fatal error, display it
    )
    (princ)
  )
  ;;
  ;;  Added by Don Ireland 10/12/16 to allow user to specify Pipes, Structures or Both.
  ;;
  (initget 0 "Pipes Structures Both")
  (if(not RLP:type)(setq RLP:type "Both"))
  (setq k(getkword (strcat "Modify Pipes/Structures/Both <" RLP:type ">:  ")))
  (if k (setq RLP:type k))
  (cond 
    ((= RLP:type "Both")(setq SSG "AECC_PIPE,AECC_STRUCTURE")) 
    ((= RLP:type "Pipes")(setq SSG "AECC_PIPE")) 
    ((= RLP:type "Structures")(setq SSG "AECC_STRUCTURE"))
  )
  (setq SSG (list(cons 0 SSG)))
  
  ;; End of section added by Don Ireland


  (if
    (and
      (ssget "_:L" SSG)  ; <===Changed the cons to use the list created above.
      (or *RaiseLowerPipeElevation*
          (setq *RaiseLowerPipeElevation* 0.5)
      )
      (or
        (setq elev
               (getreal
                 (strcat "\nSpecify elevation difference <"
                         (rtos *RaiseLowerPipeElevation* 2 3)
                         ">: "
                 )
               )
        )
        (setq elev *RaiseLowerPipeElevation*)
      )
      (/= 0.0 elev)
      (setq *RaiseLowerPipeElevation* elev)
    )
     (progn
       (vla-startundomark
         (setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
       )
       (setq i (vla-get-count
                 (setq ss (vla-get-activeselectionset acDoc))
               )
       )
       (setq n 0)
       (vlax-for x ss
         (if (not (vl-catch-all-error-p
                    (vl-catch-all-apply
                      'vla-move
                      (list x
                            (vlax-3d-point '(0. 0. 0.))
                            (vlax-3d-point (list 0. 0. elev))
                      )
                    )
                  )
             )
           (setq n (1+ n))
         )
       )
       (prompt
         (strcat
           "\n"
           (itoa n)
           " of "
           (itoa i)
           " Part"                  ;<======== Chnaged from "Pipe" to "Part" since this also does structures
           (if (= 1 i)
             " was "
             "s were "
           )
           (if (< 0.0 elev)
             "raised "
             "lowered "
           )
           (rtos elev 2 3)
           "' "
         )
       )
     )
     (if (= 0.0 elev)
       (prompt "\nValue must be nonzero. ")
     )
  )
  (*error* nil)

 

BlackBox_
Advisor

That is kind of you to say, @doni49. :beer:

 

As you can tell, I originally wrote that routine for Pipes only, and added Structures later (as it happens, under a tight deadline, and clearly forgot to come back to clean it up! Haha)... While my personal preference is to select what I want on-screen rather than first use command option, these are all welcomed improvements!

 

Building on your offering if I may, here's a slight mod, that replaces 'Pipes' with 'Parts' in the command name, and adds the ability to 'remember' your last part type selection (per-session; like elevation, and a similar COGO routine I have).

 

A ContextMenuExtension (my favorite), and/or Contextual Tab would certainly make this more convenient to use, but I don't have time to hop into Visual Studio at the moment.

 

 

Cheers

 

 

(vl-load-com)

(defun c:RaiseLowerParts (/ *error* partType elev acDoc ss i n)

  (defun *error* (msg)
    (if ss
      (vla-delete ss)
    )
    (if acDoc
      (vla-endundomark acDoc)
    )
    (cond ((not msg))                                                   ; Normal exit
          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
          ((princ (strcat "\n** Error: " msg " ** ")))                  ; Fatal error, display it
    )
    (princ)
  )

  (if
    (and
      (not (initget "Pipes Structures Both"))
      (or *RaiseLowerPartType*
          (setq *RaiseLowerPartType* "Both")
      )
      (or
        (setq partType
               (getkword
                 (strcat "Modify Pipes/Structures/Both <"
                         *RaiseLowerPartType*
                         ">:  "
                 )
               )
        )
        (setq partType *RaiseLowerPartType*)
      )
      (setq *RaiseLowerPartType* partType)
      (ssget
        "_:L"
        (list
          (cons 0
                (cond
                  ((= partType "Both") "AECC_PIPE,AECC_STRUCTURE")
                  ((= partType "Pipes") "AECC_PIPE")
                  ((= partType "Structures") "AECC_STRUCTURE")
                )
          )
        )
      )
      (or *RaiseLowerPartElevation*
          (setq *RaiseLowerPartElevation* 0.5)
      )
      (or
        (setq elev
               (getreal
                 (strcat "\nSpecify elevation difference <"
                         (rtos *RaiseLowerPartElevation* 2 3)
                         ">: "
                 )
               )
        )
        (setq elev *RaiseLowerPartElevation*)
      )
      (/= 0.0 elev)
      (setq *RaiseLowerPartElevation* elev)
    )
     (progn
       (vla-startundomark
         (setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
       )
       (setq i (vla-get-count
                 (setq ss (vla-get-activeselectionset acDoc))
               )
       )
       (setq n 0)
       (vlax-for x ss
         (if (not (vl-catch-all-error-p
                    (vl-catch-all-apply
                      'vla-move
                      (list x
                            (vlax-3d-point '(0. 0. 0.))
                            (vlax-3d-point (list 0. 0. elev))
                      )
                    )
                  )
             )
           (setq n (1+ n))
         )
       )
       (prompt
         (strcat
           "\n"
           (itoa n)
           " of "
           (itoa i)
           " Part"
           (if (= 1 i)
             " was "
             "s were "
           )
           (if (< 0.0 elev)
             "raised "
             "lowered "
           )
           (rtos elev 2 3)
           "' "
         )
       )
     )
     (if (and partType (= 0.0 elev))
        (prompt "\nValue must be nonzero. ")
     )
  )
  (*error* nil)
)

 

P.S. - Apologies for all of the code; there's no way to attach a file? 

doni49
Mentor

That is kind of you to say, @doni49. :beer:

I'd take a sweet tea.  🙂

 

Regarding "remembering" the part type, that's what the RLP:type did -- it was a global variable as it wasn't in the private list.

 

I like to use an abbreviation of the command name in front of a colon for any global variable I create.  This ensures that it doesn't conflict with other routines (RLP = RaiseLowerPipes) hence RLP:type.

doni49
Mentor

P.S. When the user is trying to change a boat load of pipes (but not structures) he won't want to have to pick-one-pipe-at-a-time or create an intricate crossing window to avoid the structures.  That's the only reason I would add this option.

BlackBox_
Advisor

No worries, @doni49

 

I only learned LISP a handful of years ago, and came up learning to use colon in symbols for functions, and asterisks for global vars; just offered a slight mod that made more sense to me, is all (hence the moving setqs under the IF + AND, etc.). 

 

Didn't mean to suggest that you had overlooked something. Smiley Embarassed

 

 

 

Ice cold, Florida sweet tea is my treat... You just need to come down'n get it... This isn't a catering/delivery service. Haha Smiley Very Happy 

 

 

Cheers

aaron.goetsch
Contributor

This should be top priority!!! I am a civil Engineering and I rely on the inverts to these pipes up and down based on design and avoid clashing to others many times in thousand of projects. Its a time consuming to do individual just like he said. raise/lower with a click of a button solved the problem in a second rather than 30 minutes or longer. AUTODESK, please add raise/lower feature in C3D ASAP. Listen to our voice... 

How come Revit can, Navisworks can, but not C3D???

Thanks!

Can't find what you're looking for? Ask the community or share your knowledge.

Submit Idea  

Answer Day

Rail Community


 

Autodesk Design & Make Report