明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2632|回复: 6

求助,求高手编一个“求不规则图形形心坐标”的程序

[复制链接]
发表于 2012-5-17 20:40:31 | 显示全部楼层 |阅读模式
最近遇到一个问题,需要求不规则图形形心的坐标,求高手帮忙!!!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-5-17 22:11:41 | 显示全部楼层
 楼主| 发表于 2012-5-17 23:07:59 | 显示全部楼层
多谢二楼的推荐
发表于 2013-7-7 10:24:16 | 显示全部楼层
借用了哦谢谢
发表于 2017-12-27 12:10:12 | 显示全部楼层
学习了二楼的链接内容
发表于 2023-3-9 22:49:40 | 显示全部楼层
谢谢langjs大神的分享
发表于 2023-3-11 16:27:45 | 显示全部楼层
  1. ;;;=================================================================*
  2. ;;;功能:求多段线构成截面的形心。                                   *
  3. ;;;                                                                 *
  4. ;;;备忘:未考虑多段线是否封闭。                                     *
  5. ;;;      系统变量的修改对其他程序的影响,尚未考虑。                 *
  6. ;;;=================================================================*
  7. ;;;日期:zml84 于 2014-07-16                                        *
  8. ;;;=================================================================*
  9. (defun c:JMTX2 (/ ss  i en ent filename f mj x y ixx iyy)
  10.     (if        (and (princ "\n功能:批量选择多段线,标记形心")
  11.              (setq ss (ssget '((0 . "LWPOLYLINE"))))
  12.              (setq i 0)
  13.              (princ (sslength ss))
  14.         )
  15.         (repeat        (sslength ss)
  16.             (setq en  (ssname ss i)
  17.                   ent (entget en)
  18.             )
  19.             (progn
  20.                 ;;设置系统变量
  21.                 (setvar "CMDECHO" 0)
  22.                 (setvar "FILEDIA" 0)
  23.                 (setvar "LUPREC" 8)
  24.                 (setvar "DELOBJ" 0)
  25.                 ;;制作面域,测量其属性
  26.                 (command "region" en "")
  27.                 (setq filename "d:\\tmp.mpr") ;_文件名
  28.                 (command "massprop" (entlast) "" "y" filename)
  29.                 (entdel (entlast))
  30.                 ;;读取文件,获取数值
  31.                 (setq f (open filename "r"))
  32.                 (read-line f)
  33.                 (read-line f)
  34.                 (read-line f)
  35.                 (setq MJ (atof (substr (read-line f) 25))) ;_面积
  36.                 (read-line f) ;_周长
  37.                 (read-line f) ;_边界x
  38.                 (read-line f) ;_边界Y
  39.                 (setq X (atof (substr (read-line f) 25))) ;_质心x
  40.                 (setq Y (atof (substr (read-line f) 25))) ;_质心y
  41.                 (setq IXX (atof (substr (read-line f) 25))) ;_对x轴惯性矩
  42.                 (setq IYY (atof (substr (read-line f) 25))) ;_对y轴惯性矩
  43.                 (close f)
  44.                 ;;(vl-file-delete filename)
  45.                 ;;平行移轴,计算对通过质心的x轴、y轴惯性矩
  46.                 (setq IXX2 (- IXX (* mj y y))
  47.                       IYY2 (- IYY (* mj x x))
  48.                 )
  49.                 ;;结果显示
  50.                 (princ
  51.                     "\n**************************************************"
  52.                 )
  53.                 (princ (strcat "\n      面  积:  A   = " (rtos mj 2 6))
  54.                 )
  55.                 (princ (strcat "\n      形心坐标: (X,Y)= ("
  56.                                (rtos x 2 6)
  57.                                ","
  58.                                (rtos y 2 6)
  59.                                ")"
  60.                        )
  61.                 )
  62.                 (princ
  63.                     (strcat "\n对质心轴惯性矩:  Ixx = " (rtos IXX2 2 6))
  64.                 )
  65.                 (princ
  66.                     (strcat "\n                 Iyy = " (rtos Iyy2 2 6))
  67.                 )
  68.                 ;;标记圆心
  69.                 (entmake
  70.                     (list
  71.                         '(0 . "CIRCLE")
  72.                         '(62 . 10)
  73.                         '(8 . "00.01 形心标记")
  74.                         (cons 10 (trans (list x y) 1 0))
  75.                         '(40 . 50)
  76.                         '(210 0.0 0.0 1.0)
  77.                     )
  78.                 )
  79.                 ;;恢复系统变量
  80.                 (setvar "FILEDIA" 1)
  81.                 (setvar "LUPREC" 0)
  82.             )
  83.             ;;
  84.             (setq i (1+ i))
  85.         )
  86.     )
  87.     (princ)
  88. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 10:36 , Processed in 0.202253 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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