Community
Civil 3D Forum
Welcome to Autodesk’s Civil 3D Forums. Share your knowledge, ask questions, and explore popular AutoCAD Civil 3D topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

very tricky question (at least for me!)

33 REPLIES 33
Reply
Message 1 of 34
Hidden_Brain
1436 Views, 33 Replies

very tricky question (at least for me!)

i have an interesting situation which i am trying to wrap my brain around to see what the best approach might be. I have a block, for which, i need:

1. at two points, need to extract the northing-easting

2. on a third point (along an edge), need to check and make sure that it is at least 24" above the EG immediately below.

 

please see attached image. what is the best way to accomplish this? i researched and found out that I cannot use dynamic blocks for cogo points, was hoping to be able to so that i can at least extract the N-E for multiple locations from the same block. any help is deeply appreciated.

33 REPLIES 33
Message 21 of 34
sboon
in reply to: Hidden_Brain

<meta http-equiv="Content-Type" content="text/plain;" />
CAD file is at home and I'm not until tomorrow night. The point name would be a new column in Excel using concatenate to join the panel id with the post id. You would need another import format to bring this back into the drawing 

Sent from my BlackBerry 10 smartphone on the Bell network.
Steve
Expert Elite Alumnus
Message 22 of 34
sboon
in reply to: sboon

Followup - with pictures, and the files attached. 

 

Clipboard01.png

 

I used your block as a starting point and added cogo points.  #1 is at the center/insertion point of the block.  #2-3 are at the posts and 4-8 are along the edge.  All of the components are joined into a Group, and copied to build rows and columns.  Note - the array command doesn't work in this case; no idea why but the cogo points were erased when I used it.

 

Clipboard02.png

 

Once the array of panel groups was complete I applied the surface elevations to the points and exported them all to csv.  I then used Data Extraction to get the block data out to another csv file.  My blocks don't have any attributes with individual identification, so I created dummy panel names in Excel.

 

Clipboard03.png

 

I also used formulas in Excel to calculate the top of post elevation and to create names for the Panel &  Post cogo points based on matching to the coordinate of the block.

There are several options at this point.  You could add the calculated post height to the point description, erase all of the point in the dwg and re-import only the post points.

 

Steve
Please use the Accept as Solution or Kudo buttons when appropriate

Steve
Expert Elite Alumnus
Message 23 of 34
sboon
in reply to: sboon

More attachments.

 

Steve
Please use the Accept as Solution or Kudo buttons when appropriate

Steve
Expert Elite Alumnus
Message 24 of 34
fcernst
in reply to: Hidden_Brain

I would use a Corridor. Then you could get the points from the point codes and have the panel raise itself a min 24" above ground if needed automatically, instead of having to check for that clearance manually.



Fred Ernst, PE
C3D 2024
Ernst Engineering
www.ernstengineering.com
Message 25 of 34
Hidden_Brain
in reply to: sboon

this is all great stuff Steve, thanks for posting. the part I am not sure is how did you get the panel numbers? i actually tried it with cogo points inside a block before, but could not make it work for elevations. now that i am thinking, i could probably have gotten it to work essentially doing what i ended up doing.

here's what I ended up doing:
1. created three attributes in the panel block, one at the mid point of the lower side edge (PANEL), two others at the center of each post in plan view (LPOST and RPOST)
2. arrayed the block to lay out the panels
3. exploded the array to regain the blocks
4. increment the attributes for each block so that they are incremented as PANEL1-LPOST1-RPORT1, PANEL2-LPOST2-RPOST2 etc and so on
5 dataextracted to get the N-E and El of all the attributes. from there on, used formulas in Excel to calculate the elevations for LPOST and RPOST locations based on distance from PANEL and elevation of PANEL (as obtained from EG).
Message 26 of 34
Hidden_Brain
in reply to: fcernst

I will be interested in knowing your workflow using a corridor. below is what i need out of all this:
1. N-E and El of the sloped bottom edge of each panel (by panel number)
2. N-E and El for each post (tow post for each panel).
Message 27 of 34
sboon
in reply to: Hidden_Brain

I didn't have your lisp for incrementing the panel numbers in the blocks, so I cheated a bit and created some dummy numbers in Excel.  The only real difference between your method and mine is that you put the cogo points inside a block where I used a group instead. 

 

Steve
Please use the Accept as Solution or Kudo buttons when appropriate

Steve
Expert Elite Alumnus
Message 28 of 34
Hidden_Brain
in reply to: sboon

here it is below, i cannot take full credit for it, found one online that i manipulated to fit my needs. do't ask why i called it "alltogether" lol.

 

(defun c:alltogether (/ tagname addno ss en an ad ch)

  (setq tagname "PANELNUM")

  (or def_addno (setq def_addno 1))
  (initget 6)
  (setq addno (getint (strcat "\nStarting Panel Number <"
                                 (itoa def_addno)
                              ">:   ")))
  (or addno (setq addno def_addno))

  (and (setq ss (ssget '((0 . "INSERT")(66 . 1))))
       (while (setq en (ssname ss 0))
              (setq an (entnext en)
                    ad (entget an)
                    ch nil)
              (while (and (= "ATTRIB" (cdr (assoc 0 ad)))
                          (not ch))
                     (and (= (strcase tagname)
                             (strcase (cdr (assoc 2 ad))))
                          (setq ch T)
                          (entmod (subst (cons 1 (strcat "PANEL " (itoa addno)))
                                         (assoc 1 ad) ad))
                          (setq addno (1+ addno)))
                     (setq an (entnext an)
                           ad (entget an)))
              (if ch (entupd en)
                     (progn
                       (redraw en 3)
                       (alert "PANELNUM Tag Not Found In This Insert")
                       (redraw en 1)))
              (ssdel en ss)))
  (setq def_addno addno)
  (prin1)

(setq tagname "LPOST")

  (or def_addno (setq def_addno 1))
  (initget 6)
  (setq addno (getint (strcat "\nStarting LPOST Number <"
                                 (itoa def_addno)
                              ">:   ")))
  (or addno (setq addno def_addno))

  (and (setq ss (ssget '((0 . "INSERT")(66 . 1))))
       (while (setq en (ssname ss 0))
              (setq an (entnext en)
                    ad (entget an)
                    ch nil)
              (while (and (= "ATTRIB" (cdr (assoc 0 ad)))
                          (not ch))
                     (and (= (strcase tagname)
                             (strcase (cdr (assoc 2 ad))))
                          (setq ch T)
                          (entmod (subst (cons 1 (strcat "LPOST " (itoa addno)))
                                         (assoc 1 ad) ad))
                          (setq addno (1+ addno)))
                     (setq an (entnext an)
                           ad (entget an)))
              (if ch (entupd en)
                     (progn
                       (redraw en 3)
                       (alert "LPOST Tag Not Found In This Insert")
                       (redraw en 1)))
              (ssdel en ss)))
  (setq def_addno addno)
  (prin1)

(setq tagname "RPOST")

  (or def_addno (setq def_addno 1))
  (initget 6)
  (setq addno (getint (strcat "\nStarting RPOST Number <"
                                 (itoa def_addno)
                              ">:   ")))
  (or addno (setq addno def_addno))

  (and (setq ss (ssget '((0 . "INSERT")(66 . 1))))
       (while (setq en (ssname ss 0))
              (setq an (entnext en)
                    ad (entget an)
                    ch nil)
              (while (and (= "ATTRIB" (cdr (assoc 0 ad)))
                          (not ch))
                     (and (= (strcase tagname)
                             (strcase (cdr (assoc 2 ad))))
                          (setq ch T)
                          (entmod (subst (cons 1 (strcat "RPOST " (itoa addno)))
                                         (assoc 1 ad) ad))
                          (setq addno (1+ addno)))
                     (setq an (entnext an)
                           ad (entget an)))
              (if ch (entupd en)
                     (progn
                       (redraw en 3)
                       (alert "RPOST Tag Not Found In This Insert")
                       (redraw en 1)))
              (ssdel en ss)))
  (setq def_addno addno)
  (prin1))

 

i noticed that after data extraction, the xls file comes out a little strange (see attached). i was trying to dataextract them in the order:

PANELNUM    LPOST  RPOST   ELEV   NORTH    EAST

 

could not make it come out quite that way. ended up having the attribute names in the same line. the PANELNUM attribute lines up with the correct northing-easting, the N-E for LPOST is two rows up, and for RPOST is one row down.   let me know if you are interested in test running it at your end, and i will upload the CAD file.

Message 29 of 34
fcernst
in reply to: Hidden_Brain

When looking at that grid, I see a meandering alignment of panels at some frequency along the tangents. The panel ID 's could be the stationing.

Sent from my iPhone


Fred Ernst, PE
C3D 2024
Ernst Engineering
www.ernstengineering.com
Message 30 of 34
Hidden_Brain
in reply to: fcernst

you are correct, at one point, i did look at doing it by alignments. cut alignments along centerline of panels and an offset alongment at the sloped edge, created a EG profile and a EG+24" profile, then created a design profile tracing the top of the posts in profile view, and ran a profile elevation difference report at the end to get:
STA EG FG(posts top)

i found it easier to do it with blocks and attributes.
Message 31 of 34
fcernst
in reply to: Hidden_Brain

I would just use one baseline alignment and one assembly. No other profiles or alignments.

Sent from my iPhone


Fred Ernst, PE
C3D 2024
Ernst Engineering
www.ernstengineering.com
Message 32 of 34
Hidden_Brain
in reply to: fcernst

interesting, can you please elaborate a little more?

are you suggesting that i just insert the assembly 24" higher than the EG? how do i control the frequency of assembly placement?
Message 33 of 34
fcernst
in reply to: Hidden_Brain

Reach over and get the EG elevation at that clearance location and build up from there 24" and then back to create the panel.

Sent from my iPhone


Fred Ernst, PE
C3D 2024
Ernst Engineering
www.ernstengineering.com
Message 34 of 34
~Opie
in reply to: Hidden_Brain

What is your ultimate goal for this problem?

 

Are you wanting just a list of 3d point data for the two posts for each panel?

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

Post to forums  

Rail Community


Autodesk Design & Make Report