明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1483|回复: 15

[提问] 请问如何判断样条曲线闭合?

[复制链接]
发表于 2024-11-14 16:19:37 | 显示全部楼层 |阅读模式
按道理看70组码=1就是闭合。查看了两条样条曲线的组码,怎么跟说明的对不上?各位大神有知道的吗?

本帖子中包含更多资源

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

x
发表于 2024-11-15 13:08:02 | 显示全部楼层
本帖最后由 llsheng_73 于 2024-11-15 13:12 编辑
kozmosovia 发表于 2024-11-14 18:40
要把所有1的位码都加进去:
1+2
1+4
选择过滤'((-4 . "&")(70 . 1))
判断70组(=(logand(cdr(assoc 70 entdata))1)1)
回复 支持 1 反对 0

使用道具 举报

发表于 2024-11-16 17:23:34 | 显示全部楼层
(=(rem(cdr(assoc 70(entget e)))2)1)
回复 支持 1 反对 0

使用道具 举报

发表于 2024-11-15 12:57:11 | 显示全部楼层
VBALISPER 发表于 2024-11-15 10:20
直接判断是奇数可以吗?

应该可以的。
回复 支持 1 反对 0

使用道具 举报

发表于 2024-11-14 16:25:30 | 显示全部楼层
70是位码,12=4+8
要判断是否闭合,需要判断(logand DXF70 1)是否为1,或者直接vlax-curve函数判断https://help.autodesk.com/view/O ... 8-B8AB-E3A057B66D1F
 楼主| 发表于 2024-11-14 16:30:51 | 显示全部楼层
kozmosovia 发表于 2024-11-14 16:25
70是位码,12=4+8
要判断是否闭合,需要判断(logand DXF70 1)是否为1,或者直接vlax-curve函数判断https:/ ...

那想选择闭合的样条曲线要怎么写呢?这样写应该不行了
(-4 . "<AND") (0 . "SPLINE") (70 . 1) (-4 . "AND>")

点评

'((0 . "SPLINE")(-4 . "&")(70 . 1))  发表于 2024-11-15 13:13
发表于 2024-11-14 18:36:19 | 显示全部楼层
kozmosovia 发表于 2024-11-14 16:25
70是位码,12=4+8
要判断是否闭合,需要判断(logand DXF70 1)是否为1,或者直接vlax-curve函数判断https:/ ...

有时 vlax-curve-isClosed 也不可靠
发表于 2024-11-14 18:40:03 | 显示全部楼层
hw8810 发表于 2024-11-14 16:30
那想选择闭合的样条曲线要怎么写呢?这样写应该不行了
(-4 . "")

要把所有1的位码都加进去:
1+2
1+4
1+8
1+16
1+2+4
1+2+8
1+2+16
。。。。
(-4 . "<AND") (0 . "SPLINE")(-4 . "<OR")(70 . 1)(70 . 3) (70 . 5)(70 . 9)(70 . 17)...(-4 . "OR>")(-4 . "AND>")
发表于 2024-11-14 18:44:32 | 显示全部楼层
  1. (defun isClosed (e)(equal (vlax-curve-getStartPoint e)(vlax-curve-getEndPoint e)1e-8))
发表于 2024-11-14 18:58:38 | 显示全部楼层

这种只能判定假闭合,看起来是闭合曲线,但是线可以首末点一样但属性不闭合。要确定的判断真假,还得vlax-curve-isClosed,比判断点还省事。
发表于 2024-11-15 06:35:17 | 显示全部楼层
;;是否是曲线---(一级)---
(defun sl-iscur (e)
        (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getstartparam (list e))))
)
;;曲线是否封闭--(一级)----
;;(sl:isClosed (car (entsel)))
(defun sl:isClosed (e)
        (if (sl-iscur e)
                (or (vlax-curve-isclosed e) (equal (vlax-curve-getstartpoint e) (vlax-curve-getendpoint e) 1e-5))
                nil
        )
)
 楼主| 发表于 2024-11-15 09:21:26 | 显示全部楼层
kozmosovia 发表于 2024-11-14 18:40
要把所有1的位码都加进去:
1+2
1+4

好,感谢大佬
发表于 2024-11-15 10:20:50 | 显示全部楼层
kozmosovia 发表于 2024-11-14 18:40
要把所有1的位码都加进去:
1+2
1+4

直接判断是奇数可以吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-8 09:48 , Processed in 0.186408 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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