/db_自贡黄明儒_ 发表于 2014-11-21 08:29:47

(bpoly pt ss '(1 0))

本帖最后由 /db_自贡黄明儒_ 于 2016-11-7 07:48 编辑

(bpoly pt ss '(1 0)),哪个能解释一下'(1 0)是什么意思?
;对bpoly深度挖掘,可能还有其它用处。

;;判断点在封闭图形内 自贡黄明儒 2014.11.22
;;(HH_PtInCurve (getpoint) (ssget))
;;(HH_PtInCurve (getpoint) (car(entsel)))
**** Hidden Message *****




/db_自贡黄明儒_ 发表于 2014-11-21 11:34:42

利用它是不是可以判断点是否在曲线内外

st788796 发表于 2014-11-21 11:43:47

你从哪查到的这个用法?

/db_自贡黄明儒_ 发表于 2014-11-21 11:52:13

st788796 发表于 2014-11-21 11:43
你从哪查到的这个用法?

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=101654&page=1#pid588444

st788796 发表于 2014-11-21 11:57:37

/db_自贡黄明儒_ 发表于 2014-11-21 11:52
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=101654&page=1#pid588444

CAD2008
命令: (bpoly (getpoint) (ssget) '(1 0))
选择对象: 指定对角点: 找到 1 个
选择对象:
无效的选项关键字。
<图元名: 7ef998b0>

另外当有 spline ellipse 时候会出现选项的!

命令: (bpoly (getpoint) (ssget) '(1.0 0.0))
选择对象: 指定对角点: 找到 3 个
选择对象:
无效的选项关键字。
<图元名: 7ef99918>
无法导出多段线边界。是否创建面域?? <Y>
已提取 1 个环。

已创建 1 个面域。
BOUNDARY 已创建 1 个面域

/db_自贡黄明儒_ 发表于 2014-11-21 12:11:04

;;判断点是否在曲线内
;;(HH:PtInCurve (getpoint) (car (entsel)))
(defun HH:PtInCurve (p Curve / E0)
(setq e0 (entlast))
(VL-CATCH-ALL-APPLY 'bpoly (list p (ssadd Curve (ssadd)) '(1 0)))
(cond        ((equal e0 (entlast)) nil)
        (T (entdel (entlast)) T)
)
)

iLisp 发表于 2014-11-21 12:44:27

/db_自贡黄明儒_ 发表于 2014-11-21 12:11
;;判断点是否在曲线内
;;(HHtInCurve (getpoint) (car (entsel)))
(defun HHtInCurve (p Curve / E0) ...

黄老师用闭合spline试试

/db_自贡黄明儒_ 发表于 2014-11-21 12:48:03

本帖最后由 /db_自贡黄明儒_ 于 2014-11-21 12:53 编辑


iLisp 发表于 2014-11-21 12:44
黄老师用闭合spline试试;;判断点是否在曲线内
;;(HH_PtInCurve (getpoint) (car (entsel)))
(defun HH_PtInCurve (p Curve / E0)
(setvar "nomutt" 1)
(setq e0 (entlast))
(VL-CATCH-ALL-APPLY 'bpoly (list p (ssadd Curve (ssadd)) '(1 0)))
(cond((equal (assoc 0 (entget Curve)) '(0 . "SPLINE")) (apply 'command (list ""))))
(setvar "nomutt" 0)
(cond      ((equal e0 (entlast)) nil)
      (T (entdel (entlast)) T)
)
)


iLisp 发表于 2014-11-21 13:07:29

/db_自贡黄明儒_ 发表于 2014-11-21 12:48


忘了说还有整椭圆

/db_自贡黄明儒_ 发表于 2014-11-21 13:21:21

iLisp 发表于 2014-11-21 13:07
忘了说还有整椭圆

都还行,选择集也行。;;判断点是否在曲线内
;;(HH:PtInCurve (getpoint) (car (entsel)))
(defun HH:PtInCurve (p Curve / E0)
(setvar "nomutt" 1)
(setq e0 (entlast))
(VL-CATCH-ALL-APPLY 'bpoly (list p (ssadd Curve (ssadd)) '(1 0)))
(cond((wcmatch (cdr(assoc 0 (entget Curve))) "SPLINE,ELLIPSE") (apply 'command (list ""))))
(setvar "nomutt" 0)
(cond        ((equal e0 (entlast)) nil)
        (T (entdel (entlast)) T)
)
)

iLisp 发表于 2014-11-22 11:49:29

/db_自贡黄明儒_ 发表于 2014-11-21 13:21
都还行,选择集也行。

既然生成新实体最好把*error*也定义到里面

/db_自贡黄明儒_ 发表于 2014-11-22 12:52:03

iLisp 发表于 2014-11-22 11:49
既然生成新实体最好把*error*也定义到里面

见1楼,*error*有什么用呢?

iLisp 发表于 2014-11-22 12:54:55

/db_自贡黄明儒_ 发表于 2014-11-22 12:52
见1楼,*error*有什么用呢?

万一运行中中断时不留下生成实体(如果有)

/db_自贡黄明儒_ 发表于 2014-11-22 12:58:52

iLisp 发表于 2014-11-22 12:54
万一运行中中断时不留下生成实体(如果有)

如果有,你来不及按ESC中断的。

newer 发表于 2014-11-22 13:06:09

st788796 发表于 2014-11-21 11:57
CAD2008
命令: (bpoly (getpoint) (ssget) '(1 0))
选择对象: 指定对角点: 找到 1 个


2008确实很多情况提示 无效的关键字,这点很烦。
页: [1] 2 3 4
查看完整版本: (bpoly pt ss '(1 0))