明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3504|回复: 9

[已解答] 《菜鸟提问》 无法计算自交曲线的面积怎么实现alert提示?

[复制链接]
发表于 2015-1-9 21:29 | 显示全部楼层 |阅读模式
10明经币
本帖最后由 HGHG011 于 2015-1-12 17:05 编辑

(defun qmj ( ss / )

(command "area" "o" ss )
        (setq area (HH:rtosr1 (/ (getvar "area") 1000000.0) 2)  )
        (setq area (atof area))
        )


(defun HH:rtosr1 (RealNum n / DIMZIN1 SHORTREAL1)



  (setq DimZin1 (getvar "DIMZIN"))
  (setvar "DIMZIN" 0)
  (setq ShortReal1 (rtos RealNum 2 n))
  (setvar "DIMZIN" DimZin1)
  ShortReal1
)


当运行上面函数的时候,选中自交曲线计算面积会出现错误
在命令行中 出现“无法计算自交曲线的面积”
能否实现cad弹出对话框来进行提示,以免使用错误数据进行计算?
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

(qmj (setq ss(entsel))) (defun qmj (ss / area ent typ ent ) (setq ent (entget (car ss)) typ (cdr(assoc 0 ent))) (if (or (equal typ "LWPOLYLINE") (equal typ "CIRCLE") (equal typ "REGION")) (progn (command "area" "o" ss ) (setq area (HH:rtosr1 (/ (getvar "area") 1000000.0) 2) ) (setq area (atof area ...
发表于 2015-1-9 21:29 | 显示全部楼层
(qmj (setq ss(entsel)))

(defun qmj (ss / area ent typ ent )

  (setq ent (entget (car ss))
        typ (cdr(assoc 0 ent)))
        
  (if (or (equal typ "LWPOLYLINE")
           (equal typ "CIRCLE")
           (equal typ "REGION"))
        
      (progn
         (command "area" "o" ss )
         (setq area (HH:rtosr1 (/ (getvar "area") 1000000.0) 2) )
         (setq area (atof area))
      )
              
       (alert "\n无法计算自交曲线的面积" )
      
   );end if
   

);end defun


(defun HH:rtosr1 (RealNum n / DIMZIN1 SHORTREAL1)

  (setq DimZin1 (getvar "DIMZIN"));;消零
  
  (setvar "DIMZIN" 0);;消除零英尺和零英寸
  
  (setq ShortReal1 (rtos RealNum 2 n))
  
  (setvar "DIMZIN" DimZin1)
  
  ShortReal1
)
回复

使用道具 举报

 楼主| 发表于 2015-1-10 12:16 | 显示全部楼层
是表述得不清晰,还是没有办法解决啊,来个人说句话啊
回复

使用道具 举报

 楼主| 发表于 2015-1-10 12:17 | 显示全部楼层
提供一种思路,读取命令行的文字 “无法计算自交曲线的面积” 来判断出现错误
不知能否这样实现,求命令,求方法
回复

使用道具 举报

发表于 2015-1-10 17:56 | 显示全部楼层
(if (cx-qxzj en)
    (alert "曲线自交.无法计算")
)
  话说这个函数论坛有很多,
回复

使用道具 举报

发表于 2015-1-12 14:23 | 显示全部楼层
尝试调用vl-catch-all-apply函数,选择一个自交曲线判断其错误代码数值,然后根据这一数值为判断依据再alert
回复

使用道具 举报

 楼主| 发表于 2015-1-12 16:54 | 显示全部楼层
mmmmmm 发表于 2015-1-12 14:23
尝试调用vl-catch-all-apply函数,选择一个自交曲线判断其错误代码数值,然后根据这一数值为判断依据再aler ...

貌似不行,不会搞,不过谢谢你
回复

使用道具 举报

 楼主| 发表于 2015-1-12 16:56 | 显示全部楼层
LPACMQ 发表于 2015-1-10 21:19
(qmj (setq ss(entsel)))

(defun qmj (ss / area ent typ ent )

所谓的自交曲线不一定是曲线,我是用pl命令绘制的多段线,多段线上有重叠的点而已,所以你这种方法不行
回复

使用道具 举报

 楼主| 发表于 2015-1-12 16:56 | 显示全部楼层
鱼与熊掌 发表于 2015-1-10 17:56
(if (cx-qxzj en)
    (alert "曲线自交.无法计算")
)

这个if函数我也会啊,不过得看怎么执行啊
回复

使用道具 举报

 楼主| 发表于 2015-1-12 18:29 | 显示全部楼层
                         (setq cv (getvar "Lastprompt"))
       (print cv)
                       
                        (if ( = cv "无法计算自交曲线的面积。")
                                (alert "\n无法计算自交曲线的面积" )
                        )
最后通过这种方法解决,谢谢大家的帮忙
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 16:14 , Processed in 0.198658 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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