找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 16877|回复: 7
打印 上一主题 下一主题

[求助] 求大牛帮忙写个lisp程序

[复制链接]
跳转到指定楼层
1
发表于 2006-10-17 14:35:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

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

x
有若干不规则闭合图形
有一条基准线(Y轴方向)
计算:
每个不规则图形长度*每个不规则图形的质心到基准线的水平距离(X方向)
以上除以所有不规则图形总周长
(质心:假设该图形有一定厚度,密度均匀)

求得以上的商数

谢谢大牛帮忙写个lisp程序
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2006-10-17 15:30:54 | 只看该作者

看看我的程序

;;; 2D object center
(defun c:peridiv()
        (setq ss (ssget))
        (setq i 0 total-peri 0.0 result 0.0)
        (while (< i (sslength ss))
                (setq ent (ssname ss i))
                (setq vlaobj (vlax-ename->vla-object ent))
                (setq perimeter (vlax-get-property vlaobj 'Perimeter))
                (setq centroid (vlax-get-property vlaobj 'Centroid))
                (if (and (/= perimeter nil) (/= centroid nil))
                        (progn
                                (setq item (* perimeter (car (vlax-safearray->list (vlax-variant-value centroid)))))
                                (setq total-peri (+ total-peri perimeter))
                                (setq result (+ result item))
                                )
                        )
                (setq i (+ i 1))
                )
        (alert (strcat "The Result is : " (rtos (/ result total-peri) 2 4)))
        (setq ss nil)
        )
3
发表于 2006-10-17 15:32:24 | 只看该作者

说明

在运行之前请将封闭的多边形组成面域(region).
4
发表于 2006-10-17 21:01:47 | 只看该作者
请问这个lisp具体怎么操作
已经转换为面域
已经加载lisp程序  peridiv
已经选择所有图形

接下去就没了
5
发表于 2006-10-18 14:10:36 | 只看该作者
1:先将要计算的各个封闭多边形组成面域。
2:加载程序,之后在命令行中输入命令。
3:选择计算的对象,完成之后回车。
4:若正常完成后将显示出一个对话框,之中就是结果了。
6
发表于 2006-10-20 19:05:17 | 只看该作者
出现错误

no function definition: VLAX-ENAME->VLA-OBJECT
7
发表于 2006-10-20 19:55:05 | 只看该作者
以上程序我是在AutoCAD2007中调试通过的,可能是你的系统版本问题。
8
发表于 2006-10-20 19:58:52 | 只看该作者
;;; 2D object center
(defun c:peridiv()
(vl-load-com)
        (setq ss (ssget))
        (setq i 0 total-peri 0.0 result 0.0)
        (while (< i (sslength ss))
                (setq ent (ssname ss i))
                (setq vlaobj (vlax-ename->vla-object ent))
                (setq perimeter (vlax-get-property vlaobj 'Perimeter))
                (setq centroid (vlax-get-property vlaobj 'Centroid))
                (if (and (/= perimeter nil) (/= centroid nil))
                        (progn
                                (setq item (* perimeter (car (vlax-safearray->list (vlax-variant-value centroid)))))
                                (setq total-peri (+ total-peri perimeter))
                                (setq result (+ result item))
                                )
                        )
                (setq i (+ i 1))
                )
        (alert (strcat "The Result is : " (rtos (/ result total-peri) 2 4)))
        (setq ss nil)
        )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-12 07:54 , Processed in 0.036766 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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