断开命令列表创建
我想在某个点打断一条线-一条线变成两条线。然后用文本标记(2)两条新行的长度。我有一个在行列表(ssget)上运行良好的标记例程。我如何创建一个列表来重新处理其中的两个新行?谢谢你的帮助。
迈克在达拉斯 如果使用break命令,您将已经存储了两个ename中的一个,另一个可以使用(entlast)获取。
我在你的另一个请求中问了同样的问题,断点将如何定义?如果用户必须选择它,那么您不能将多重选择与SSGET一起使用,而是单独评估每一行。 我还没有看到OP的另一条线索(公平地说,我也没有看过),但自从我现在偶然发现它之后。。。也许一种允许在标记后使用中断命令的替代方法(显然)涉及曲线实体的选择和中断点规范。
并不是说不能在Break命令之后获得结果,额外的实体名称,然后标记,当然,我只是想我会把这个想法抛到一边。
干杯
这是一个可行的选择,可以省去很多麻烦。从那里,您可以使用vlax curve getDistAtPoint,然后就可以设置了。好主意。 这可能会起作用,这将在例程结束时向变量sad添加虚线
(vl-load-com)
(setq sad (ssadd))
(while (and
(setq ss (entsel "\n Select line :"))
(eq (cdr (assoc 0 (entget (car ss)))) "LINE")
)
(progn
(command "_.break"
(car ss)
"_none"
(setq p (vlax-curve-getclosestpointto (car ss) (cadr ss)))
"_none"
p
)
(ssadd (car ss) sad)
(ssadd (entlast) sad)
)
) 您只需拾取距离选择线最近的点。没有精确性。
尝试使用getpoint并将点馈送到ssget或nentselp。 它的工作原理与我之前的简单代码相同,这里仅用于检查代码。
(setq os (getvar 'osmode))
(setvar 'osmode 512)
(setq sad (ssadd))
(while (setq s (getpoint "\n Select line :"))
(progn
(setq ss (ssget s))
(command "_.break" (ssname ss 0) "_none" (setq p (vlax-curve-getclosestpointto (ssname ss 0) s)) "_none" p)
(ssadd (ssname ss 0) sad)
(ssadd (entlast) sad)
)
)
(setvar 'osmode os)
(if (and (setq pt (getpoint "\nSpecify point on line: "))
(setq ss (ssget pt '((0 . "LINE"))))
)
;; BLAH BLAH
)
不会,因为entsel返回的点只是选择时的十字线位置,而实体可以使用拾取框孔径的任何部分进行选择-如文档中所述:
因此,正如Alan所说,拾取点没有精确性,这是在选择时光标位于何处的彩票。 我现在明白了阿兰指的是什么,现在清楚了。
谢谢大家
页:
[1]
2