找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5482|回复: 43

[1201]怎样编写一个梯形的面积计算列式呢?

[复制链接]
发表于 2005-12-1 08:57:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[1201]怎样编写梯形、三角形、弧形的面积计算列式?
想要的结果是
假设图形为梯形形状物件且为封闭的聚合线形
当选取后可以使用 公式:上底加下底*高/2
计算后列出此计算过程并使用 text 显示于图面上
这样的程序可以实现吗?
烦请各位高手帮忙解答
谢谢

测试用CAD文件。by xyp1964[/COLOR]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-12-1 19:06:22 | 显示全部楼层
我有一个简陋算法:选取4个边后,通过两两直线是否平行 判断上下底,然后用直线距离函数
算出上下底边长,通过两底算高-》带入公式。我看过好像没有直接算的函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-12-1 19:23:06 | 显示全部楼层
如果是現成的圖形,不需要公式.
不記得哪位大蝦編的如下的東東.
[php](defun c:mj (/ pt)
  (while (setq pt (getpoint "点击区域..."))
    (command "_.boundary" "a" "o" "p" "" pt "")
    (command "_.area" "o" (entlast))
    (entdel (entlast))
    (prompt "\n")
    (prompt (rtos (getvar "area")))
  )
  (princ)
)[/php]

或:

[php]
(defun test (/ obj mj)
  (setq obj (entsel "\n請選擇封閉實體:"))
  (setq mj (vlax-curve-getarea (car obj)))
  (princ "\n所選實體面積爲:")
  mj
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-1 21:40:39 | 显示全部楼层
taner楼主您说的对
但因工作需要配合图说列计算式检查所以不能用系统查询
因此想撰写这程序来用看看~
希望各位能帮忙解答一下
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-12-1 22:43:04 | 显示全部楼层
最初由 xyz518mm 发布
[B]taner楼主您说的对
但因工作需要配合图说列计算式检查所以不能用系统查询
因此想撰写这程序来用看看~
希望各位能帮忙解答一下
谢谢 [/B]


沒有明白你說的意思?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-2 00:03:52 | 显示全部楼层
例如说纸张图面上有一个矩形是长10宽10
那列出的计算式就要有 10*10=100 的面积计算过程.
而不是直接标上他的面积
所以我希望这工作可以透过程式来完成.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-2 08:05:32 | 显示全部楼层
最初由 xyz518mm 发布
[B]taner楼主您说的对
但因工作需要配合图说列计算式检查所以不能用系统查询
因此想撰写这程序来用看看~
希望各位能帮忙解答一下
谢谢 [/B]


xyz518mm 楼主也是从事土建相关行业的吧
我也是相关行业
也是因为老板要求你的面积怎样算出来的
总老不能说你看电脑吧!!!
所以需要再图面上写上计算式给老板或业主看
希望各位能理解
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-2 21:38:43 | 显示全部楼层
此主题表面看似简单,实际较难,盼望大家快快出手!加币!

实例:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-2 21:43:07 | 显示全部楼层
这样是否也可以?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-2 22:40:35 | 显示全部楼层
xyp1964 版大果真是厲害阿
不知道開頭要怎樣做呢?
另外這問題似乎只是我之前題問中的一小部份問題,請見http://p4.xdcad.net/forum/showth ... 2424056#post2424056
內有程序
不過是一小段不能執行
可以看看觀念
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-2 23:50:54 | 显示全部楼层
删除多段线中直线段的多余点
  1. [FONT=courier new](load "xyp_lib.vlx")                        ;版本 V.20051202 (1756)
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  5. ★1·在acad.lsp中增加(load"xyp_lib")
  6. ■2·在每个程序内增加(load"xyp_lib")
  7. ■3·在command下,输入(load"xyp_lib")
  8. ■4·在菜单.mnl中增加(load"xyp_lib")
  9. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. |;

  13. ;;;删除多段线中直线段的多余点
  14. (defun c:test ()
  15.   (CMDLA0)
  16.   (setvar "osmode" 0)
  17.   (setq        ss  (ssget '((0 . "*POLYLINE")))
  18.         s1  (ssname ss 0)
  19.         ptn (xyp-get-Vertexes s1 T)
  20.         ptn (xyp-get-VertexesTrue ptn)
  21.         pt1 (xyp-get-MinMaxPoint s1 1)
  22.         pt9 (xyp-get-MinMaxPoint s1 9)
  23.   )
  24.   (mkla "test" 1)
  25.   (command "pline")
  26.   (foreach pt ptn (command pt))
  27.   (if (or (= (xyp-get-dxf 70 s1) 1)
  28.           (equal (xyp-get-CurveEndPoint s1)
  29.                  (xyp-get-CurveStartPoint s1)
  30.           )
  31.       )
  32.     (command "c")
  33.     (command "")
  34.   )
  35.   (setq s2 (entlast))
  36.   (command "move"
  37.            s2
  38.            ""
  39.            pt1
  40.            (list (car pt9) (cadr pt1))
  41.   )
  42.   (CMDLA1)
  43. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-12-3 00:07:41 | 显示全部楼层
最初由 xyp1964 发布
[B]这样是否也可以? [/B]


先將梯形聚合:

[PHP](defun c:test (/ h interspoint l1 l2 mj polygon pt1 pt2 pt3 pt4 ptlist
                 str
              )
  (setq ptlist (massoc 10 (entget (car (setq polygon (entsel "\n請點選梯形:"))))))
  (setq mj (vlax-curve-getarea (car polygon)))
  (setq pt1 (nth 0 ptlist)
        pt2 (nth 1 ptlist)
        pt3 (nth 2 ptlist)
        pt4 (nth 3 ptlist)
  )
  (if (setq interspoint (inters
                          pt1
                          pt2
                          pt3
                          pt4
                          nil
                        )
      )
    (if (setq interspoint (inters
                            pt1
                            pt3
                            pt2
                            pt4
                            nil
                          )
        )
      (setq l1 (max
                 (distance pt1 pt4)
                 (distance pt2 pt3)
               )
            l2 (min
                 (distance pt1 pt4)
                 (distance pt2 pt3)
               )
      )
    )
    (setq l1 (max
               (distance pt1 pt2)
               (distance pt3 pt4)
             )
          l2 (min
               (distance pt1 pt2)
               (distance pt3 pt4)
             )
    )
  )
  (setq h (/ (* mj 2) (+ l1 l2)))
  (setq str (strcat "L1=" (rtos l1) "&L2=" (rtos l2) "&H="
                    (rtos h) "&S=(" (rtos l1) "+" (rtos l2) ")*"
                    (rtos h) "/2=" (rtos mj)
            )
  )
  (command "TEXT" "J" "C" interspoint "" "" str)
(princ)
)[/PHP]
測試:
test  效果如圖
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-3 01:55:24 | 显示全部楼层
POLYLINE实体的dxf 组码10:(10 0.0 0.0 0.0),出错!
也应付不了11楼的情况。

先发个编译版(再次修改)的来试试:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-3 02:39:16 | 显示全部楼层
xyp,我测试怎么老说不是梯形呢?

发一个自己写的,
支持多点梯形多义线,
支持多义线起点任意位置.
自动识别梯形
支持预选
可指定文字标注位置.
命令:txbz
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-3 05:32:10 | 显示全部楼层
演示
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-8 08:04 , Processed in 0.445816 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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