另一个问题:
蓝色多段线(实际上是颜色152)绘制在红色多段线的顶部。
在附图中,该问题已得到解决,并添加了一条洋红色线。
以该行作为输入,下面的代码给出了合理的结果。但是属于球根突的部分仍然需要手动移动。
- (defun KGA_Conv_Pickset_To_ObjectList (ss / i ret)
- (if ss
- (repeat (setq i (sslength ss))
- (setq ret (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) ret))
- )
- )
- )
- (defun c:Test ( / cur enm inc obj ss sta)
- (setq inc 500.0)
- (setq cur 0.0)
- (setq enm (car (entsel "\nSelect magenta line: ")))
- (setq obj (vlax-ename->vla-object enm))
- (setq ss
- (ssget
- "_F"
- (list
- (trans (setq sta (vlax-get obj 'startpoint)) 0 1)
- (trans (vlax-get obj 'endpoint) 0 1)
- )
- '((0 . "LWPOLYLINE") (-4 . "<OR") (62 . 1) (62 . 152) (-4 . "OR>"))
- )
- )
- (foreach pl
- (mapcar
- 'cadr
- (vl-sort
- (mapcar
- '(lambda (pl) (list (distance sta (vlax-invoke obj 'intersectwith pl acextendnone)) pl))
- (KGA_Conv_Pickset_To_ObjectList ss)
- )
- '(lambda (a b) (< (car a) (car b)))
- )
- )
- (vlax-invoke pl 'move '(0.0 0.0 0.0) (list 0.0 (setq cur (+ cur inc)) 0.0))
- )
- (princ)
- )
框架2。图纸 |