Hi,
A start for you. I hope can help you?
Code:
(vl-load-com)
((lambda ( / js vlaobj perim_obj d_x lst_pt pt_last rad inc pt)
(princ (strcat"\nSelect kerbline."))
(while
(not
(setq js
(ssget "_+.:E:S"
(list
(cons 0 "*POLYLINE,ARC,SPLINE")
(cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
(cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
(cons -4 "<NOT")
(cons -4 "&") (cons 70 112)
(cons -4 "NOT>")
)
)
)
)
)
(setq
vlaobj (vlax-ename->vla-object (ssname js 0))
perim_obj (vlax-curve-getDistAtParam vlaobj (vlax-curve-getEndParam vlaobj))
d_x 0.0
lst_pt nil
pt_last nil
rad perim_obj
inc perim_obj
)
(while (>= rad perim_obj)
(initget 7)
(setq rad (getdist "\nDistance of visibility?: "))
(if (>= rad perim_obj) (princ "\nDistance execeded length kerbline!"))
)
(while (>= inc perim_obj)
(initget 7)
(setq inc (getdist "\nDistance of resolution?: "))
(if (>= inc perim_obj) (princ "\nDistance execeded length kerbline!"))
)
(while (< d_x perim_obj)
(setq
lst_pt (cons (vlax-curve-getPointAtDist vlaobj d_x) lst_pt)
d_x (+ d_x inc)
)
)
(while lst_pt
(entmake
(append
'(
(0 . "CIRCLE")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "splay")
(60 . 1)
(62 . 256)
(6 . "ByLayer")
(370 . -2)
(100 . "AcDbCircle")
)
(list (cons 40 rad))
(list (cons 10 (car lst_pt)))
'((210 0.0 0.0 1.0))
)
)
(setq pt (vlax-invoke vlaobj 'IntersectWith (vlax-ename->vla-object (entlast)) acExtendNone))
(if (and pt pt_last (> (length pt) 3))
(if (> (distance (list (car pt) (cadr pt) (caddr pt)) pt_last) (distance (list (cadddr pt) (car (cddddr pt)) (last pt)) pt_last))
(setq pt (list (cadddr pt) (car (cddddr pt)) (last pt)))
(setq pt (list (car pt) (cadr pt) (caddr pt)))
)
)
(entdel (entlast))
(if pt
(entmake
(append
'(
(0 . "LINE")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "splay")
(62 . 256)
(6 . "ByLayer")
(370 . -2)
(100 . "AcDbLine")
)
(list (cons 10 (car lst_pt)))
(list (cons 11 pt))
'((210 0.0 0.0 1.0))
)
)
)
(setq lst_pt (cdr lst_pt) pt_last pt)
)
(prin1)
))