乐筑天下

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

[编程交流] Lisp查找重心

[复制链接]

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-5 16:41:59 | 显示全部楼层 |阅读模式
是否有lisp来获取某个区域的重心
 
如果有可能得到几个区域的CG
 
我在想,lisp在CG中绘制了一个点,一个引线显示了指向CG的坐标(或任何东西)
如附件所示
 
Thanx公司
174200k3x33nn3anojuf0h.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:46:03 | 显示全部楼层
只是一个脚注填充图案的中心不是所示3个对象的重心。
 
如果您挤出对象并减去孔,然后列出对象,您将获得真正的重心。这适用于混凝土倾斜面板,但不确定如何将3个面板的重心合并。第一原则可能适用于质心。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 16:50:32 | 显示全部楼层
嗨,比格尔
是的,你说得对
我删除了我的worng解决方案
 
~'J'~
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-5 16:53:35 | 显示全部楼层
thanx fixo公司
thanx BIGAL公司
这就是我要做的,但是
我正在搜索lisp,以节省每个区域挤出的时间
 
但是我不能得到一个以上的CG领域,在这种情况下,我必须使用另一个程序看起来像SAP或任何时候
 
我想在AutoCAD中做每件事
 
Thans全部
回复

使用道具 举报

18

主题

222

帖子

51

银币

后起之秀

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

铜币
260
发表于 2022-7-5 16:55:37 | 显示全部楼层
我写了一个程序,把一个点放在一个实体或区域的质心上,这可能会有所帮助
美分
http://www.resourcecad.com/programs/
 
 
如果我没记错的话,如果选择多个实体或区域,然后使用MASSPROPS,它返回的质心就是所有对象的质心
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-5 16:59:45 | 显示全部楼层
在质心点绘制圆:
 
  1. (defun c:gecen(/ cSet cLst oldSnp)
  2. (vl-load-com)
  3. (princ "\n<<<Select Regions or 3D-solids >>> ")
  4. (if(setq cSet(ssget '((0 . "REGION,3DSOLID"))))
  5.    (progn
  6.      (setq cLst(mapcar 'vlax-ename->vla-object
  7.                       (vl-remove-if 'listp
  8.                         (mapcar 'cadr(ssnamex cSet))))
  9.     oldSnp(getvar "OSMODE")
  10.     ); end setq
  11.      (mapcar 'setvar (list "OSMODE" "CMDECHO")(list 0 0))
  12.      (foreach ent cLst
  13. (if(vlax-property-available-p ent 'Centroid)
  14.             (command "_.circle"(vlax-get ent 'Centroid)"50.0")
  15.   ); end if
  16. ); end foreach
  17.      (mapcar 'setvar (list "OSMODE" "CMDECHO")(list oldSnp 1))
  18.      ); end progn
  19.    ); end if
  20. (princ)
  21. ); end of c:gecen
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-5 17:02:08 | 显示全部楼层
Thanx ASMI公司
 
Lisp程序很好
lisp能为选定的对象获得一个CG吗
 
当做
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-5 17:06:56 | 显示全部楼层
好啊
  1. (defun c:gecen(/ cSet cLst oldSnp cCen cAre cmLst gCen)
  2. (vl-load-com)
  3. (princ "\n<<<Select Regions or 3D-solids >>> ")
  4. (if(setq cSet(ssget '((0 . "REGION,3DSOLID"))))
  5.    (progn
  6.      (setq cLst(mapcar 'vlax-ename->vla-object
  7.                       (vl-remove-if 'listp
  8.                         (mapcar 'cadr(ssnamex cSet))))
  9.     oldSnp(getvar "OSMODE")
  10.     ); end setq
  11.      (mapcar 'setvar (list "OSMODE" "CMDECHO")(list 0 0))
  12.      (foreach ent cLst
  13. (if(vlax-property-available-p ent 'Centroid)
  14.   (progn
  15.     (setq cCen(vlax-get ent 'Centroid)
  16.           cAre(vlax-get ent 'Area)
  17.           cmLst(cons(list cCen cAre)cmLst)
  18.           ); end setq
  19.            (command "_.circle" cCen "50.0")
  20.            ); end progn
  21.   ); end if
  22. ); end foreach
  23.    (if
  24.      (and
  25. cmLst
  26. (/= 1(length cmLst))
  27. ); enad and
  28.      (progn
  29. (setq gCen
  30.        (list
  31.          (/
  32.            (apply '+
  33.               (mapcar '*
  34.                  (mapcar 'caar cmLst)(mapcar 'cadr cmLst)))
  35.            (apply '+ (mapcar 'cadr cmLst))
  36.            ); end /
  37.          (/
  38.            (apply '+
  39.               (mapcar '*
  40.                  (mapcar 'cadar cmLst)(mapcar 'cadr cmLst)))
  41.            (apply '+ (mapcar 'cadr cmLst))
  42.            ); end /
  43.          ); end list
  44.       ); end setq
  45. (command "_.circle" gCen "50")
  46. (foreach pt(mapcar 'car cmLst)
  47.   (command "_.line" pt  gCen "")
  48.   ); end foreach
  49. ); end progn
  50.      ); end if
  51.      (mapcar 'setvar (list "OSMODE" "CMDECHO")(list oldSnp 1))
  52.      ); end progn
  53.    ); end if
  54. (princ)
  55. ); end of c:gecen

 
我可以添加带有坐标的引线,但我不知道您需要的文本大小。或者您需要请求文本大小和圆直径
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-5 17:07:33 | 显示全部楼层
多好的Lisp程序啊
 
参考引线和文字,可以使用当前样式进行尺寸标注和文字标注吗。
 
关于选择对象,是否可以选择pline?或者在区域内单击以避免形状上出现任何空洞(如所附图片中的上部形状)
 
thanx公司
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-5 17:11:19 | 显示全部楼层
好啊也许明天,今天没有时间。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 13:40 , Processed in 0.985602 second(s), 75 queries .

© 2020-2025 乐筑天下

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