明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1233|回复: 2

[已解答] vl-get-arclength命令,对用圆弧命令画的圆弧有效,对裁剪圆后得到的圆弧,不起作....

[复制链接]
发表于 2013-11-30 16:33 | 显示全部楼层 |阅读模式
这是我自己写的一个计算选择的所有直线长度的代码,但是出现点问题,就是用圆弧命令画的圆弧,可以执行arclength,但是裁剪以后的圆,虽然也是圆弧,但提示arclength无效,不知道怎么回事。有人能帮我看看么?

;;;计算选择线条的长度
(Defun C:sss()
  (Vl-Load-Com)
  (SetQ EntPnt (ssget))
  (setq n (sslength entpnt))
  (setq i 0)
  (setq chicun 0)
  (princ "总长度 = ")
  (repeat n
    (setq ent (ssname entpnt i)) ;或得图元名
    (setq dysj (entget ent))
    (setq ifline (assoc 0 dysj)) ;返回(0 . "line")
    (if        (= (cdr ifline) "LINE") ;为直线
      (progn
        (setq zhixian
               (vlax-curve-getDistAtPoint ent (cdr (assoc 11 dysj)))
        )
;计算直线长度,还有个精度问题,怎么确定保留几位小数?这个跟画线精度有问题,精度到4,只能改成3,而不能改成5.
        (setq chicun (+ chicun zhixian))
        (princ zhixian)
        (if (= n (+ 1 i))
          (if (> n 1)
            (princ " = ")
          )
          (princ " + ")
        )
      )
      (progn
        (setq obj (vlax-ename->vla-object ent))
        (setq quxian (vla-get-arclength obj))
        (setq chicun (+ chicun quxian))
        (princ quxian)
        (if (= n (+ 1 i))
          (if (> n 1)
            (princ " = ")
          )
          (princ " + ")
        )
      )
    )
    (setq i (1+ i))
  )
  (if (> n 1)
    (princ chicun)
  )
  (princ)
)


发表于 2013-11-30 16:50 | 显示全部楼层
  1. ;; 曲线长度
  2. (defun CurveLength (ename)
  3.   (vlax-curve-getDistAtParam
  4.     ename
  5.     (vlax-curve-getEndParam ename)
  6.   )
  7. )

点评

为什么vlax-curve-getDistAtParam它可能接受图元名作为参数,而另外好多vlax-curve-的函数必须是vla obj?  发表于 2013-12-1 03:04
 楼主| 发表于 2013-11-30 22:04 | 显示全部楼层
xyp1964 发表于 2013-11-30 16:50

非常感谢!有许多Activex命令,要去哪里找得到啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 18:52 , Processed in 0.199063 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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