我没有时间测试它
试一试,但对未使用的部分进行注释
在***,
如果您不想按图片所示插入块
- (defun C:test(/ ang cumm_dist dis dist_list leng obj pt)
- (vl-load-com)
- ;; build master list of the distances, starting from 0.0 - important!
- (setq dist_list '(0.0 1000.0 2000.0 3000.0 4000.0 5000.0))
- (setq cumm_dist (apply '+ dist_list))
-
- (setq dis 0.0)
- (setq obj (vlax-ename->vla-object (car (entsel "\n >> Select profile >>"))))
- (setq leng (vlax-curve-getdistatpoint obj (vlax-curve-getendpoint obj)))
- ;; check if pline length is not less than the cumulative distance
- (if (< leng cumm_dist)
- (progn
- (alert "Pline length is less then summary distance")
- (princ)
- )
-
- (while (< dis cumm_dist)
- (setq dis (+ dis (car dist_list)))
- (setq pt (vlax-curve-getpointatdist obj dis))
- ;;;***
- ;;to insert block named "tick":
- ;; get angle:
- (setq ang (angle '(0 0 0)
- (vlax-curve-getfirstderiv obj
- (vlax-curve-getparamatpoint obj pt))))
- ;;insert block:
- (vlax-invoke (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
- 'InsertBlock pt "tick" 1 1 1 ang);***
-
- ;;or draw point:
- (vlax-invoke (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
- 'AddPoint pt)
- (setq dist_list (cdr dist_list))
- )
- )
- (princ)
- )
~'J'~ |