找到面域最大的做差集是可以实现,不过不知道程序怎么写
面域对象的boolean方法的acSubtraction操作 面域对象的boolean方法的acSubtraction操作,是vba还是c#?vlisp好像没有这些吧,其实选择-boundary命令所生成的面域,找出最大的,用最大的_subtract其它就可以,只是程序不知道怎么写,有高手能帮忙么? 顶一下,别沉了,在线等 再顶,别沉了 本帖最后由 ZZXXQQ 于 2013-9-14 08:00 编辑
;取得带孔区域的质心 明经 ZZXXQQ 2013.9.11
(defun c:tt ()
(vl-load-com)
(setvar "CMDECHO" 0)
(command ".UNDO" "BE")
(if (setq pt (getpoint "\n选择内部点(不能选择在内部孔上)<右键退出> : ")) (progn
(setq s1 (entlast) s2 s1 areass (list))
(command "-boundary" "a" "o" "r" "" pt "")
(while (setq s1 (entnext s1))
(command "_AREA" "O" s1)
(setq areass (cons(list (getvar "AREA") s1) areass))
)
(setq areass (vl-sort areass '(lambda (a b) (> (car a) (car b)))))
(setq s1 (cadar areass) ss (ssadd))
(foreach x (cdr areass) (ssadd (cadr x) ss))
(command "_SUBTRACT" s1 "" ss "")
(command ".UNDO" "E")
(setq newentlast (entlast))
(setq ptzx
(vlax-safearray->list
(vlax-variant-value
(vla-get-centroid (vlax-ename->vla-object newentlast))
)
)
) ;_取得质心
(command "U")
(command "_POINT" ptzx)
))
(setvar "CMDECHO" 1)
(princ)
)
感谢ZZXXQQ 超级版主,完美解决
页:
1
[2]