惯性矩LISP
你好确定惯性矩Ixx和Iyy:
将对象转换为并集后,我通常运行MASSPROP来确定质心位置,使用UCS>原点将UCS移动到质心,然后重新运行MASSPROP来查找Ixx和Iyy。在这个过程中,我必须说不,写入文件两次,将给定的Ixx和Iyy除以10x10x10或10000,使单位为cm^4,并添加cm^4,最后进行叠加。
因此,我搜索了一个lisp,它可以自动执行上述操作,并将Ixx和Iyy结果从mm4转换为cm4,并在结果末尾添加cm4(带堆栈),甚至将结果着色为给定颜色以进行强调。
我还发现了一个称为模的lisp。计算截面模量的vlx。然而,结果是mm3,但程序将cm3添加到数字中。我想要真正的cm3结果,尽管我已经在阿卡迪索绘制了一切。dwt和毫米单位。
提前感谢您,
当做
尼古拉斯。 我本以为当UCS位于固体物体的质心上时,它会给我提供与MASSPOP相同的惯性矩值。
奇怪的是,它仍然给了我和我搬到UCS之前一样的价值,有什么想法吗?
(defun c:mprop ()
(setq Sol (vlax-ename->vla-object
(cadar (ssnamex (ssget "_+.:E:S")))))
(command "UCS" "_Origin"(vlax-safearray->List
(variant-value
(vlax-get-property
sol
'centroid))))
(vlax-safearray->List
(variant-value
(vlax-get-property
(vlax-ename->vla-object
(ssname (ssget "_P") 0))
'MomentOfInertia)))
)
UCS世界的惯性矩和质心
质心:X:-4.17387
Y: 11.60698
Z: 1.86385
惯性矩:X:10324.71866
Y: 1739.80075
Z: 11385.86527
将第一个数据的质心用于UCS原点
UCS原点后的惯性矩和质心
质心:X:-2.25548
Y: -2.17830
Z: 1.86385
惯性矩:X:802.80898
Y: 836.23187
Z: 960.38671
选择上一个对象
调用惯性矩的属性
但直到在UCS world上获得相同的价值形式
如果我能想出该怎么做。共变很容易。
我承认,数学是我在学校最不喜欢的科目之一 随附的dwg中包含惯性矩计算,使用第一个massprop查找质心,在ucs原点设置为对象质心后,使用第二个massprop查找质心。我曾尝试应用mprop lisp,但没有成功。每次选择统一区域对象时,我都会出现以下错误:
001 ACAD惯性矩计算.dwg
当做
尼古拉斯。
阅读以下内容:
http://www.cadtutor.net/forum/showthread.php?1390-如何在此存档中使用LISP例程&p=339645&viewfull=1#post339645 按照您描述的方法,尝试以下操作:
(defun c:test ( / *error* cmd m o s )
(defun *error* ( msg )
(if cmd (setvar 'CMDECHO cmd))
(if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
(princ (strcat "\nError: " msg))
)
(princ)
)
(setq cmd (getvar 'CMDECHO))
(setvar 'CMDECHO 0)
(if (setq s (ssget "_+.:E:S" '((0 . "REGION,3DSOLID"))))
(progn
(setq o (vlax-ename->vla-object (ssname s 0)))
(command "_.ucs" "_origin" (vlax-get o 'centroid))
(setq m (vlax-get o 'momentofinertia))
(command "_.ucs" "_p")
(print (mapcar '(lambda ( x ) (/ x 10000.0)) m))
)
)
(setvar 'CMDECHO cmd)
(princ)
)
(vl-load-com) (princ) 你好
我刚刚测试了lisp,它与统一区域对象完美配合,结果设置为cm^3。非常感谢你。我希望您继续使用这种lisp,并将其添加到您广泛的应用程序列表中。如果您可以添加massprop中显示的其他信息,如面积、周长等,那将非常棒。。。和偶数惯性模量,即取Ixx并将其除以和取Iyy并将其除以。这次lisp工作正常,我将文本直接复制到vlide中,并将文件保存在“lisp源文件”下,在“在编辑器中加载文本”后,它工作得很好。我真的很喜欢mm4到cm4的自动转换。这很节省时间。
继续做好工作,非常感谢。
当做
尼古拉斯。 不客气,尼古拉斯,我很高兴这个项目能为你节省工作时间。如果我将来有机会,我可能会进一步开发该程序,但目前我不打算将其添加到我的网站。
李 李,
即使不移动UCS原点。您的代码仍然给出相同的结果。
将其与手动操作相比较,惯性矩值将从不同UCS原点得出不同的结果。
这是我以前的困境。由于我对固体和惯性的知识有限。(就说物理吧)我找不到与#2后的值有任何关联。我认为,在移动UCS原点后,需要进行数学计算以获得新的惯性值。
由于质心特性和momentofinertia特性的值是相对于当前UCS表达的,因此这些值将在UCS更改时更改。我猜想,通过将这些值转换为WCS,然后转换为所需的坐标系,也可以实现正确的结果,但由于我不经常在这一领域工作,所以我只是在这一方面遵循OP。 很公平
谢谢李
页:
[1]
2