明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2732|回复: 13

[求助][LISP]紧急求救

  [复制链接]
发表于 2003-11-17 18:23:00 | 显示全部楼层 |阅读模式
能不能通过编写程序来计算图案填充所占的面积
本人现在手边有一份规划图纸
现在想计算每种用地的面积
能不能通过编写程序来实现: 只要选择图案填充 就能知道它所战的面积
发表于 2003-11-17 21:33:00 | 显示全部楼层
你所说的问题的答案是:

能!
 楼主| 发表于 2003-11-18 11:18:00 | 显示全部楼层
请教lockmyeye:
  您好!请问你的思路,我对LISP懂了一点点 , 能否告知!谢谢
请知道的朋友或者高手们告知一、二 谢谢 非常急  
难道只能用AREA慢慢的点吗?
 楼主| 发表于 2003-11-19 13:37:00 | 显示全部楼层
请教lockmyeye:
  您好!请问你的思路,我对LISP懂了一点点 , 能否告知!谢谢
请知道的朋友或者高手们告知一、二 谢谢 非常急  
难道只能用AREA慢慢的点吗?
 楼主| 发表于 2003-11-22 13:34:00 | 显示全部楼层
请教lockmyeye:
  您好!请问你的思路,我对LISP懂了一点点 , 能否告知!谢谢
请知道的朋友或者高手们告知一、二 谢谢 非常急  
难道只能用AREA慢慢的点吗?
发表于 2003-11-22 20:37:00 | 显示全部楼层
晓东工具箱ftp://download.xdcad.net:7362/xd_tbox/XD_TBox29.zip
有API
drx_getarea
功    能:求AutoCAD AcDbCurve(曲线)类的面积和周长(长度)。
调用格式:(xdrx_getarea <实体图元名>)
说    明:1.<实体图元名>可是AcDbCurve类的:AcDbPolylinelwpolyline),AcDbArc,AcDbCircle,AcDbEllipse,AcDbSpline
          2.若曲线不封闭,则把开始点和终止点连线求面积,并且返回的是曲线的长度。
          3.可以是Hatch
 楼主| 发表于 2003-11-25 14:01:00 | 显示全部楼层
很谢谢您的帮助 但是我是想学习LSP 我不想要现成  只要能提供一点编程的思路就行  我是想学习   想用也可以慢慢的用AREA点
发表于 2003-11-25 15:07:00 | 显示全部楼层
我做了一部分,还没有做完整,近来太忙了。
你看看是否有用。

  1. ;;;重新生成hatch的边界
  2. (DEFUN bak ()
  3.     (SETQ data1     (ENTGET ent1)
  4.           data1     (MEMBER (ASSOC '91 data1) data1) ;去掉没有用的数据
  5.           loops_num 0                             ;边界路径(环)的数目
  6.           loops     (LIST)
  7.     )
  8.     (WHILE (AND data1 (/= 97 (CAR temp1)))        ;97: 源边界对象的数目
  9.         (SETQ temp1 (CAR data1)
  10.               data1 (CDR data1)
  11.         )
  12.         (COND ((= 91 (CAR temp1))                 ;边界路径(环)的数目
  13.                (SETQ loops_num (CDR temp1))
  14.               )
  15.               ((= 92 (CAR temp1))                 ;92:边界路径类型标志,可以认为是路径的开始标志
  16.                (SETQ loops_type (CDR temp1))
  17.                (IF (LOGAND loops_type 2)
  18.                    ;;边界路径类型标志是多段线
  19.                    (PROGN (SETQ has       (CDR (ASSOC '72 data1)) ;凸度标志
  20.                                 closed    (CDR (ASSOC '73 data1)) ;关闭的标志
  21.                                 num_p     (CDR (ASSOC '93 data1)) ;多段线顶点的数目
  22.                                 data1     (CDR (MEMBER (ASSOC '93 data1) data1))
  23.                                 loops_one (LIST)
  24.                           )
  25.                           (REPEAT (* (+ 1 has) num_p)
  26.                               (SETQ loops_one (APPEND (LIST (CAR data1)))
  27.                                     data1     (CDR data1)
  28.                               )
  29.                           )
  30.                           (SETQ loops (APPEND loops (LIST (APPEND (LIST (CONS 0 "LWPOLYLINE") (CONS 70 closed)) loops_one))))
  31.                    )
  32.                    ;;边界路径类型标志不是多段线
  33.                    (PROGN (SETQ num_p (CDR (ASSOC '93 data1)) ;边界路径中的边数
  34.                                 data1 (CDR (MEMBER (ASSOC '93 data1) data1))
  35.                           )
  36.                           (REPEAT num_p
  37.                               (SETQ temp1 (CAR data1)
  38.                                     data1 (CDR data1)
  39.                                     loops_one (LIST)
  40.                               )
  41.                               (IF (= 72 (CAR temp1))
  42.                                   ;;1 = 直线; 2 = 圆弧; 3 = 椭圆弧; 4 = 样条曲线
  43.                                   (COND ((= 1 (CDR temp1)) (SETQ num_data 7))
  44.                                         ((= 2 (CDR temp1)) (SETQ num_data 7))
  45.                                         ((= 3 (CDR temp1)) (SETQ num_data 7))
  46.                                         ((= 4 (CDR temp1)) (SETQ num_data 7))
  47.                                         (T (*error* (STRCAT "错误的线类型标志<" (ITOA (CDR temp1)) ">!")))
  48.                                   )
  49.                                   (*error* "未读到边类型标志!")
  50.                               )
  51.                           )
  52.                    )
  53.                )
  54.               )
  55.         )
  56.     )
  57. )
复制代码


其它也就是从数据中重新生成原来的边。
相关的DXF组码可以到下载中心找。
发表于 2003-11-25 15:39:00 | 显示全部楼层
对于HATCH的DXF组码确实没怎么弄清楚,能否说说。

对于次函数,能否说说功能,ent1从何而来?我将它用HATCT对象代替后,即没有返回值,也没有生成任何东西
发表于 2003-11-25 16:21:00 | 显示全部楼层
有重新生成hatch的邊界的程序hatchb.lsp
但生成後又如何計算?

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-10-1 13:04 , Processed in 0.170333 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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