How to produce cutting lists from AutoCAD?

How to produce cutting lists from AutoCAD?

Anonymous
Not applicable
9,482 Views
15 Replies
Message 1 of 16

How to produce cutting lists from AutoCAD?

Anonymous
Not applicable

Hello, I was wondering if it is at all possible to generate a cutting list from CAD drawings. For example I have designed a timber wall panel which would be produced from my drawing and the easiest way to give the information to our machinist would be through an excel or table format cutting list. I have read this can be done through Inventor and other possible plug-ins but have not found a way of just doing it through CAD. For reference I use AutoCAD 2020! any help with this would be hugely appreciated!

 

Many thanks,

Patricia

0 Likes
9,483 Views
15 Replies
Replies (15)
Message 2 of 16

pbejse
Mentor
Mentor

@Anonymous wrote:

Hello, I was wondering if it is at all possible to generate a cutting list from CAD drawings. For example I have designed a timber wall ...

 


 

Yup, it can be done. Say no more!.

Any drawing you can provide would be hugely appreciated!

Also please provde what the desired result on excel or table format cutting list would look like.

 

 

0 Likes
Message 3 of 16

Anonymous
Not applicable

Thank you for replying so quick! In it's most basic form one of the external wall panels would look like the one in the attached image. As for the table, it wouldn't need to be overly complicated the most important information would be Component, Quantity, Length, Width & Thickness.Capture.PNG

0 Likes
Message 4 of 16

pbejse
Mentor
Mentor

Only thing i can tell you that it is doable, but you may need to give us more infomation, and not just a picture.

Details Patricia, details....

 

 

0 Likes
Message 5 of 16

Anonymous
Not applicable

I have attached a dwg. file with the single wall panel in it. The C16 timber studs are 245mm x 45mm as are the cripple studs (grey hatched). Dwangs between studs are 45mm x 45mm. The blue hatched timber is 120 x 45 and it represents a rebate on the cold (external) side of the panel. Let me know if you require any other information

0 Likes
Message 6 of 16

pbejse
Mentor
Mentor

@Anonymous wrote:

I have attached a dwg. file with the single wall panel in it. The C16 timber studs are 245mm x 45mm as are the cripple studs (grey hatched). Dwangs between studs are 45mm x 45mm. The blue hatched timber is 120 x 45 and it represents a rebate on the cold (external) side of the panel. Let me know if you require any other information


Ok, now that we have something to work on. but forgive me not understanding what you are referring to as dwangs and rebate, needed to looked it up on the web. 

 

But i think its better you show a sample of a cut sheet list table? would help us "carpentry ignoramus"  understand what we're looking at :D. I can probably work something out.  

 

 

0 Likes
Message 7 of 16

hak_vz
Advisor
Advisor

Lets start with some code. Here is my code that collects all blocks for a panel and then produce a list of blocks and counts elements of equal length.

(defun c:cutlist nil (cutlist))
(defun cutlist ( / ss i e eo blocknames lens block_list len_list);
(defun LM:unique (lst)(if (and lst) (cons (car lst) (LM:unique (vl-remove (car lst) (cdr lst))))))
(defun LM:getdynpropvalue ( blk prp )
    (setq prp (strcase prp))
    (vl-some '(lambda ( x ) (if (= prp (strcase (vla-get-propertyname x))) (vlax-get x 'value)))
        (vlax-invoke blk 'getdynamicblockproperties)
    )
)

(princ "\nSelect a panel inside closing window >")
(setq ss (ssget '((0 . "insert") (8 . "C16 TIMBER"))))
(setq i 0)
(repeat (sslength ss)
	(setq e (ssname ss i) eo (vlax-ename->vla-object e))
	(if (vlax-property-available-p eo 'effectivename)
		(setq blocknames (cons (vlax-get eo 'effectivename) blocknames))
	)
	(setq i (+ i 1))
)
(setq blocknames (LM:unique blocknames) len_list (list) block_list (list))

(foreach block blocknames 
	(setq i 0 lengthlist nil)
	(repeat (sslength ss)
		(setq e (ssname ss i) eo (vlax-ename->vla-object e))
		(if (vlax-property-available-p eo 'effectivename)
			(if (= (vlax-get eo 'effectivename) block)
				(setq lengthlist (cons (lM:getdynpropvalue eo "Distance1") lengthlist))
			)
		)
		(setq i (+ i 1))
	)
	
	(setq lens (LM:unique lengthlist) i 0 cnt 0)
	(foreach len lens
		(repeat (length lengthlist)
		(if (= len (nth i lengthlist)) (setq cnt (+ cnt 1)))
		(setq i (+ i 1))
		)
		(setq  len_list (append len_list (list(list len cnt))))
		(setq i 0 cnt 0 )
	)
(setq block_list (append block_list (list(list block len_list))) len_list (list) )
)
block_list
)

When run on your sample it produces following list in a format

Block name - list of unique length for that block and its number

(
("1. Timber - Blue Interlocking Flexible Length" ((2275.0 2) (4540.84 1)))
("1. Timber - Flexible Length" ((4360.84 5) (2275.0 3) (92.5 3) (555.0 6) 
(487.5 3))) 
("1. Timber - 245 Cripple Stud Flexible" ((4360.84 8))))

 

This can be converted to a table. Procedure requires precise drafting as well.

Miljenko Hatlak

EESignature

Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
0 Likes
Message 8 of 16

pbejse
Mentor
Mentor

My understanding was, group the items by their usage "Dwangs" "Rebate" "Side Panels" etc..  

 

Dwangs
  	2 ....... 9.25
  	3........ 487.5
  	6........ 555.0

 

or i'm totally off 😄

 

I would've suggested to fix the layers first for easy grouping.

 

0 Likes
Message 9 of 16

hak_vz
Advisor
Advisor

@pbejse  I agree.

She should recreate blocks with names that correspond to building element name. It can be filtered out from present blocks but its not so easy and can always lead to potential error.

Miljenko Hatlak

EESignature

Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
0 Likes
Message 10 of 16

pbejse
Mentor
Mentor

@Anonymous wrote:

I have attached a dwg. file with the single wall panel in it. 


This is a demo code. if you decide to setup your drawing with layers to identify the components

(defun c:demo (/ stuff e i layerName values len f data dbv) 
  (if
    (setq stuff (ssget '((0 . "INSERT"))))
     (progn
       (repeat (setq i (sslength stuff))
	 (setq e	 (vlax-ename->vla-object (ssname stuff (setq i (1- i))))
	       layerName (Vlax-get e 'Layer)
	 )

	 (if (And
	       (minusp (vlax-get e 'IsDynamicBlock))
	       (setq dbv (vl-some
			   '(lambda (p)
			      (if (eq (vla-get-propertyname p)
				      "Distance1"
				  )
				(vlax-get p 'Value)
			      )
			    )
			   (vlax-invoke e 'GetDynamicBlockProperties)
			 )
	       )
	     )
	   (setq
	     data (if (setq f (Assoc layerName data))
		    (subst (list layerName (cons dbv (Cadr f))) f data)
		    (cons (list layerName (list dbv)) data)
		  )
	   )
	 )
       )

       (foreach	itm data 
	 (setq values (cadr itm) len (length values)
	 )
	 (While	(setq a (car values))
	   (setq values	(vl-remove-if
			  (function (lambda (fn)
				      (equal a fn 1e-4 )
				    )
			  )
			  values
			)
	   )
	   (setq tmp (cons (list a (- len (setq len (length values)))) tmp))
	 )
	 (print (list (car itm) tmp))
	 (setq tmp nil)
       )
     )
  )
  (princ)
)
0 Likes
Message 11 of 16

Sea-Haven
Mentor
Mentor

Something worth thinking about is add the 3rd dimension you can use thickness in your blocks so dwangs would reflect 45x45xlength its a bit simpler than making them solids. This would give impression of 3d you could use copy and rotate3d to get side / plan views.

screenshot267.png

 

 

0 Likes
Message 12 of 16

Sea-Haven
Mentor
Mentor

Similar to Hak_z I also have a quantity of blocks using attributes you can get how many for multiple blocks with different number of attributes and supports same name block with different attribute values, so would look at dwangs and give a cut list of how many of each length. It uses attributes so would need some changes to work with dynamic block properties as it uses a list of all the values. Creates a table of the quantities.

 

By using timber size rather than name a cut list would be produced but like Pbe have no idea if that would be ok.

It is still under development and will not be free but cheap. I will try to find time to test with the supplied dwg.

 

 

0 Likes
Message 13 of 16

Sea-Haven
Mentor
Mentor

With thickness

 

screenshot268.png

 

0 Likes
Message 14 of 16

Sea-Haven
Mentor
Mentor

This forum is a pain not being able to edit a post and having to add if you think of something better.

 

As the timber piece is used in numerous situations but has no height, but has a width like 45mm, so a better way around 245x45 is to make the block with a thickness of 1. When using the dynamic block just set the Z scale to the thickness. Then block just has to be called "45" so you can get all 3 now,length, width, height. Add an invisble attribute timber type hardwood, pine etc.

 

screenshot269.png

0 Likes
Message 15 of 16

john.uhden
Mentor
Mentor

I think the plural of ignoramus is ignorami, you know, like alumnus -> alumni

But a female dope might be ignorama, the plural of which would be ignoramae.

... said the first valedictorian of The Ranney School,

where I also learned some French ... "cut the grass" translates to "mow ze lawn."

John F. Uhden

0 Likes
Message 16 of 16

pbejse
Mentor
Mentor

@john.uhden wrote:

I think the plural of ignoramus is ignorami... 

where I also learned some French ... "cut the grass" translates to "mow ze lawn."


Thank you the lessons in Latin professor Uhden 😊 

pbejse_0-1602333244368.png

as for the french hmmn... I just dont know about that one  😁

 

 

0 Likes