找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 759|回复: 9

[LISP函数]:如何用lisp获得region的详细信息?

[复制链接]
发表于 2002-10-25 21:45:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
生成region后 用查询后得到的信息如何用lisp获得?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-10-25 21:48:05 | 显示全部楼层
使用entget
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-25 22:01:54 | 显示全部楼层
我想得到 region 的形心,惯性矩.....,entget得到的表里没有啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-26 11:53:17 | 显示全部楼层
自己算
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-26 11:57:52 | 显示全部楼层
最初由 lxf-ysy 发布
[B]我想得到 region 的形心,惯性矩.....,entget得到的表里没有啊 [/B]


使用XDRX_API,可得到任何曲线和REGION的信息。


  1. [FONT=courier new]
  2. 功能:获得AcDbCurve曲线实体(polyline,lwpolyline,arc,circle,ellipse,spline)
  3.      和AcDbRegion(REGION面域)实体的面积,周长,质心,惯性矩,回转半径,边界盒等信息。
  4.      (得到的信息同命令massprop得到的Region的信息。但对于曲线不用得到region就能求得。

  5. 调用格式:(xdrx_curve_info <曲线实体或REGION实体名 )

  6. 返回值:各个信息组成的关联表。

  7. 说明:对于不封闭的曲线,面积是把曲线开始点和终止点用直线闭合后的面积
  8.      但周长不计算最后的封闭直线段的长度。

  9. 示例:下面信息使用该函数得到的Polyline的信息。

  10. [color=blue]    (("Perimeter" 26485.5) ("Area" 8.96831e+007) ("Centroid" (18350.9 11745.1))
  11.       ("MomInertia" 1.30432e+016 3.09809e+016) ("ProdInertia" 1.95954e+016)
  12.       ("PrinMoments" 4.54504e+014 9.96837e+014) ("PrinAxes" (0.774289 0.632833) (-0.632833 0.774289))
  13.       ("RadGyration" 12059.7 18586.2) ("Box" (11075.9 6655.67) (23993.4 17421.3))
  14.      )     
  15.      [/color]
  16.      下面是MASSPROP命令得到的转换为Region后的POLYLINE的信息。和上面得到的信息在周长上不同。
  17.      因为做面域的时候用了封闭的线。
  18.      Command: massprop                                      
  19.                                                             
  20.      Select objects: 1 found                                
  21.                                                             
  22.      Select objects:                                       
  23.                                                             
  24.       ----------------   REGIONS   ----------------         
  25.                                                             
  26.      Area:                    89683065                     
  27.      Perimeter:               37673                        
  28.      Bounding box:         X: 11076  --  23993              
  29.                            Y: 6656  --  17421               
  30.      Centroid:             X: 18351                        
  31.                            Y: 11745                        
  32.      Moments of inertia:   X: 1E+16                        
  33.                            Y: 3E+16                        
  34.      Product of inertia:  XY: 2E+16                        
  35.      Radii of gyration:    X: 12060                        
  36.                            Y: 18586                        
  37.      Principal moments and X-Y directions about centroid:   
  38.                            I: 454503674971976 along [1 1]   
  39.                            J: 996836689445791 along [-1 1]   
  40.     各参数意义:

  41.     下表列出了 AutoCAD 为实体显示的质量特性。                                                                                                                                                                                            
  42.                                                                                                                                                                                                            
  43.     实体的质量特性                                                                                                                                                                                         
  44.                                                                                                                                                                                                       
  45.     质量特性        描述                                                                                                                                                                              
  46.     质量        用于度量物体的惯性。AutoCAD 使用的密度为 1,所以质量和体积的值相同。                                                                                                                     
  47.     体积        实体包容的三维空间总量。                                                                                                                                                                  

  48.     面积        (Area)        实体的表面面积或面域的封闭面积。

  49.     周长        (Perimeter)        面域的内环和外环的总长度。AutoCAD 不计算实体的周长。

  50.     质心        (Centroid)        代表面域中心点的二维或三维坐标。对于与当前用户坐标系的 XY 平面共面的面域,
  51.                           质心是一个二维点。对于与当前用户坐标系的 XY 平面不共面的面域,质心是一个三维点。

  52.     惯性矩(MomInertia)          质量惯性矩,用来计算绕给定的轴旋转对象(例如车轮绕车轴旋转)时所需的力。            
  53.                           惯性矩的计算公式是:质量惯性矩 = 对象质量*轴半径*轴半径                              
  54.                           质量惯性矩的单位是质量(克或斯勒格)乘以距离的平方。                                 
  55.                                                                                                 
  56.     惯性积(ProdInertia)   用来确定导致对象运动的力,通常通过两个正交平面计算。计算 YZ 平面和 XZ 平面           
  57.                          惯性积的公式是:惯性积(YZ,XZ) = 质量*质心到平面 YZ 的距离*质心到平面 XZ 的距离      
  58.                          这个 XY 值的单位是质量乘以距离的平方。                                               

  59.     旋转半径(RadGyration)  表示实体惯性矩的另一种方法。                                                
  60.                           计算旋转半径的公式是:旋转半径=(惯性积 / 物体质量)1/2 旋转半径的单位就是距离单位。                                                                  
  61.    
  62.     主力矩和质心的 X、Y、Z 轴        (PrinMoments)  (PrinAxes)                                                        
  63.                           由惯性积得出,它们具有相同单位。在对象的质心处有一个确定的轴,                       
  64.  ?                       对应这个轴的惯性矩最大。另有一个轴与第一个轴相垂直,并且也通过质心,对应它的惯性矩最?
  65.                           由此导出第三个轴,其惯性矩介于最大值与最小值之间。                                   
  66.                                                                                                 
  67.     边界框(Box)                  显示用于定义边界框的两个坐标。对于与当前用户坐标系的 XY 平面共面的面域,            
  68.                           边界框由包含该面域的矩形的对角点定义。对于与当前用户坐标系的 XY 平面不共面的面域,   
  69.                           边界框由包含该面域的三维的对角点定义。                                               [/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-26 19:07:21 | 显示全部楼层
收到 多谢xxxd(3x限制级晓东 呵呵)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-26 19:13:50 | 显示全部楼层
最初由 lxf-ysy 发布
[B]收到 多谢xxxd(3x限制级晓东 呵呵) [/B]


程序写好后,可以贴到论坛吗?谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-27 15:15:57 | 显示全部楼层
如果仅是为了形心和惯性矩和面积也可用VLISP代码如下:


  1. [FONT=courier new]
  2. (defun c:test1 ( / myobj 重心 面积 X轴的惯性矩 Y轴的惯性矩)
  3.   (setq myobj (vlax-ename->vla-object (car (entsel "\选择一个面域:"))))
  4.   (if (= (vlax-get myobj "EntityName") "AcDbRegion")
  5.     (progn (setq 重心             (vlax-get myobj "Centroid")
  6.                  面积             (vlax-get myobj "Area")
  7.                  X轴的惯性矩 (car (vlax-get myobj "MomentOfInertia"))
  8.                  Y轴的惯性矩 (cadr (vlax-get myobj "MomentOfInertia"))
  9.            )
  10.     )
  11.   )
  12. )
  13. [/FONT]

你可用字母替代中文,我是为了让你好理解:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-27 15:22:59 | 显示全部楼层
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00b4c6e4>
;   Area (RO) = 1.0
;   Centroid (RO) = (10.0 10.0)
;   Color = 256
;   EntityName (RO) = "AcDbRegion"
;   EntityType (RO) = 28
;   Handle (RO) = "B3"
;   Layer = "0"
;   Linetype = "BYLAYER"
;   LinetypeScale = 1.0
;   MomentOfInertia (RO) = (100.083 100.083)
;   Normal (RO) = (0.0 0.0 1.0)
;   ObjectID (RO) = 64227800
;   Perimeter (RO) = 4.0
;   PrincipalDirections (RO) = (1.0 0.0 0.0 1.0)
;   PrincipalMoments (RO) = (0.0833333 0.0833333)
;   ProductOfInertia (RO) = 100.0
;   RadiiOfGyration (RO) = (10.0042 10.0042)
;   Visible = -1

上面是VLISP中能得到的面域的属性

你可参照该数据用 (vlax-get myobj "MomentOfInertia") 类似的方法取你所需要的东西!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-28 01:30:44 | 显示全部楼层
Vlisp我就不知道了。
我刚刚从R14换到2002
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-1 08:42 , Processed in 0.537560 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表