请问如何判断样条曲线闭合?
按道理看70组码=1就是闭合。查看了两条样条曲线的组码,怎么跟说明的对不上?各位大神有知道的吗?本帖最后由 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)
(=(rem(cdr(assoc 70(entget e)))2)1) VBALISPER 发表于 2024-11-15 10:20
直接判断是奇数可以吗?
应该可以的。 70是位码,12=4+8
要判断是否闭合,需要判断(logand DXF70 1)是否为1,或者直接vlax-curve函数判断https://help.autodesk.com/view/OARX/2021/ENU/?guid=GUID-DC3C19D3-D0EA-4638-B8AB-E3A057B66D1F 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>") kozmosovia 发表于 2024-11-14 16:25
70是位码,12=4+8
要判断是否闭合,需要判断(logand DXF70 1)是否为1,或者直接vlax-curve函数判断https:/ ...
有时 vlax-curve-isClosed 也不可靠 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>")
(defun isClosed (e)(equal (vlax-curve-getStartPoint e)(vlax-curve-getEndPoint e)1e-8)) xyp1964 发表于 2024-11-14 18:44
这种只能判定假闭合,看起来是闭合曲线,但是线可以首末点一样但属性不闭合。要确定的判断真假,还得vlax-curve-isClosed,比判断点还省事。 ;;是否是曲线---(一级)---
(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
)
) kozmosovia 发表于 2024-11-14 18:40
要把所有1的位码都加进去:
1+2
1+4
好,感谢大佬 kozmosovia 发表于 2024-11-14 18:40
要把所有1的位码都加进去:
1+2
1+4
直接判断是奇数可以吗?
页:
[1]
2