如何判断选择方式ssget sssgetfirst entsel
本帖最后由 cq4920 于 2020-10-25 02:32 编辑想把几种标注方式合并一下 但是因为标注方式不同执行的过程也不同 所以需要对选择方式进行判断
1.点击内空
2.点击多义线的某条单边
3.单击线段或圆弧
4.框选多义线,线段和圆弧的混合集
9.先选择了混合集
根据选择方式的不同选择的图元的不同从而进行标注!
好像和某些机械元件的标注有些类似,但又有很大不同!
不知道能否实现 entsel 和 ssget 的选择方式判断?
对齐标注 线形标注 圆弧长标注框选标注内空标注划线标注 角度标注半径标注 连续/打断标注快速标注标注合并
这命令快捷键也太多了!
如果能整合一下会不会好记一些!!虽然这些命令我已经都记得了!!但是这好多年积累的,如果是新人画图速度太慢!
本帖最后由 wzg356 于 2020-10-25 13:22 编辑
用grread捕捉鼠标左键坐标或getpoint直接获得坐标-----根据坐标放在不同选择方式上
(ssget "cp" (setq p (getpoint)) p)类似(entsel)
ssget返回的是选择集,ssgetfirst返回的是选择集列表,entsel返回的是图元名和点组成的列表
从返回值上是很好区分的,自己用的哪个函数进行选择,难道你自己都不知道?
***************************************************************************
你是不是说ssget有很多种选择方式,你不知道用户使用的是哪一种?
如果是这样的话,你试试ssnamex 函数 lijiao 发表于 2020-10-26 09:22
ssget返回的是选择集,ssgetfirst返回的是选择集列表,entsel返回的是图元名和点组成的列表
从返回值上是 ...
举个简单的例子
(defun c:t4 (/ p1 p2 ss )
(setq p1 (getpoint "\n选择对象:"))
(if
(null (setq p2 (getcorner p1 "\n选择对象:") ))
(setq ss (nentselp p1 ))
(setq ss (ssget "c" p1 p2))
)
)
这里现在只有两种选择方式 选择集好理解 另一种返回的是图元名 而且需要 空格 右键来确认
那能否对P1进行一个判定,
如果P1在线段上直接nentselp选择
如果 P1在空白处 继续ssget选择 如果这时按了空格 则不继续ssget选择而是反回一个点的值 (if (and (setq pt1 (getpoint))
(null (setq ent (nentselp pt1)))
)
(if (setq pt2 (getcorner pt1))
(if (> (car pt2) (car pt1))
(setq ss (ssget "w" pt1 pt2))
(setq ss (ssget "c" pt1 pt2))
)
pt1
)
ent
)
页:
[1]