乐筑天下

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

[ARX]arx计算选取的直线总长度

[复制链接]

5

主题

11

帖子

2

银币

初来乍到

Rank: 1

铜币
31
发表于 2005-6-15 21:39:00 | 显示全部楼层 |阅读模式
本人用arx编写了一个计算所选取直线总长度的程序,感觉挺不方便,大家给点意见。
void GetSelLens()
{
        ads_name ent1,ssents;
        long i(0),n;
        char* entname;
        struct resbuf *rb,*rbtmp;
        double fLength(0);
        AcGePoint3d *pt1,*pt2;
        acedSSGet(NULL,NULL,NULL,NULL,ssents);
        acedSSLength(ssents,&n);
        for (;irbnext)
                {
                        if (rbtmp->restype==0)
                        {
                                entname=rbtmp->resval.rstring;
                                continue;
                        }
                        if (rbtmp->restype==10)
                                pt1=new AcGePoint3d(rbtmp->resval.rpoint[X],rbtmp->resval.rpoint[Y],
                                                                                rbtmp->resval.rpoint[Z]);
                        if (rbtmp->restype==11)
                                pt2=new AcGePoint3d(rbtmp->resval.rpoint[X],rbtmp->resval.rpoint[Y],
                                                                                rbtmp->resval.rpoint[Z]);
                }
                if (!strcmp(entname,"LINE"))
                {
                        fLength+=GetLineLen(pt1,pt2);
                }
        }
        acutPrintf("总长度 %f",fLength);
//        return 0;
}
double GetLineLen(AcGePoint3d *pt1,AcGePoint3d *pt2)
{
        double len=sqrt(pow(pt1->x-pt2->x,2)+pow(pt1->y-pt2->y,2)+pow(pt1->z-pt2->z,2));
        return len;
}有人用vlisp编写了计算弧线和直线总长的程序,很简单。
(defun C:calEN (/ CURVE TLEN SS N SUMLEN)
(vl-load-com)
(setq SUMLEN 0)
(setq SS (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC"))))
(setq N 0)
(repeat (sslength SS)
(setq CURVE (vlax-ename->vla-object (ssname SS N)))
(setq TLEN (vlax-curve-getdistatparam
CURVE
(vlax-curve-getendparam CURVE)
)
)
(setq SUMLEN (+ SUMLEN TLEN))
(setq N (1+ N))
)
(print (strcat "总长度: " (rtos SUMLEN 2 5)))
(princ)
)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 10:56 , Processed in 0.162500 second(s), 56 queries .

© 2020-2025 乐筑天下

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