I have a problem. At first it said error lisp error: malformed list on input. I edited the code. But some parts came out with abnormal shapes. Some parts are usable. How do I fix it?
(defun c:minus_offset_dist (/ source_data mid_edge_param mid_edge_point edge_start_point edge_end_point angle_ dist pline_copy)
(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
(setq source_data (entsel "\nPick target edge of source pline: "))
(setq mid_edge_param (+ 0.5 (fix (vlax-curve-getparamatpoint (car source_data)
(vlax-curve-getclosestpointto (car source_data) (cadr source_data))))))
(setq mid_edge_point (vlax-curve-getpointatparam (car source_data) mid_edge_param)
edge_start_point (vlax-curve-getpointatparam (car source_data) (1+ (fix mid_edge_param)))
edge_end_point (vlax-curve-getpointatparam (car source_data) (fix mid_edge_param)))
(setq angle_ (cond
((equal (cadr edge_start_point) (cadr edge_end_point)) (* pi 0.5))
((minusp (setq angle_ (atan (apply '/ (mapcar '+ '(0 0) (mapcar '- edge_end_point edge_start_point)))))) (- angle_))
(t (- pi angle_))
))
(setq dist 15)
(setq pline_copy (vla-copy (vlax-ename->vla-object (car source_data))))
(vla-move pline_copy (vlax-3d-point mid_edge_point) (vlax-3d-point (polar mid_edge_point angle_ dist)))
(command "_bpoly" (polar mid_edge_point angle_ (* 0.5 dist)) "")
(entdel (car source_data))
(vla-erase pline_copy)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
(princ)
)

