rln007 发表于 2013-9-7 20:30:24

找到面域最大的做差集是可以实现,不过不知道程序怎么写

nzl1116 发表于 2013-9-7 21:15:58

rln007 发表于 2013-9-7 20:30 static/image/common/back.gif
找到面域最大的做差集是可以实现,不过不知道程序怎么写

面域对象的boolean方法的acSubtraction操作

rln007 发表于 2013-9-7 22:38:28

面域对象的boolean方法的acSubtraction操作,是vba还是c#?vlisp好像没有这些吧,其实选择-boundary命令所生成的面域,找出最大的,用最大的_subtract其它就可以,只是程序不知道怎么写,有高手能帮忙么?

rln007 发表于 2013-9-8 23:11:11

顶一下,别沉了,在线等

rln007 发表于 2013-9-11 00:41:16

再顶,别沉了

ZZXXQQ 发表于 2013-9-11 09:03:28

本帖最后由 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)
)

rln007 发表于 2013-9-13 19:13:06

感谢ZZXXQQ 超级版主,完美解决

页: 1 [2]
查看完整版本: 求助,求内部带孔不规则封闭图形的质心