乐筑天下

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

[编程交流] 测试多段线

[复制链接]

9

主题

167

帖子

163

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 09:12:02 | 显示全部楼层 |阅读模式
我试图找出如何测试选定的多段线是否由交替的直线段和圆弧组成。它也必须以直线段开始和结束。到目前为止,我有一个所有“assoc 42”值的列表。该列表必须从0.0开始,每两个成员必须为非零,该列表中的最后两个成员也必须都为0.0。有什么想法或提示测试机制应该是什么吗?
 
谢谢
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:16:48 | 显示全部楼层
这是另一个家庭作业问题吗?
 
 
提示:
您可以通过确定两个相邻顶点之间的中点是否落在普林线上来测试普林线段是否笔直。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:19:20 | 显示全部楼层
您可以使用一个计数器变量(从零开始),并在每次计数器为偶数时测试凸出是否等于零。
回复

使用道具 举报

9

主题

167

帖子

163

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 09:24:43 | 显示全部楼层
 
这似乎比那要复杂一点。如果所有凸出值均为零,则测试仍将通过,但不应通过。凸出值列表的模式应始终为-0,非零,0,非零,。。。。。。未知次数,必须以0,0结束。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:25:29 | 显示全部楼层
 
然后在计数器均匀时测试零凸起,否则测试非零凸起。
回复

使用道具 举报

9

主题

167

帖子

163

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 09:30:06 | 显示全部楼层
到目前为止,我已经写了这篇文章,其中“b”的值是测试值,但它并不适用于所有可能的多段线形状。更不用说它不是很漂亮了。
  1. (defun c:test (/ x pl g xx d li a tot b)
  2. (setq        x  (car (entsel "\n Select polyline: "))
  3. pl (entget x)
  4. c  (cdr (assoc 10 pl))
  5. g  (member (assoc 42 pl) pl)
  6. )
  7. ;(command "circle" c 1.0)
  8. (while g
  9.    (setq xx (cdr (assoc 42 g))
  10.   d  (cdr g)
  11.   g  (member (assoc 42 d) d)
  12.   li (append li (list xx))
  13.   a (length li)
  14.    )
  15. )
  16. (while li
  17.    (if        (and (car li) (zerop (car li)) (cadr li))
  18.      (setq tot        (+ (car li) (cadr li))
  19.     a        (length li)
  20.      )
  21.      (setq tot 0)
  22.    )
  23.    (if        (= a 2)
  24.      (setq b 0)
  25.      (setq b (length li))
  26.    )
  27.    (if        (zerop tot)
  28.      (setq li nil)
  29.      (setq li (cddr li))
  30.    )
  31. )
  32. (princ)
  33. )
回复

使用道具 举报

9

主题

167

帖子

163

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 09:33:37 | 显示全部楼层
 
是的,既然我在家里做这件事,那一定是家庭作业。不是一个学校项目,但仍然是一个家庭作业。
 
如何确定中点是否落在多段线上?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:34:30 | 显示全部楼层
好的,像这样的东西怎么样,用LWPolyline实体名称填充它:
 
lisp中的一些命令式代码。。。请不要开枪!
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:38:56 | 显示全部楼层
谢谢irneb。当谈到“vla对象”时,我只熟悉vlax曲线函数。我想是时候学习所有这些了。
 
您的代码适用于所有多段线,但附着图形底部的多段线除外。它有一个尖角,因此不符合资格。
 
我很欣赏对每一步的解释。
 
谢谢
测试多段线。图纸
回复

使用道具 举报

9

主题

167

帖子

163

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 09:42:21 | 显示全部楼层
我相信Irne已经落入了你在第4篇文章Paul中提到的“陷阱”,偶数索引值和直线标志变量的异或测试在索引为奇数时仍然允许直线眨眼:
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 05:21 , Processed in 1.071001 second(s), 72 queries .

© 2020-2025 乐筑天下

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