乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 143|回复: 4

[求助]请问如何实现点选闭合多义线获得ssget集?

[复制链接]

26

主题

50

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2002-8-1 19:58:00 | 显示全部楼层 |阅读模式
在一个闭合的多义线围成的范围内有很多小的闭合多义线,我想求那些小多义线的面积和。但是不知道怎样用那个外围多义线的定点列表构成ssget "wp" 的点对表。我是初学者,请哪位指点一下。

wexeh3fykns.jpg

wexeh3fykns.jpg

回复

使用道具 举报

26

主题

50

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2002-8-2 20:30:00 | 显示全部楼层
你是在国土局的吧?我们是同行,我有这个程序,你给我发EMAIL:AUTOLISP@X263.NET,你是用CAD14、CAD2000、CAD2002,版本不同要改程序的,过几天我给你发过去。
回复

使用道具 举报

26

主题

50

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
154
发表于 2002-8-3 15:24:00 | 显示全部楼层
怎样遍历呢?我不了解lisp的数据结构。比如取出一个(10 . xxx,xxx)之后,用什么语句取下一个呢,什么条件判定选取结束呢。 望不吝赐教。
回复

使用道具 举报

22

主题

248

帖子

10

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
336
发表于 2002-8-10 15:08:00 | 显示全部楼层
找到第一个定点在数据表中的位置,然后循环累加定点的位置偏移量,就可以了。
回复

使用道具 举报

14

主题

72

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
128
发表于 2002-8-10 16:03:00 | 显示全部楼层
(Defun CLL ()
       (PrinC "\n这是对 PolyLine 进行数据分析的基本程序...")
       (While (Progn (SetQ pen (Car (EntSel "\n指定一条 PolyLine: ")))
                        (/= &quotOLYLINE" (Cdr (Assoc 0 (EntGet pen))))
                )
                (Alert "所指对象不是 PolyLine,请重新指定...")
       )                                              ;指定PolyLine
       (SetQ pel (EntGet pen)                  ;取出对象表
              ptp (Cdr (Assoc 70 pel))          ;取出结束片段型
              wpl '()                              ;自建的点位数表
                  pen (EntNext pen)
       )
       (While (/= "SEQEND" (Cdr (Assoc 0 (EntGet pen)))) ;如果没结束
               (SetQ pel (EntGet pen)                  ;取得顶点对象数据表
                             plp (Cdr (Assoc 10 pel))           ;取出控制点点位
                      par (Cdr (Assoc 42 pel))            ;取出弓弦比
                      wpl (Cons (List plp par) wpl)           ;将数据加到WPL表中
               )
               (SetQ pen (EntNext pen))                ;搜索下一个对象
       )
       (SetQ ct (If (= 0 (Cadr (Car wpl))) "直线片段封闭" "弧片段封闭"))
       (SetQ wpl (Cons (Last wpl) wpl) ;加入封闭点
                     wpl (Reverse wpl)           ;整理WPL表
                     rl (Length wpl)
              pn 0
       )            
       (SetQ clk (If (Or (= 0 ptp) (= 128 ptp)) "开口" "封闭"))
       (SetVar “pdmode” 3)
       (Repeat (1- rl)                        ;逐点分析
               (SetQ al (Nth pn wpl)         ;取出点数据表
                     pt (Car al)               ;取出点位
               )
                       (Command "point" pt)
                       (PrinC "\n") (PrinC al)         
              (If (And (/= 0.0 (Cadr al)) (Nth pn wpl)) ;如果是弧片断
                   (Progn (SetQ gx (Cadr al)               ;取出弓比
                                                          bj (* (ATAN (ABS gx)) 4) ;计算包角
                                   np (Car (Nth (1+ pn) wpl));取出下一点位
                                   xc (* 0.5 (Distance pt np));半弦长计算
                                   gg (* gx xc)                  ;弓高计算
                                           rr (/ (+ (* xc xc)(* gg gg)) (* 2 gg))
                           )
                           (SetQ cp (Polar pt (SetQ pa (Angle pt np)) xc)
                                  cp (Polar cp (+ pa (* 0.5 Pi)) (- rr gg))
                           )
                           (Command "text" "m" cp 2 0
(StrCat "R" (RToS (Abs rr)))
                                                   "text" "" (AngToS bj)
                                                   "circle" cp 5
                           )
                    )
               )
               (SetQ pn (1+ pn)) ;搜索序号步进
       )
       (Alert (StrCat "结束段状态:\n"
                                clk
                        (If (= "封闭" clk) ct "")
              )
       )
       (PrinC)
)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-5-25 12:40 , Processed in 0.337205 second(s), 65 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表