明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1646|回复: 8

框选 图形上的所有闭合的 《修订云线》 算出所有闭合的云线面积 ,并写在上面

[复制链接]
发表于 2012-12-10 15:30:51 | 显示全部楼层 |阅读模式
    怎样用lisp计算云线的面域
还请各位版主帮帮忙 主要是云线的算法
地一步 框选图形中的 《修订云线》
地二步 计算每个修订云线内的面积

地三步 写出每个闭合云线的面域
地四步 计算出总面域

本帖子中包含更多资源

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

x
发表于 2012-12-10 16:33:42 来自手机 | 显示全部楼层
这种线我都重来没有用过呢?
 楼主| 发表于 2012-12-10 17:39:19 | 显示全部楼层
我看到 gufeng  大哥写的一段代码 是计算 圆 弧 椭圆 轻型多段线 多段线 面域 或封闭样条曲线构成的封闭面积计算 能算出 修订云线的面积
可是 VL函数有点看不懂 如果我想在里面添加如 图2 所制定出的  应该怎么修改 麻烦各位牛人 好心的版主解决一下  谢谢
  1. (defun c:testb (/ AREA_H AREA_WS ERRHAN NEWENTLAST OBJ OBJ_AREA OBJ_I OBJ_NAME OBJ_VLA OLDCMDECHO OLDDELOBJ OLDENTLAST PT)
  2. (vl-load-com)
  3.   (setq obj (ssget "x" '((0 . "LWPOLYLINE"))))
  4.   (if obj
  5.     (progn
  6.       (setq obj_i -1)
  7.       (setq oldcmdecho (getvar "cmdecho"))
  8.       (setq oldDELOBJ (getvar "DELOBJ"))
  9.       (setvar "cmdecho" 0);_禁止回显
  10.       (setvar "DELOBJ" 0);_控制创建面域保留原对象
  11.       (setq errhan '());_不能创建面域的图元句柄表
  12.       (setq area_ws 4);_面积的小数位数
  13.       (setq area_h 3);_面积文字的高度
  14.       (repeat (sslength obj)
  15. (setq obj_name (ssname obj (setq obj_i (1+ obj_i))));_图元名
  16. (setq obj_vla (vlax-ename->vla-object obj_name));_Vla对象
  17. (if (vlax-curve-isClosed obj_vla);_如果曲线闭合
  18.    (progn
  19.      (setq oldentlast (entlast))
  20.      (command "_region" obj_name "");_创建面域
  21.      (setq newentlast (entlast))
  22.      (if (equal oldentlast newentlast);_如果创建面域不成功
  23.        (progn
  24.   (setq errhan (cons (cdr (assoc 5 (entget obj_name))) errhan))
  25.   )
  26.        (progn
  27.   (setq obj_area (vla-get-Area obj_vla));_面积
  28.   (setq pt (vlax-safearray->list (vlax-variant-value (vla-get-centroid (vlax-ename->vla-object newentlast)))))
  29.   (command "-text" "j" "mc" pt area_h 0 (rtos obj_area 2 area_ws))
  30.   (entdel newentlast)
  31.   )
  32.        )
  33.      )
  34.    )
  35. )
  36.       (if errhan
  37. (progn
  38. (princ "\n没有标注面积的图元句柄列表:\n")
  39. (princ errhan)
  40. )
  41. )
  42.       (setvar "DELOBJ" oldDELOBJ)
  43.       (setvar "cmdecho" oldcmdecho)
  44.     )
  45.   )
  46.   (princ)
  47. )
 楼主| 发表于 2012-12-10 17:41:44 | 显示全部楼层
zzmm 发表于 2012-12-10 17:39
我看到 gufeng  大哥写的一段代码 是计算 圆 弧 椭圆 轻型多段线 多段线 面域 或封闭样条曲线构成的封闭面积 ...

这行代码是用的 gufeng 老大的 借用一下你的源码 谢谢
发表于 2012-12-10 20:18:43 | 显示全部楼层
路过帮顶
发表于 2012-12-10 20:55:31 | 显示全部楼层
路过也帮忙顶一下!
发表于 2012-12-10 21:50:08 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0
发表于 2012-12-11 00:11:23 | 显示全部楼层
看不懂啊 看不懂~~~
 楼主| 发表于 2012-12-11 10:10:59 | 显示全部楼层
非常感谢 ZZXXQQ 版主的热心帮助与回复
今天运行程序时发现以下几点问题
1 计算面积的表 如果在捕捉状态会重叠在一起
  以改 在程序前面添加 (setvar "osmode" 0)
2 如果计算面域非常大 以百万左右来表达 那选得总表的字体太小
  以改 (setq h 3)
  改写为
  (setq txth (getreal "\n指定文字高度 <500>:"))
     (if (or (= txth nil) (= txth 0))
       (setq txth 500)
     )
3 不会改的地方是
  面积 0~n=??????  0 1 2 3 ~n改为横线上方 =去掉 面积改在横线下方  表格不改动
     还希望版主能帮忙解决一下
  在这表示衷心的感谢
  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-3 13:44 , Processed in 0.204001 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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