乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 31|回复: 19

[编程交流] 惯性矩LISP

[复制链接]

60

主题

149

帖子

90

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2022-7-6 08:18:15 | 显示全部楼层 |阅读模式
你好
 
确定惯性矩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和毫米单位。
 
提前感谢您,
 
当做
 
尼古拉斯。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:24:30 | 显示全部楼层
我本以为当UCS位于固体物体的质心上时,它会给我提供与MASSPOP相同的惯性矩值。
奇怪的是,它仍然给了我和我搬到UCS之前一样的价值,有什么想法吗?
 
  1. (defun c:mprop ()
  2. (setq Sol (vlax-ename->vla-object        
  3. (cadar (ssnamex (ssget "_+.:E:S")))))
  4.   
  5. (command "UCS" "_Origin"  (vlax-safearray->List
  6.                               (variant-value
  7.                                     (vlax-get-property
  8.                                           sol
  9.                                           'centroid))))
  10.       (vlax-safearray->List
  11.            (variant-value
  12.                  (vlax-get-property
  13.                        (vlax-ename->vla-object
  14.                              (ssname (ssget "_P") 0))
  15.                        'MomentOfInertia)))
  16.            )

 
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上获得相同的价值形式
 
如果我能想出该怎么做。共变很容易。
我承认,数学是我在学校最不喜欢的科目之一
回复

使用道具 举报

60

主题

149

帖子

90

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2022-7-6 08:26:03 | 显示全部楼层
随附的dwg中包含惯性矩计算,使用第一个massprop查找质心,在ucs原点设置为对象质心后,使用第二个massprop查找质心。我曾尝试应用mprop lisp,但没有成功。每次选择统一区域对象时,我都会出现以下错误:
 
 
001 ACAD惯性矩计算.dwg
 
当做
 
尼古拉斯。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:30:41 | 显示全部楼层
 
阅读以下内容:
http://www.cadtutor.net/forum/showthread.php?1390-如何在此存档中使用LISP例程&p=339645&viewfull=1#post339645
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:32:56 | 显示全部楼层
按照您描述的方法,尝试以下操作:
 
  1. (defun c:test ( / *error* cmd m o s )
  2.    (defun *error* ( msg )
  3.        (if cmd (setvar 'CMDECHO cmd))
  4.        (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
  5.            (princ (strcat "\nError: " msg))
  6.        )
  7.        (princ)
  8.    )
  9.    (setq cmd (getvar 'CMDECHO))
  10.    (setvar 'CMDECHO 0)
  11.    (if (setq s (ssget "_+.:E:S" '((0 . "REGION,3DSOLID"))))
  12.        (progn
  13.            (setq o (vlax-ename->vla-object (ssname s 0)))
  14.            (command "_.ucs" "_origin" (vlax-get o 'centroid))
  15.            (setq m (vlax-get o 'momentofinertia))
  16.            (command "_.ucs" "_p")
  17.            (print (mapcar '(lambda ( x ) (/ x 10000.0)) m))
  18.        )
  19.    )
  20.    (setvar 'CMDECHO cmd)
  21.    (princ)      
  22. )
  23. (vl-load-com) (princ)
回复

使用道具 举报

60

主题

149

帖子

90

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2022-7-6 08:36:40 | 显示全部楼层
你好
 
我刚刚测试了lisp,它与统一区域对象完美配合,结果设置为cm^3。非常感谢你。我希望您继续使用这种lisp,并将其添加到您广泛的应用程序列表中。如果您可以添加massprop中显示的其他信息,如面积、周长等,那将非常棒。。。和偶数惯性模量,即取Ixx并将其除以[y-包围盒值中的较大者]和取Iyy并将其除以[x-包围盒值中的较大者]。这次lisp工作正常,我将文本直接复制到vlide中,并将文件保存在“lisp源文件”下,在“在编辑器中加载文本”后,它工作得很好。我真的很喜欢mm4到cm4的自动转换。这很节省时间。
 
继续做好工作,非常感谢。
 
当做
 
尼古拉斯。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:39:31 | 显示全部楼层
不客气,尼古拉斯,我很高兴这个项目能为你节省工作时间。如果我将来有机会,我可能会进一步开发该程序,但目前我不打算将其添加到我的网站。
 
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:41:35 | 显示全部楼层
李,
即使不移动UCS原点。您的代码仍然给出相同的结果。
将其与手动操作相比较,惯性矩值将从不同UCS原点得出不同的结果。
 
这是我以前的困境。由于我对固体和惯性的知识有限。(就说物理吧)我找不到与#2后的值有任何关联。我认为,在移动UCS原点后,需要进行数学计算以获得新的惯性值。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:46:19 | 显示全部楼层
 
由于质心特性和momentofinertia特性的值是相对于当前UCS表达的,因此这些值将在UCS更改时更改。我猜想,通过将这些值转换为WCS,然后转换为所需的坐标系,也可以实现正确的结果,但由于我不经常在这一领域工作,所以我只是在这一方面遵循OP。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:47:08 | 显示全部楼层
很公平
 
谢谢李
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 07:50 , Processed in 0.402333 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表