请教:生成面域时,如果选择的是line的闭合组合,就会出错。 换个主题:如何用vla实现像command中region的效果?????? ;;;CreateRegions 生成面域集合 (defun c:CreateRegions (/ ACADDOC ACADOBJ CUR I MS OBJLST REGIONS SS) ;;ss2elst选择集->图元表 (defun ss2Elst (ss / elst) (setq i 0) (repeat (sslength ss) (setq elst (cons (ssname ss i) elst) i (1+ i) ) ) (reverse elst) ) (setq acadobj (vlax-get-acad-object) acaddoc (vla-get-ActiveDocument acadobj) ms (vla-get-ModelSpace acaddoc) ) (setq ss (ssget '((0 . "*POLYLINE,LINE,CIRCLE,ARC,ELLIPSE,SPLINE,XLINE,RAY" ) ) ) ) (setq objlst (mapcar 'vlax-ename->vla-object (ss2Elst ss))) ;;------------------------------------------------- ;;建立多个面域 (setq cur (vlax-make-safearray vlax-vbObject (cons 0 (- (length objlst) 1)) ) ) ;;这里有时出错"; 错误: Automation 错误。 输入无效" (vlax-safearray-fill cur objlst) (setq regions (vlax-safearray->list (vlax-variant-value (vlax-invoke-method ms 'AddRegion cur)) ;_这里出错 ) ) ;;------------------------------------------------- ;;布尔运算-合并 (foreach obj (cdr regions) (vla-boolean (car regions) acunion obj) ) ;;轮廓上色 (vla-put-Color (vlax-ename->vla-object (entlast)) 3) (princ) )
|