Stone Templating

Stone Templating

anarie
Enthusiast Enthusiast
2,603 Views
10 Replies
Message 1 of 11

Stone Templating

anarie
Enthusiast
Enthusiast

I often have to make templates for stone on curved walls at my job. How I go about it now is survey the walls, come back into AutoCAD, make a spline connecting all the survey points, and turn that into a polyline consisting of arcs. Then, I make a rectangle of the size that I am able to order and manually move it around the curved wall, placing lines to create templates of stone that fit inside the sizes of stone I am able to order. Is there some way to do this that would be faster? The only method I've come up with so far is an arraypath, which doesn't work well because the curved wall changes from concave to convex, so the maximum arc length switches from one side of the wall to the other. Any help would be greatly appreciated. Thank you!

2018-11-12.jpg

john.vellek has embedded your image(s) for clarity

0 Likes
2,604 Views
10 Replies
Replies (10)
Message 2 of 11

john.vellek
Alumni
Alumni

HI @anarie,

 

If an array path does not work because of the arc direction changes, perhaps you need to break the PLINES up where it changes direction.  With the non-uniform stone sizes I am not sure the best approach from there other than to try to place them using a test with MEASURE or DIVIDE first to see which increments work best.

 

Would you like me to move this to the customization forum to see if there are some more suggestions there?


John Vellek


Join the Autodesk Customer Council - Interact with developers, provide feedback on current and future software releases, and beta test the latest software!

Autodesk Knowledge Network | Autodesk Account | Product Feedback
0 Likes
Message 3 of 11

anarie
Enthusiast
Enthusiast

I was hoping that there would be a solution within AutoCAD tools but I'm open to customization. Thank you.

Message 4 of 11

ВeekeeCZ
Consultant
Consultant

Hi @anarie let's see what's possible. Post some real dwg and specify the rules, the range of what you're able to order.

0 Likes
Message 5 of 11

CodeDing
Advisor
Advisor

@anarie,

 

I was REALLY hoping to get a breakthrough on how to help with this. But no luck from me.

I tried experimenting with 2 lines 2' apart, and just an arbitrary stone 2.5'x6'...

image.png

 

I cannot for the life of me determine how to "Best-Fit" a rectangle to an arc, then overlap with another rectangle, etc...

Perhaps somebody more experienced than I can help here. I will post what little code I do have to maybe jumpstart others...

Good luck.

Best,

~DD

(defun c:STONES ( / pl1 pl2 sizeResp sizeList size#)

;get 2 lines from user
(if (not (setq pl1 (entsel "\nSelect 1st Line: "))) (exit))
(if (not (setq pl2 (entsel "\nSelect 2nd Line: "))) (exit))
;user wants specific size or best fit
(initget "Select Best")
(setq sizeResp (cond ((getkword "\nStone sizing [Select size/Best fit] <Best fit>: ")) ("Best")))
;list for sizes of stones
(setq sizeList (list ;Width / Length (inches for architectural)
		 '(30.0 . 72.0)
		 '(30.0 . 96.0)
		 '(30.0 . 120.0)
		));list;setq
;if user selected "Select size"
(cond
  	((and (eq "Select" sizeResp) (> (length sizeList) 0))
    	(setq size# (SizeReturn sizeList))
	);cond 1
  	((and (eq "Best" sizeResp) (> (length sizeList) 0))
	;
    	;insert function to determine best fit
	;
	(prompt "\nNo function to calculate this yet...")
	);cond 2
);cond
(nth size# sizeList)
;
;;;Do things with stone size
;
);defun


(defun SizeReturn (sizeList / tmp len sizeStr initStr size#)
;IN: size list for stones
;OUT: user selected stone size as nth from sizeList (0 or 1 or 2 etc...)
;set number values for initStr so user can easily choose size
(setq initStr "1"
      tmp 2
      len (length sizeList))
(if (> len 1) (repeat (- len 1) (setq initStr (strcat initStr " " (itoa tmp)) tmp (1+ tmp))))
;create string of sizes so user can see sizes (in architectural
(setq sizestr ""
      tmp 0)
(repeat  len
	(setq sizeStr (strcat sizeStr (itoa (+ 1 tmp)) " ... " (rtos (car (nth tmp sizeList)) 4))
	      sizeStr (strcat sizeStr "x" (rtos (cdr (nth tmp sizeList)) 4) " / ") ;4 is architectural
	      tmp (1+ tmp))
);repeat
;remove last " / " from string
(setq sizeStr (substr sizeStr 1 (- (strlen sizeStr) 3)))
;use initStr for easy user selection
(initget initStr 1)
;convert user response to number correlating to nth in sizeList
(setq size# (- (atoi (getkword (strcat "\nSelect size [" sizeStr "]: "))) 1))
;return nth selection
size#
);defun

 

0 Likes
Message 6 of 11

leeminardi
Mentor
Mentor

I found this an interesting problem so I gave it a little time.

I derived an expression that calculates the spacing distance for rectangles for use with arraypath when used on a concave arc.   The user inputs the arc radius, the rectangle length, and its width.  I created an Excel file with the expression as well as a VLISP program.  In Excel it looks like this:

            =(2*RCave^2*(1-COS(2*ATAN((L/2)/((RCave^2-(L/2)^2)^0.5-W))) )  )^0.5

Where RCave = arc radius, L = the rectangle length, and W = the rectangle width.

 ST1.JPG

The workflow for laying out the stones is as follows given the green polyline in the following sequence.

  1. The rectangles in this example have a length of 4 and a width of 3.  The concave radius is about 14.5.  Using arraypath with a distance of 4 yields this:

ST-1.JPG

 

Note how the bottom left corner touch the green polyline. It is better to use the midpoint of the rectangle as the base point so I shortened the path by L/2. I did  this by creating a circle with a radius of L/2 = 2 at the start of the path and then trimming to it.  This is the result of using arraypath again on the trimmed path. The number of copies is enough to bring the shape to the approximate beginning of the concave portion of the path.  

 

ST-2.JPG

  1. The path is exploded to isolate the concave portion. Using the VLISP program or Excel, the concave distance spacing is determined to be about 5.027
Command: STONECALC
Enter Concave Radius. 14.51
Enter stone length. 4
Enter stone width. 3
angle = 19.9501°
s = 5.02683

The angle value is the angle that could be used in a polar array if desired.

  

  1. A circle of half this distance is created at the bottom right hand corner of the last rectangle to find the midpoint of the first box on the concave arc. Its orientation is determined by a line from that point to the arc’s center (cyan line).  The align command is used to orient the magenta box that will be used with arraypath.

ST-3.JPG

  1. arraypath is then used to create the remainder of the rectangles using the spacing length of 5.027.ST-4.JPGThis process could be streamlined a bit.  For example, the radius could be determined by selecting the arc and then fed into the arraypath command along with the spacing and number of items. 

 

 

(defun c:StoneCalc	(/)
  (setq	R (getreal "\nEnter Concave Radius. ")
	L (getreal "\nEnter stone length. ")
	W (getreal "\nEnter stone width. ")
  )
  (setq	gamma
	 (* 2
	    (atan
	      (/ (/ L 2) (- (expt (- (expt R 2) (expt (/ L 2) 2)) 0.5) W))
	    )
	 )
  )
  (setq gammad (/ (* gamma 180.0) pi))
  (setq s (expt (* 2 (expt R 2) (- 1 (cos gamma))) 0.5))
  (princ "\nangle = ")
  (princ gammad)
  (princ "°\ns = ")
  (princ s)
  (princ)
)

 

lee.minardi
0 Likes
Message 7 of 11

anarie
Enthusiast
Enthusiast

I'm attaching my DWG. This goes a lot faster when the built walls are consistent enough to make few arcs, but usually I end up with either a spline converted to a polyline or a ton of arcs, and that's where it breaks down. This whole process takes me forever. Thank you all for all your help, I'm looking forward to diving into this problem, and hopefully finding a solution.

0 Likes
Message 8 of 11

anarie
Enthusiast
Enthusiast

This looks really close. So, follow-up question before I try to dig into this, and maybe this deserves another post but here goes. I converted a spline into a polyline, so I have probably one hundred termini and midpoints. It seems the best way to solve this problem is to have as few arcs as possible, so is there a way to best fit arcs to spline with a tolerance of let's say 1/2" instead of converting it into a polyline? The goal would be to get as few arcs as possible.

0 Likes
Message 9 of 11

leeminardi
Mentor
Mentor

There are features in Civil 3D for creating a best fit series of arcs.

You might be able to get acceptable results using manual methods and eyeballing it.  Try the following:

Create two splines offset by 0.5" on both sides of the spline. Use color to differentiate between the tolerance band and the original splines. Set osnap to end and near. On a new layer and with a different color create a polyline using the pline command and click the start of the spline.  Click next as far as you can to form a straight section click (neareast) and the type the letter A followed by a space. Click as far along the spline as you can to form an arc that is within the tolerance bands.  Repeat as necessary.  If the spline has an unusually straight segment enter the letter L, click then go back to A for arc.  Use the letter U space, to undo a vertex.  With this process you can create a fairly good polyline composed of arcs and straight segments that falls within the needed tolerance.  It took me less than 5 minutes to create the polyline (yellow) from your spline (red dash) in the attached drawing an I stayed well within the 1/2 inch tolerance.  

 ST-5.JPG

ST-6.JPG

 

lee.minardi
Message 10 of 11

pendean
Community Legend
Community Legend

Out from left field comment/question: have you ever installed large tiles on a curve before? or are you creating a drawing for an installer?

 

I ask because all the examples to date are not how those tiles ever get installed traditionally, even in the image you posted on the right side. You never do these

2.PNG1.PNG

 

This is slightly better, but those Vs are not acceptable to professional installers

3.PNG

 

 You have to cut the tile so that the joints in between are perpendicular to the curve at every location, so you will have more waste (and use up a lot more tiles in the process)

4.PNG

 

 

Hope that helps: talk to an installer before you draft too much or go too far with it.

 

 

0 Likes
Message 11 of 11

anarie
Enthusiast
Enthusiast

Yes, I know how to install curved copings. What you're looking at is not my drawing, but you can find it on one of my replies here.

0 Likes