here is an example
Code:
; bubble pt num
; BY ALAN H AUG 2014
(defun make_circle ()
(entmake (list (cons 0 "CIRCLE")
(cons 8 "0")
(cons 10 (list 0 0 0))
(cons 40 3.25) ; rad
(cons 210 (list 0 0 1))
(cons 62 256)
(cons 39 0)
(cons 6 "BYLAYER")
)
)
) ; DEFUN
(defun make_sq ()
(setq vertexList
(list
(list -3.25 -3.25 0.)
(list 3.25 -3.25 0.)
(list 3.25 3.25 0.)
(list -3.25 3.25 0.)
))
(entmake
(append
(list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
(cons 90 (length vertexList))
(cons 70 1) ; 1 closed : 0 open
(cons 8 "0")
(cons 38 0.0)
(cons 210 (list 0.0 0.0 1.0))
)
(mapcar '(lambda (pt) (cons 10 pt)) vertexList)
)
)
) ; defun
(defun Make_bubble ( )
(entmake (list (cons 0 "BLOCK")
(cons 2 Blkname)
(cons 70 2)
(cons 10 (list 0 0 0))
(CONS 8 "0")
))
(if (= resp "C")
(make_circle)
(make_sq)
)
(entmake (list (cons 0 "ATTDEF")
(cons 8 "0")
(cons 10 (list 0 0 0))
(cons 1 "1") ; default value
(cons 2 blkname) ; nblock name
(cons 3 "Ptnum") ; tag name
(cons 6 "BYLAYER")
(cons 7 "STANDARD") ;text style
(cons 8 "0") ; layer
(cons 11 (list 0.0 0.0 0.0)) ; text insert pt
(cons 39 0)
(cons 40 3.5) ; text height
(cons 41 1) ; X scale
(cons 50 0) ; Text rotation
(cons 51 0) ; Oblique angle
(cons 62 256) ; by layer color
(cons 70 0)
(cons 71 0) ;Text gen flag
(cons 72 1) ; Text Justify hor 1 center
(cons 73 0) ; field length
(cons 74 2) ; Text Justify ver 2 center
(cons 210 (list 0 0 1))
))
(entmake (list (cons 0 "ENDBLK")))
(princ)
)
(defun C:bub (/ ptnum ptnumb pt pt2 oldsnap chrnum sc curspace)
(if (= 1 (getvar 'cvport))
(setq sc 1.0)
(setq sc (* 3.5 (/ (getreal "\nEnter plotting scale") 1000.0 )))
)
(setq oldsnap (getvar "osmode"))
(setvar "textstyle" "standard")
(setq ptnum (getstring "\nEnter Pt Number or alpha"))
(setq chrnum (ascii (substr ptnum 1 1))) ; 1st character is number
(if (< chrnum 58)
(setq ptnumb (atof ptnum)) ;convert back to a number
)
(ALERT "Pick end of line Enter to exit")
(while (setq pt (getpoint "\Pick end of line Enter to exit"))
(setq pt2 (polar pt (/ pi 2.0) 3.25))
(setvar "osmode" 0)
(if (< chrnum 58)
(progn
(command "-insert"
blkname
pt
sc
""
0
(rtos ptnumb 2 0)
)
(setq ptnumb (+ ptnumb 1))
)
(progn
(command "-insert"
blkname
pt
sc
""
0
(chr chrnum)
)
(setq chrnum (+ chrnum 1))
)
)
(command "move" "L" "" pt pt2)
(setvar "osmode" 1)
)
(setvar "osmode" oldsnap)
(princ)
) ; end defun
;;;;;;
; program starts here checking
(alert "Type Bub to repeat\nYou can do alpha's or numbers\nSquare or circles")
(initget 6 "S s C c")
(setq resp (strcase
(Getkword "\nDo you want Circle or Square C or S <C> ")
)
)
(if (or (= resp "C") (= resp nil))
(setq blkname "SETOUT_POINT_NO")
(setq blkname "SETOUT_POINT_NOSQ")
)
(setq att (getvar 'attdia))
(setvar 'attdia 0)
(if (/= (tblsearch "BLOCK" blkname) NIL)
(PRINC "FOUND") ; block exists
(Make_bubble)
)
(C:BUB)
(setvar 'attdia att)
(princ)