明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1438|回复: 8

[提问] vla-get-area提取面积时出错,如何判别呀!多谢了

[复制链接]
发表于 2016-2-16 12:10:53 | 显示全部楼层 |阅读模式
我想得到一个填充图案的面积,但是用下面的语句有时候会提示“ ; 错误: Automation 错误。 输入无效
(setq a(car (entsel)))
(vla-get-area (Vlax-Ename->Vla-Object a))
经过测试后发现,有的填充有面积的值,有的没有
遇到有的程序就可以顺利执行下去,但是遇到没有的就中断了,
请问各位大师,如何判断可以知道哪个图元有面积值,那个没有!!
多谢各位大师了!!

发表于 2016-2-16 12:30:13 | 显示全部楼层
确实有的填充有面积,有的没有。如果程序一定要用这个读取填充面积的话可以用vl-catch-all-apply
 楼主| 发表于 2016-2-16 14:16:29 | 显示全部楼层
ludaweb 发表于 2016-2-16 12:30
确实有的填充有面积,有的没有。如果程序一定要用这个读取填充面积的话可以用vl-catch-all-apply

大师你好!我现在对lsp还是一知半解,很多都不明白,你给出的方法我研究了好几次,依旧是没有办法解决,下面是我理解是使用方法,没有返回任何值!是我哪里出了问题?

(setq a(car (entsel)))
(setq ab (Vlax-Ename->Vla-Object a))
(vl-catch-all-error-p(vl-catch-all-apply 'vla-get-area 'ab))


在这里应该返回个什么值得吧!可是没有任何值出现
请问你给出的函数如何使用,多谢了~~!!!!
你也可以用上面的方法实验一下,任何填充的图元都是没有反应!!
发表于 2016-2-16 15:20:54 | 显示全部楼层
用vlax-property-available-p
 楼主| 发表于 2016-2-16 15:30:39 | 显示全部楼层
陨落 发表于 2016-2-16 15:20
用vlax-property-available-p

你好!请问这个函数的使用格式如何?手头的资料不多,没有找到具体的使用方法!
能给个说明,或者小例子最好了,多谢!多谢!

 楼主| 发表于 2016-2-16 17:35:27 | 显示全部楼层
(defun c:t3( / obj )
(setq obj (vlax-ename->vla-object (car (entsel))))
        (if (vlax-property-available-p obj "area")
          (princ  (vlax-get-property obj 'area) )
          (princ "\n无面积属性")
))
研究了半天,仍然没有办法,判断出填充图案那些有面积那些没有面积,快疯了!!
哪位大师有办法,求教了!!多谢!!!
发表于 2016-2-16 18:55:24 | 显示全部楼层
  1. (defun c:t3( / obj catch )
  2.     (setq obj (vlax-ename->vla-object (car (entsel))))
  3.     (setq catch (vl-catch-all-apply
  4.                 'vlax-get-property
  5.                 (list obj 'area)
  6.                 )
  7.     )
  8.     (if (vl-catch-all-error-p catch)
  9.         (princ "\n无面积属性")
  10.         (princ  (vlax-get-property obj 'area) )
  11.     )
  12.     (princ)
  13. )
 楼主| 发表于 2016-2-16 22:51:37 | 显示全部楼层
ludaweb 发表于 2016-2-16 18:55

感谢大师,学无止境呀,多谢,多谢!
这样我的小程序就可以跟完美了!把你的代码稍微改了就成了判断是否有填充面积值得小函数了!
;判断填充图元是否有面积属性
(defun mj_t( mj_t / obj catch )
    (setq obj (vlax-ename->vla-object mj_t))
    (setq catch (vl-catch-all-apply  'vlax-get-property  (list obj 'area) ) )
    (if (vl-catch-all-error-p catch)
        t
        nil
    )
)
;在这里再次感谢帮助的所有大师!!!祝你们新年快乐,身体健康,发大财
 楼主| 发表于 2016-2-16 22:55:49 | 显示全部楼层
如何让问题贴变成已解决??还是让版主帮忙吧!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 16:47 , Processed in 0.231644 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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