明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 591|回复: 2

[提问] 新手求问关于子程序的问题

[复制链接]
发表于 2018-1-23 15:11:40 | 显示全部楼层 |阅读模式

想要选择三角形的三边,自动计算面积。
用2个子程序  getlen 和area3
为什么不能运行呢

(defun c:8test2a()       
    (setq en1 (entsel"\n选取第1条边:"))
  (setq en2 (entsel"\n选取第2条边:"))
  (setq en3 (entsel"\n选取第3条边:"))
(setq aa (area3 ( getlen(en1) getlen(en2) getlen(en3))))
  (princ("三角形面积为"(itoa aa)""))
(prin1)
)
(defun getlen(ent)
(command "lengthen" ent"")
(getvar "perimeter")
)
(defun area3(a b c)
(setq s (* (+ a b c) 0.5))
(sqrt(* s (- s a)(- s b)(- s c)) )
  )

(prompt"\n<8test2a>选中三条边计算三角形面积")
(prin1)



发表于 2018-1-23 16:54:51 | 显示全部楼层
本帖最后由 bssurvey 于 2018-1-23 16:56 编辑

想要选择三角形的三边,自动计算面积。
用2个子程序  getlen 和area3
为什么不能运行呢

(defun c:8test2a()        
     (setq en1 (entsel"\n选取第1条边:"))
   (setq en2 (entsel"\n选取第2条边:"))
   (setq en3 (entsel"\n选取第3条边:"))
(setq aa (area3 (getlen en1) (getlen en2) (getlen en3))) ;括號出現問題
(princ(strcat"三角形面積為"(rtos aa)
))    ;字串連結要用STRCAT 及 有小數位數要使用RTOS
(prin1)
)
(defun getlen(ent)
(command "lengthen" ent"")
(getvar "perimeter")
)
(defun area3(a b c)
(setq s (* (+ a b c) 0.5))
(sqrt(* s (- s a)(- s b)(- s c)) )
   )

(prompt"\n<8test2a>选中三条边计算三角形面积")
(prin1)
 楼主| 发表于 2018-1-23 19:57:06 | 显示全部楼层
bssurvey 发表于 2018-1-23 16:54
想要选择三角形的三边,自动计算面积。
用2个子程序  getlen 和area3
为什么不能运行呢

十分感谢,我去百度也发现了是括号的问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 21:42 , Processed in 0.187165 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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