尝试,在宽度>0.00的LWD多段线上
(孔夫塔蒂斯)
- (defun C:PL2CAN ()
- (setvar "PEDITACCEPT" 1)
- (setvar "CMDECHO" 1)
- (setq gru(ssget '((0 . "LWPOLYLINE")))
- index -1
- modelspace(vla-get-Modelspace (vla-get-activedocument(vlax-get-acad-object)))
- )
- (setvar "HPNAME" "ANSI31")
- (setvar "HPSCALE" 1)
- (repeat (sslength gru)
- (setq spessore(vla-get-ConstantWidth (vlax-ename->vla-object (ssname gru (setq index(1+ index))))))
- (vla-put-ConstantWidth (vlax-ename->vla-object (ssname gru index)) 0.0)
- (setq ent1(car(vlax-safearray->list (vlax-variant-value (vla-offset (vlax-ename->vla-object (ssname gru index)) (/ spessore 2))))))
- (setq ent2(car(vlax-safearray->list (vlax-variant-value (vla-offset (vlax-ename->vla-object (ssname gru index)) (-(/ spessore 2)))))))
- (setq coord1 (variant2lista (vla-get-coordinates ent1) 2))
- (setq coord2 (variant2lista (vla-get-coordinates ent2) 2))
- (cond
- ((eq (vla-get-Closed ent1) :vlax-true)
- (vl-cmdf "_HATCH" "" "" "" (vlax-vla-object->ename ent1)(vlax-vla-object->ename ent2) "")
- )
- ((eq (vla-get-Closed ent1) :vlax-false)
- (vla-addLine modelspace (vlax-3d-point (car coord1))(vlax-3d-point (car coord2)))
- (vl-cmdf "_PEDIT" (entlast) "_J" (vlax-vla-object->ename ent1)(vlax-vla-object->ename ent2) "" "_CL" "")
- (vl-cmdf "_HATCH" "" "" "" (entlast) "")
- )
- )
- )
- )
- ;;; ***************************FUNZIONE VARIANT2LISTA*******************************
- ;;; Trasforma un variant in una lista a gruppi con numero elementi per gruppo
- (defun variant2lista (listavariant numero / listaparz listafin)
- (setq listaparz '()
- listafin '()
- )
- (foreach elemento (vlax-safearray->list (vlax-variant-value listavariant))
- (setq listaparz (append listaparz (list elemento)))
- (if (= (length listaparz) numero)
- (setq listafin (append listafin (list listaparz))
- listaparz '()
- )
- )
- )
- listafin
- )
|