something jist like that. two offset lines should be picked.
(defun c:shaded_cylinder (/ right_edge right_edge_mid_point left_edge cylinder_width cylinder_height mid_point mid_right_angle grread_data parts index part_list lines
line_list cylinder_group
)
(setq right_edge (entsel "\nPick 1st edge of cylinder: ")
right_edge_mid_point (mapcar '* '(0.5 0.5) (mapcar '+ (vlax-curve-getstartpoint (car right_edge)) (vlax-curve-getendpoint (car right_edge))))
left_edge (entsel "\nPick 2nd edge of cylinder: ")
cylinder_width (distance right_edge_mid_point (setq left_edge_mid_point (vlax-curve-getclosestpointto (car left_edge) right_edge_mid_point)))
cylinder_height (distance (vlax-curve-getstartpoint (car right_edge)) (vlax-curve-getendpoint (car right_edge)))
mid_point (mapcar '* '(0.5 0.5) (mapcar '+ right_edge_mid_point left_edge_mid_point))
mid_right_angle (angle mid_point right_edge_mid_point)
)
(while (/= 3 (car (setq grread_data (grread t 12 0))))
(redraw)
(setq parts (fix (* 10 (/ (distance mid_point
(inters mid_point (polar mid_point mid_right_angle 1)
(cadr grread_data) (polar (cadr grread_data) (+ mid_right_angle (* 0.5 pi)) 1)
nil
)
)
(* 0.5 cylinder_width)
)
)
)
index 0
part_list nil
)
(if (zerop (rem parts 2)) (setq parts (1+ parts)))
(setq lines
(mapcar '(lambda (part_angle) (list 1 (polar (setq point (polar mid_point mid_right_angle (* 0.5 cylinder_width (cos part_angle))))
(+ mid_right_angle (* 0.5 pi)) (* 0.5 cylinder_height)
)
(polar point (- mid_right_angle (* 0.5 pi)) (* 0.5 cylinder_height))
)
)
(mapcar '(lambda (part) (* (/ pi parts) part))
(repeat (1- parts) (setq part_list (append part_list (list (setq index (1+ index))))))
)
)
)
(mapcar 'grvecs lines)
)
(redraw)
(setq line_list
(mapcar '(lambda (line) (vla-addline (vla-get-block (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))
(vlax-3d-point (cadr line))
(vlax-3d-point (caddr line))
)
)
lines
)
cylinder_group (vla-add (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) (vl-filename-base (vl-filename-mktemp "Clndr")))
)
(vla-appenditems cylinder_group (vlax-safearray-fill (vlax-make-safearray vlax-vbobject (cons 0 (1+ (length line_list))))
(append line_list (mapcar 'vlax-ename->vla-object (mapcar 'car (list right_edge left_edge))))
)
)
(princ)
)