Lisp查找重心
是否有lisp来获取某个区域的重心如果有可能得到几个区域的CG
我在想,lisp在CG中绘制了一个点,一个引线显示了指向CG的坐标(或任何东西)
如附件所示
Thanx公司
只是一个脚注填充图案的中心不是所示3个对象的重心。
如果您挤出对象并减去孔,然后列出对象,您将获得真正的重心。这适用于混凝土倾斜面板,但不确定如何将3个面板的重心合并。第一原则可能适用于质心。 嗨,比格尔
是的,你说得对
我删除了我的worng解决方案
~'J'~ thanx fixo公司
thanx BIGAL公司
这就是我要做的,但是
我正在搜索lisp,以节省每个区域挤出的时间
但是我不能得到一个以上的CG领域,在这种情况下,我必须使用另一个程序看起来像SAP或任何时候
我想在AutoCAD中做每件事
Thans全部 我写了一个程序,把一个点放在一个实体或区域的质心上,这可能会有所帮助
美分
http://www.resourcecad.com/programs/
如果我没记错的话,如果选择多个实体或区域,然后使用MASSPROPS,它返回的质心就是所有对象的质心 在质心点绘制圆:
(defun c:gecen(/ cSet cLst oldSnp)
(vl-load-com)
(princ "\n<<<Select Regions or 3D-solids >>> ")
(if(setq cSet(ssget '((0 . "REGION,3DSOLID"))))
(progn
(setq cLst(mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp
(mapcar 'cadr(ssnamex cSet))))
oldSnp(getvar "OSMODE")
); end setq
(mapcar 'setvar (list "OSMODE" "CMDECHO")(list 0 0))
(foreach ent cLst
(if(vlax-property-available-p ent 'Centroid)
(command "_.circle"(vlax-get ent 'Centroid)"50.0")
); end if
); end foreach
(mapcar 'setvar (list "OSMODE" "CMDECHO")(list oldSnp 1))
); end progn
); end if
(princ)
); end of c:gecen Thanx ASMI公司
Lisp程序很好
lisp能为选定的对象获得一个CG吗
当做 好啊
(defun c:gecen(/ cSet cLst oldSnp cCen cAre cmLst gCen)
(vl-load-com)
(princ "\n<<<Select Regions or 3D-solids >>> ")
(if(setq cSet(ssget '((0 . "REGION,3DSOLID"))))
(progn
(setq cLst(mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp
(mapcar 'cadr(ssnamex cSet))))
oldSnp(getvar "OSMODE")
); end setq
(mapcar 'setvar (list "OSMODE" "CMDECHO")(list 0 0))
(foreach ent cLst
(if(vlax-property-available-p ent 'Centroid)
(progn
(setq cCen(vlax-get ent 'Centroid)
cAre(vlax-get ent 'Area)
cmLst(cons(list cCen cAre)cmLst)
); end setq
(command "_.circle" cCen "50.0")
); end progn
); end if
); end foreach
(if
(and
cmLst
(/= 1(length cmLst))
); enad and
(progn
(setq gCen
(list
(/
(apply '+
(mapcar '*
(mapcar 'caar cmLst)(mapcar 'cadr cmLst)))
(apply '+ (mapcar 'cadr cmLst))
); end /
(/
(apply '+
(mapcar '*
(mapcar 'cadar cmLst)(mapcar 'cadr cmLst)))
(apply '+ (mapcar 'cadr cmLst))
); end /
); end list
); end setq
(command "_.circle" gCen "50")
(foreach pt(mapcar 'car cmLst)
(command "_.line" ptgCen "")
); end foreach
); end progn
); end if
(mapcar 'setvar (list "OSMODE" "CMDECHO")(list oldSnp 1))
); end progn
); end if
(princ)
); end of c:gecen
我可以添加带有坐标的引线,但我不知道您需要的文本大小。或者您需要请求文本大小和圆直径 多好的Lisp程序啊
参考引线和文字,可以使用当前样式进行尺寸标注和文字标注吗。
关于选择对象,是否可以选择pline?或者在区域内单击以避免形状上出现任何空洞(如所附图片中的上部形状)
thanx公司 好啊也许明天,今天没有时间。
页:
[1]
2