I got a bit of inspiration from
this, and I thought I'd write a bunch of functions that use the minimum requirements to generate an entity, mainly for those who want to quickly produce an entity, without having to look up which codes are needed, and which aren't.
Of course, the list is a working progress, but this is what I have so far:
(defun 3DFace (p1 p2 p3 p4)
(entmakex (list (cons 0 "3DFACE")
(cons 10 p1)
(cons 11 p2)
(cons 12 p3)
(cons 13 p4))))
(defun Arc (cen rad sAng eAng)
(entmakex (list (cons 0 "ARC")
(cons 10 cen)
(cons 40 rad)
(cons 50 sAng)
(cons 51 eAng))))
(defun AttDef (tag prmpt def pt hgt flag)
(entmakex (list (cons 0 "ATTDEF")
(cons 10 pt)
(cons 40 hgt)
(cons 1 def)
(cons 3 prmpt)
(cons 2 tag)
(cons 70 flag))))
(defun Circle (cen rad)
(entmakex (list (cons 0 "CIRCLE")
(cons 10 cen)
(cons 40 rad))))
(defun Ellipse (cen maj ratio)
(entmakex (list (cons 0 "ELLIPSE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbEllipse")
(cons 10 cen)
(cons 11 maj)
(cons 40 ratio)
(cons 41 0)
(cons 42 (* 2 pi)))))
(defun Insert (pt Nme)
(entmakex (list (cons 0 "INSERT")
(cons 2 Nme)
(cons 10 pt))))
(defun Line (p1 p2)
(entmakex (list (cons 0 "LINE")
(cons 10 p1)
(cons 11 p2))))
(defun LWPoly (lst cls)
(entmakex (append (list (cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 (length lst))
(cons 70 cls))
(mapcar (function (lambda (p) (cons 10 p))) lst))))
(defun M-Text (pt str)
(entmakex (list (cons 0 "MTEXT")
(cons 100 "AcDbEntity")
(cons 100 "AcDbMText")
(cons 10 pt)
(cons 1 str))))
(defun Point (pt)
(entmakex (list (cons 0 "POINT")
(cons 10 pt))))
(defun Polyline (lst)
(entmakex (list (cons 0 "POLYLINE")
(cons 10 '(0 0 0))))
(mapcar
(function (lambda (p)
(entmake (list (cons 0 "VERTEX") (cons 10 p))))) lst)
(entmakex (list (cons 0 "SEQEND"))))
(defun Solid (p1 p2 p3 p4)
(entmakex (list (cons 0 "SOLID")
(cons 10 p1)
(cons 11 p2)
(cons 12 p3)
(cons 13 p4))))
(defun Text (pt hgt str)
(entmakex (list (cons 0 "TEXT")
(cons 10 pt)
(cons 40 hgt)
(cons 1 str))))
(defun Trce (p1 p2 p3 p4)
(entmakex (list (cons 0 "TRACE")
(cons 10 p1)
(cons 11 p2)
(cons 12 p3)
(cons 13 p4))))
(defun xLine (pt vec)
(entmakex (list (cons 0 "XLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbXline")
(cons 10 pt)
(cons 11 vec))))
(defun Layer (Nme)
(entmake (list (cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2 Nme)
(cons 70 0))))
(defun Layer (Nme Col Ltyp LWgt Plt)
(entmake (list (cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2 Nme)
(cons 70 0)
(cons 62 Col)
(cons 6 Ltyp)
(cons 290 Plt)
(cons 370 LWgt))))